有关lnmp服务器环境的配置方法,超详细的lnmp服务器配置教程,不要错过。
一、什么是nginx? 在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。
Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻、腾讯网、搜狐博客等门户网站频道,六间房、56.com等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,盛大在线、金山逍遥网等网络游戏网站,豆瓣、人人网、YUPOO相册、金山爱词霸、迅雷在线等新兴Web 2.0网站。
处理大量的连接的读写,Apache所采用的select网络I/O模型非常低效。下面用一个比喻来解析Apache采用的select模型和Nginx采用的epoll模型进行之间的区别:
二、系统环境
三、安装准备
2、RPM包搜索网站
3、nginx软件包准备
四、安装PHP 5.2.10(FastCGI模式)
1.安装libiconv
复制代码代码示例:
#tar zxvf libiconv-1.13.tar.gz
#cd libiconv-1.13/ #./configure --prefix=/usr/local #make #make install cd ../
2.安装libmcrypt 实现加密功能的库。
复制代码代码示例:
# tar zxvf libmcrypt-2.5.8.tar.gz
# cd libmcrypt-2.5.8/ # ./configure # make # make install # /sbin/ldconfig # 注:这里不要退出去了。 # cd libltdl/ # ./configure --enable-ltdl-install # make # make install # cd http://www.cnblogs.com/
3. 安装mhash(哈稀函数库)
复制代码代码示例:
# tar zxvf mhash-0.9.9.9.tar.gz
# cd mhash-0.9.9.9/ # ./configure # make # make install # cd ../ ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4 ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8 ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2 ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
4. 安装mcrypt
复制代码代码示例:
# tar zxvf mcrypt-2.6.8.tar.gz
# cd mcrypt-2.6.8/ # /sbin/ldconfig #./configure # make # make install # cd ../ 注:DG库所需要安装包,可以采用rpm包来安装,减少时间,由于php已经集成GD库,但前提支持包应事先安装,如zlib,png,jpeg,freetype等。如果完全想采用tar包安装的话,请参考lamp相关内容。
五、编译安装MySQL
复制代码代码示例:
# groupadd mysql
# useradd mysql -g mysql [root@linux lnmp]# tar zxvf mysql-5.1.35.tar.gz [root@linux lnmp]# cd mysql-5.1.35 # ./configure --prefix=/usr/local/mysql --without-debug --with-extra-charsets=gbk --with-extra-charsets=all --enable-assembler --with-pthread --enable-thread-safe-client --with-mysqld-ldflags=-all-static /*不带共享库的形式编译mysqld*/ --with-client-ldflags=-all-static --with-big-tables --with-readline /*要采用rpm方式安装ncurses或tar包安装*/ --with-ssl /*要采用rpm方式安装openssl*/ --with-embedded-server --enable-local-infile --with-plugins=innobase # make && make install # /usr/local/mysql/bin/mysql_install_db --user=mysql #以mysql身份初始化数据库 # cp ./support-files/mysql.server /etc/init.d/mysql #复制Mysql启动服务至系统 # cp ./support-files/my-medium.cnf /etc/my.cnf # chmod 755 /etc/init.d/mysql # cd /usr/local/mysql/ #切换到cd /usr/local/mysql/目录下 # chown -R mysql . #改变当前目录下的所有者为mysql用户 # chown -R mysql var #修改数据库目录的权限 # chgrp -R mysql . #改变当前目录下的mysql用户的文件为mysql组 # /usr/local/mysql/bin/mysqld_safe --user=mysql& # /usr/local/mysql/bin/mysqladmin -u root password 'admin' #设置管理员密码 [root@linux html]# /usr/local/mysql/bin/mysql -u root -p #测试密码输入 Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.1.35-log Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> \q /*退出mysql*/ # chkconfig --add mysql #添加mysqld服务到系统 # chkconfig mysql on #打开myslqd服务 # service mysql start #启动Mysql #/usr/local/mysql/bin/mysqladmin shutdown #关闭数据库 #查看mysql端口的打开情况 # netstat -tunlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/P name tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2936/ #查看是否启动: #ps -ef | grep mysql
注:在配置过程中,整体的配置思路从上往下,其中的一些功能可以用在实际的配置过程中,主要用于测试环节中。
复制代码代码示例:
# tar zxvf php-5.2.10.tar.gz
# gzip -cd php-5.2.10-fpm-0.5.11.diff.gz | patch -d php-5.2.10 -p1 # 将php-5.2.10-fpm-0.5.11.diff.gz以补丁形式加到php-5.2.10里面 # cd php-5.2.10/ # ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-gd --enable-gd-native-ttf --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --without-pear
注:Nginx+PHP整合,在安装时必须启用-–enable-fastcgi和--enable-fpm,这两个选项是做什么的上面已经描述。执行完后系统会提示-–enable-fastcgi是一个未知选项,我们不必理会。
复制代码代码示例:
#注:make的时候一定要加上后面的参数,才能成功。
# make ZEND_EXTRA_LIBS='-liconv' # make install # cp php.ini-dist /usr/local/php/etc/php.ini # cd ../
注:
七、编译安装PHP5扩展模块
复制代码代码示例:
# tar zxvf memcache-2.2.5.tgz
# cd memcache-2.2.5/ # /usr/local/php/bin/phpize # ./configure --with-php-config=/usr/local/php/bin/php-config # make # make install # 说明:memcache库的位置 Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/ # cd ..
2.安装eaccelerator php加速
复制代码代码示例:
# tar jxvf eaccelerator-0.9.5.3.tar.bz2
# cd eaccelerator-0.9.5.3/ # /usr/local/php/bin/phpize # ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config # make # make install Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/ # cd ../
3.安装PDO_MYSQL(数据库连接的支持)
复制代码代码示例:
# tar zxvf PDO_MYSQL-1.0.2.tgz
# cd PDO_MYSQL-1.0.2/ # /usr/local/php/bin/phpize #./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql # make # make install Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/ # cd ../
4.安装ImageMagick是Linux下非常强大的图象处理函数与GD类似.
复制代码代码示例:
# tar zxvf ImageMagick.tar.gz
# cd ImageMagick-6.5.1-2/ #./configure # make # make install # cd ../
5.安装imagick(连接PHP和ImageMagick的通道)
复制代码代码示例:
# tar zxvf imagick-2.2.2.tgz
# cd imagick-2.2.2/ # /usr/local/php/bin/phpize # ./configure --with-php-config=/usr/local/php/bin/php-config # make # make install Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/ # cd ../
6.修改php.ini文件,已使php支持扩展的功能
查找
extension_dir = "./" 修改为 extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/" 并在此行后增加以下几行,然后保存: extension = "memcache.so" extension = "pdo_mysql.so" extension = "imagick.so" 再查找output_buffering = Off 修改为output_buffering = On
7.配置eAccelerator加速PHP:
mkdir -p /usr/local/eaccelerator_cache
vi /usr/local/php/etc/php.ini #到配置文件的最末尾,粘上以下内容: [eaccelerator] zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so" eaccelerator.shm_size="64" eaccelerator.cache_dir="/usr/local/eaccelerator_cache" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="3600" eaccelerator.shm_prune_period="3600" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9"
八、PHP-fpm配置
<value name="display_errors">0</value>改为
<value name="display_errors">1</value>,以便显示PHP错误信息,否则,Nginx 会报状态为500的空白错误页。
说明:创建www用户与组,这里创建了下面就不用创建了。
复制代码代码示例:
#/usr/sbin/groupadd www -g 48
#/usr/sbin/useradd -u 48 -g www www rm -f /usr/local/php/etc/php-fpm.conf vi /usr/local/php/etc/php-fpm.conf ############################### #输入或者是修改为以下内容: ############################### <?xml version="1.0" ?> <configuration> <section name="global_options"> <value name="pid_file">/usr/local/php/logs/php-fpm.pid</value> <value name="error_log">/usr/local/php/logs/php-fpm.log</value> <value name="log_level">notice</value> <value name="emergency_restart_threshold">10</value> <value name="emergency_restart_interval">1m</value> <value name="process_control_timeout">5s</value> <value name="daemonize">yes</value> </section> <workers> <section name="pool"> <value name="name">default</value> <value name="listen_address">127.0.0.1:9000</value> <value name="listen_options"> <value name="backlog">-1</value> <value name="owner"></value> <value name="group"></value> <value name="mode">0666</value> </value> <value name="php_defines"> <value name="sendmail_path">/usr/sbin/sendmail -t -i</value> <value name="display_errors">1</value> </value> <value name="user">www</value> <value name="group">www</value> <value name="pm"> <value name="style">static</value> <value name="max_children">128</value> <value name="apache_like"> <value name="StartServers">20</value> <value name="MinSpareServers">5</value> <value name="MaxSpareServers">35</value> </value> </value> <value name="request_terminate_timeout">0s</value> <value name="request_slowlog_timeout">0s</value> <value name="slowlog">logs/slow.log</value> <value name="rlimit_files">51200</value> <value name="rlimit_core">0</value> <value name="chroot"></value> <value name="chdir"></value> <value name="catch_workers_output">yes</value> <value name="max_requests">500</value> <value name="allowed_clients">127.0.0.1</value> <value name="environment"> <value name="HOSTNAME">$HOSTNAME</value> <value name="PATH">/usr/local/bin:/usr/bin:/bin</value> <value name="TMP">/tmp</value> <value name="TMPDIR">/tmp</value> <value name="TEMP">/tmp</value> <value name="OSTYPE">$OSTYPE</value> <value name="MACHTYPE">$MACHTYPE</value> <value name="MALLOC_CHECK_">2</value> </value> </section> </workers> </configuration>
2.php-fpm启动与管理
|