系统:CentOS 5.2 Nginx:0.9.5 php:5.3.5 MySQL:5.1.30 这时再一个网友博客的基础上,结合我自己实践,得出来的,花了好多时间。 可能有人要问,为什么不采用现在最流行的lamp环境呢,web服务不能用apache么?为什么非要用nginx呢? 这里需要说一下,Nginx 是一个轻量级的高性能 Http WebServer,以事件驱动方式编写,因此相比 Apache 而言,Nginx 更加稳定、性能更好,资源占用较低。相对于apache来说,可以承载的了更大的并发 现在有很多大型门户的web服务器已经放弃了lamp而使用lnmp 所以,本身nginx和php两个一点都不认识的,所以安装起来要比lamp麻烦的多 一、安装前准备: 准备好程序安装所需的开发包,这里就通过yum去装了,也为了省事。 [plain] view plain copy 01. yum -y install ntp vim-enhanced gcc gcc-c++gcc-g77 flex bison autoconf automake bzip2-devel \ 02.ncurses-devel openssl-devel libtool*zlib-devel libxml2-devel libjpeg-devel libpng-devel libtiff-devel \ 03.fontconfig-devel freetype-devel libXpm-develgettext-devel curl curl-devel pam-devel \ 04.e2fsprogs-devel krb5-devel libidn libidn-devel 05. 06. 一、Nginx的安装: 1. pcre-8.00.tar.gz 01.tar zxvf pcre-8.00.tar.gz 02. 03. cd pcre-8.00.tar.gz 04. 05. ./configure && make && makeinstall 2. nginx-0.9.5.tar.gz 01../configure --user=www --group=www --prefix=/usr/local/nginx/--with-http_stub_status_module --with-http_ssl_module--with-md5=/usr/lib --with-sha1=/usr/lib--with-openssl=/usr/lib #此次手记中,所有的安装目录我都放在/usr/local/ 各位可以自己修改 01.make 02. 03.make install 3.接下来安装GD和相关的lib包 以下是需要用的源码包,可以从网上下到。 01.jxvf gd-2.0.35.tar.bz2 02. 03.libiconv-1.12.tar.gz 04.libmcrypt-2.5.8.tar.bz2 开始安装 tar jxvf gd-2.0.35.tar.bz2 cd gd-2.0.35 ./configure --prefix=/usr/local/gd2 make make install mhash-0.9.9.tar.gz tar -zxvf mhash-0.9.9.tar.gz cd mhash-0.9.9 ./configure --prefix=/usr && make&& make install libiconv-1.12.tar.gz tar zxvf libiconv-1.12.tar.gz cd libiconv-1.12 ./configure --prefix=/usr && make&& make install libmcrypt-2.5.8.tar.bz2 tar jxvf libmcrypt-2.5.8.tar.bz2 cd libmcrypt-2.5.8 ./configure --prefix=/usr && make&& make install vim /etc/ld.so.conf 添加: /usr/lib include ld.so.conf.d/*.conf /usr/lib #如果已有就不用添加。 启动nginx: /usr/local/nginx/sbin/nginx start 查看一下80端口是否启来 netstat -antpl 二、MySQL的安装: tar zxvf mysql-5.1.30.tar.gz cd mysql-5.1.30 ./configure \ "--prefix=/usr/local/mysql" \ "--localstatedir=/data/mysql/data" \ "--with-comment=Source" \ "--with-server-suffix=-Linuxtone.Org" \ "--with-mysqld-user=mysql" \ "--without-debug" \ "--with-big-tables" \ "--with-charset=utf8" \ "--with-collation=utf8_chinese_ci" \ "--with-extra-charsets=all" \ "--with-pthread" \ "--enable-static" \ "--enable-thread-safe-client" \ "--with-client-ldflags=-all-static" \ "--with-mysqld-ldflags=-all-static" \ "--enable-assembler" \ "--with-plugins=all" \ "--without-ndb-debug" make make install useradd mysql -d /data/mysql -s/sbin/nologin #创建mysql用户 /usr/local/mysql/bin/mysql_install_db--user=mysql #安装默认数据库 cd /usr/local/mysql 以下是权限的设定: chown -R root:mysql . mkdir -p /data/mysql/data chown -R mysql /data/mysql/data cp share/mysql/my-huge.cnf /etc/my.cnf #复制mysql配置文件 cp share/mysql/mysql.server/etc/rc.d/init.d/mysqld #复制mysql启动文件 chmod 755 /etc/rc.d/init.d/mysqld chkconfig --add mysqld #添加mysql随系统启动 /etc/rc.d/init.d/mysqld start #启动mysql /usr/local/mysql/bin/mysql -u root -p #进入mysql 默认密码为空 没问题后quit退出 下面进行最关键的一部 安装php 三、php的安装: php和nginx的整合是通过php-FastCGI FastCGI 是一个可伸缩、高速的在web server和脚本语言间通迅的接口。被许多脚本语言所支持,包括 php 多数流行的web server都支持 FastCGI。 正常情况下,nginx和php直接是完全不认识的,我们就是通过php-fastcgi将二者整合。 php5.3.0之前的版本,php-FastCGI 是需要单独安装的。但是在这之后,php-FastCGI 就整合在了php的源码包中,不必再去单独安装。在这里我用的就是php5.3.5的版本,内置了php-fpm ,编译时开启,并且编译后不存在 php-cgi 文件了 下面开始安装。 php-5.3.5.tar.gz tar zxvf php-5.3.5.tar.gz cd php-5.3.5 先执行./buildconf --force 如果报错,可能是你的 autoconf不是 2.13 版本的,PHP5.3.5的bug,需要安装 autoconf为2.13不版本: yum -y install autoconf2.13 如果不行:试试yum -y install libtool libtool-libs kernel-devel autoconf213 安装完成后再设置一下环境变量:export PHP_AUTOCONF="/usr/bin/autoconf-2.13" 再次运行:./buildconf --force ,出现 Forcing buildconf ,则运行成功。 接着我们再继续编译 ./configure '--prefix=/usr/local/php' '--enable-fastcgi' '--enable-fpm' '--enable-discard-path' '--enable-force-cgi-redirect' '--with-config-file-path=/usr/local/php/etc' '--enable-zend-multibyte' '--with-mysql=/usr/local/mysql' '--with-libxml-dir' '--with-xmlrpc' '--with-gd=/usr/local/gd2' '--with-jpeg-dir' '--with-png-dir' '--with-bz2' '--with-freetype-dir' '--with-iconv-dir' '--with-zlib-dir' '--with-curl' '--with-curlwrappers' '--with-openssl' '--with-mcrypt' '--with-mhash' '--enable-pcntl' '--enable-sockets' '--enable-sysvsem' '--enable-inline-optimization' '--enable-soap' '--enable-gd-native-ttf' '--enable-ftp' '--enable-mbstring' '--enable-exif' '--disable-debug' '--disable-ipv6' make ZEND_EXTRA_LIBS='-liconv' 完美make成功 别忘了在再make test一下 呵呵 最后 make install 安装成功。。。 安装完成之后,复制php.ini-production 到安装目录下的etc/目录下 cp php.ini-production /usr/local/php/etc/ cd /usr/local/php/etc/ # 切换到安装目录下的配置文件目录 cp php-fpm.conf.default php-fpm.conf 修改php-fpm.conf 启用如下几行,即去掉前面的分号(;) pid = run/php-fpm.pid error_log = log/php-fpm.log log_level = notice listen = 127.0.0.1:9000 listen.allowed_clients = 127.0.0.1 pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 500 env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp wq保存退出 最后去/etc/init.d下 看是否有php-fpm这个启动脚本 如果有, 删除了 重新写一个 如果没有 直接写一个就行 vim /etc/init.d/php-fpm 内容如下: #! /bin/sh ### BEGIN INIT INFO # Provides: php-fpm # Required-Start: $remote_fs $network # Required-Stop: $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts php-fpm # Description: starts the PHP FastCGI Process Manager daemon ### END INIT INFO prefix=/usr/local/php exec_prefix=${prefix} php_fpm_BIN=${exec_prefix}/sbin/php-fpm php_fpm_CONF=${prefix}/etc/php-fpm.conf php_fpm_PID=${prefix}/var/run/php-fpm.pid php_opts="--fpm-config $php_fpm_CONF" wait_for_pid () { try=0 while test $try -lt 35 ; do case "$1" in 'created') if [ -f "$2" ] ; then try='' break fi ;; 'removed') if [ ! -f "$2" ] ; then try='' break fi ;; esac echo -n . try=`expr $try + 1` sleep 1 done } case "$1" in start) echo -n "Starting php-fpm " $php_fpm_BIN $php_opts if [ "$?" != 0 ] ; then echo " failed" exit 1 fi wait_for_pid created $php_fpm_PID if [ -n "$try" ] ; then echo " failed" exit 1 else echo " done" fi ;; stop) echo -n "Gracefully shutting down php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -QUIT `cat $php_fpm_PID` wait_for_pid removed $php_fpm_PID if [ -n "$try" ] ; then echo " failed. Use force-exit" exit 1 else echo " done" fi ;; force-quit) echo -n "Terminating php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -TERM `cat $php_fpm_PID` wait_for_pid removed $php_fpm_PID if [ -n "$try" ] ; then echo " failed" exit 1 else echo " done" fi ;; restart) $0 stop $0 start ;; reload) echo -n "Reload service php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -USR2 `cat $php_fpm_PID` echo " done" ;; *) echo "Usage: $0 {start|stop|force-quit|restart|reload}" exit 1 ;; esac 启动 php-fpm /etc/init.d/php-fpm start 如果无法执行,可能是由于权限的问题 给个777权限即可 chmod -R 777 /etc/init.d/php-fpm 完了再启动 启动过后,用netstat -antpl 看下端口 可以看到9000端口已经启动 最后 需要更改一下nginx的配置文件 vim /usr/local/nginx/conf/nginx.conf 去掉下面语句前的注释 error_log /var/log/nginx/error.default.log; #开启错误日志 pid /usr/local/webserver/nginx/nginx.pid; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ .*\.(php|php5)?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } 保存退出后 重启nginx netstat -antpl 看一下nginx的pid kill -9 pid的号码 kill掉第一个以后 再 netstat -antpl 会有一个nginx-worker进程 直接kill掉 再启动nginx cd /usr/local/nginx/sbin ./nginx 再看下80端口有没有启来 到这里 整个LNMP的配置就结束了 测试一下吧 ^_^ 可以写一个php文件放在/usr/local/nginx/html 就随便写个查看php信息的文件吧 cd /usr/local/nginx/html vim phpinfo.php <?php phpinfo(); ?> 打开浏览器 http://主机地址/phpinfo.php 如果出来了php的信息页面 恭喜你 配置成功啦 (责任编辑:IT) |