LNMP搭建
Linux + Nginx(FastCGI) + PHP(php-fpm) + MySQL
php安装在mysql后
mysql安装:略(同LAMP)
注:
1.nginx没有apache的apachectl工具,需要写一个
2.LNMP需要开启php服务
3.nginx本身不能解析php,它只是一个简单的web服务软件,但nginx有一个很好的功能就是可以作为代理服务器,而php-fpm是可以解析php的,所以只要nginx代理一下php-fpm就可以解析php啦,nginx和php是单独跑的。
4.mysql、php各需要一个用户来监听
php安装
5.4是企业常用版本
1.下载php到/usr/local/src/:
wget http://cn2.php.net/get/php-5.4.45.tar.bz2/from/this/mirror
2.解压:
tar jxvf php-5.4.45.tar.bz2
cd php-5.4.45
安装库
yum install -y libxml2-devel; yum install -y libjpeg libjpeg-devel; yum install -y libpng libpng-devel; yum install -y freetype freetype-devel; yum install -y bzip2 bzip2-devel; yum install -y openssl openssl-devel; rpm -ivh "http://www.aminglinux.com/bbs/data/attachment/forum/month_1211/epel-release-6-7.noarch.rpm"; yum install -y libmcrypt-devel yum install -y pcre-devel
创建账号
useradd -s /sbin/nologin php-fpm
配置编译参数
cd /usr/local/src/php-5.4.45
./configure \ --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/etc \ --enable-fpm\ --with-fpm-user=php-fpm\ --with-fpm-group=php-fpm\ --with-mysql=/usr/local/mysql\ --with-mysql-sock=/tmp/mysql.sock \ --with-libxml-dir \ --with-gd \ --with-jpeg-dir \ --with-png-dir \--with-freetype-dir \ --with-iconv-dir \ --with-zlib-dir \ --with-mcrypt \ --enable-soap \ --enable-gd-native-ttf \ --enable-ftp\ --enable-mbstring \ --enable-exif \ --disable-ipv6
make
make install
修改配置文件
cp php.ini-production /usr/local/php/etc/php.ini
拷贝启动脚本:
cp /usr/local/src/php-5.4.45/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
编辑php-fpm.conf文件,在其中添加下面一段配置:
[www] listen = /tmp/php-fcgi.sock #名字可以自定义 user = php-fpm group =php-fpm pm = dynamic #动态的管理下面的内容 pm.max_childre = 50 #子进程最大有50个 pm.start_servers = 20 #最开始启动20个 pm.min_spare_servers = 5 #空闲的时候最小不能低于5个 pm.max_spare_servers = 35 # 最多的时候不能多与35个子进程 pm.max_requests = 500 #一个子进程在一个生命周期内处理多少个请求然后销毁 rlimit_files = 1024 # 每个进程使用的文件描述符的限制(可调大一点) listen.mode = 777
启动php-fpm
chmod 755 /etc/init.d/php-fpm
chkconfig --add php-fpm;chkconfig php-fpm on
service php-fpm start
检测是否启动:
ps aux |grep php-fpm
nginx安装:
官网:nginx.org
下载nginx
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.6.2.tar.gz
解压nginx
tar zxvf nginx-1.6.2.tar.gz
配置编译参数
cd nginx-1.6.2
./configure \ --prefix=/usr/local/nginx \ --with-http_realip_module \ --with-http_sub_module \ --with-http_gzip_static_module \ --with-http_stub_status_module \ --with-pcre
make
make install
把/usr/local/nginx/sbin加入系统路径
启动nginx:
nginx
停止nginx:
nginx -s stop
重载:nginx -s reload
编写nginx启动脚本,并加入系统服务
这样在控制台就很容易的操作nginx了:查看Nginx当前状态、启动Nginx、停止Nginx、重启Nginx…
vim /etc/init.d/nginx
#!/bin/bash # chkconfig: - 30 21 # description: http service. # Source Function Library . /etc/init.d/functions # Nginx Settings NGINX_SBIN="/usr/local/nginx/sbin/nginx" NGINX_CONF="/usr/local/nginx/conf/nginx.conf" NGINX_PID="/usr/local/nginx/logs/nginx.pid" RETVAL=0 prog="Nginx" start() { echo -n $"Starting $prog: " mkdir -p /dev/shm/nginx_temp daemon $NGINX_SBIN -c $NGINX_CONF RETVAL=$? echo return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc -p $NGINX_PID $NGINX_SBIN -TERM rm -rf /dev/shm/nginx_temp RETVAL=$? echo return $RETVAL } reload(){ echo -n $"Reloading $prog: " killproc -p $NGINX_PID $NGINX_SBIN -HUP RETVAL=$? echo return $RETVAL } restart(){ stop start } configtest(){ $NGINX_SBIN -c $NGINX_CONF -t return 0 } case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) restart ;; configtest) configtest ;; *) echo $"Usage: $0 {start|stop|reload|restart|configtest}" RETVAL=1 esac exit $RETVAL
chmod 755 /etc/init.d/nginx
chkconfig --add nginx
开机启动
chkconfig nginx on
nginx结合php
:解析php
> /usr/local/nginx/conf/nginx.conf #建议先备份
vim /usr/local/nginx/conf/nginx.conf
user nobody nobody; worker_processes 2; error_log /usr/local/nginx/logs/nginx_error.log crit; pid /usr/local/nginx/logs/nginx.pid; worker_rlimit_nofile 51200; events { use epoll; worker_connections 6000; } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 3526; server_names_hash_max_size 4096; log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]' '$host "$request_uri" $status' '"$http_referer" "$http_user_agent"'; sendfile on; tcp_nopush on; keepalive_timeout 30; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; connection_pool_size 256; client_header_buffer_size 1k; large_client_header_buffers 8 4k; request_pool_size 4k; output_buffers 4 32k; postpone_output 1460; client_max_body_size 10m; client_body_buffer_size 256k; client_body_temp_path /usr/local/nginx/client_body_temp; proxy_temp_path /usr/local/nginx/proxy_temp; fastcgi_temp_path /usr/local/nginx/fastcgi_temp; fastcgi_intercept_errors on; tcp_nodelay on; gzip on; gzip_min_length 1k; gzip_buffers 4 8k; gzip_comp_level 5; gzip_http_version 1.1; gzip_types text/plain application/x-javascript text/css text/htm application/xml; server { listen 80; server_name localhost; index index.html index.htm index.php; root /usr/local/nginx/html; location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/tmp/php-fcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; } } }
/usr/local/nginx/sbin/nginx -t
service nginx start