[教程]CentOS平台安装lemp

教程最新版本为:Centos下安装lnmp教程(最新版2012-02-05)http://blog.haohtml.com/archives/12473

点击下载本教程使用的批处理shell安装脚本:webserver_install.sh.本shell脚本不适合x64的系统.有些库文件需要从/usr/lib64/目录里的文件复制到/usr/lib/目录才可以.
本教程已经在Centos5.5, Centos6.0下测试通过.测试:2011-07-12
Centos6.0下需要注意事项:
1.对于ImageMagick,要使用 ftp://mirror.aarnet.edu.au/pub/imagemagick/ImageMagick-6.7.1-0.tar.gz 版本.
2.对于imagick,要使用wget http://pecl.php.net/get/imagick-3.0.1.tgz 版本
这里是以php-fpm这个php补丁的形式运行php的.
第一步,准备
yum -y install wget make zip unzip
yum -y install patch
//php启用fpm支持,需要打fpm这个补丁才可以的,所以需要先把patch命令安装上。
加快安装速度,这里我们使用sohu的镜像yum源的。
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.bak
wget -O CentOS-Base.repo http://mirrors.sohu.com/help/CentOS-Base-sohu.repo
vi CentOS-Base.repo
将所有mirrorlist行注释掉,在行首添加#符号即可.有关更多镜像站点,请参考:http://blog.haohtml.com/index.php/archives/5669
如果要使用本地的DVD光盘作为yum源的话,请参考:http://blog.haohtml.com/archives/5742
=========================================================
第二步 利用CentOS Linux系统自带的yum命令安装、升级所需的程序库
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
===================================
第三步 下载所需软件到/usr/src
cd /usr/src
wget http://blog.s135.com/soft/linux/nginx_php/php/php-5.2.14.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.14-fpm-0.5.14.diff.gz
wget http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.5.3-m3.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-8.10.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.8.46.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/libiconv/libiconv-1.13.1.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gz
//wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/mcrypt-2.6.8.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/mhash/mhash-0.9.9.9.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.5.tgz
wget http://blog.s135.com/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.6.1.tar.bz2
wget http://blog.s135.com/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgz
wget http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/imagick/imagick-2.3.0.tgz
或者采用以下下载源,许多都是找的官方的最新版本的.注意文件名和解压后的目录名,在后面的过程中都需要修改的
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
wget http://nginx.org/download/nginx-1.1.1.tar.gz
wget http://cn.php.net/distributions/php-5.2.17.tar.gz
wget http://php-fpm.org/downloads/php-5.2.17-fpm-0.5.14.diff.gz
wget http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.5.3-m3.tar.gz
wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.12.tar.gz
wget http://cdnetworks-kr-2.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
wget "http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&big_mirror=0"
wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2
wget http://pecl.php.net/get/memcache-2.2.5.tgz
wget ftp://mirror.aarnet.edu.au/pub/imagemagick/ImageMagick-6.7.1-0.tar.gz
wget http://pecl.php.net/get/imagick-2.3.0.tgz
//wget http://pecl.php.net/get/imagick-3.0.1.tgz 最新的版本在Centos5下可能有问题,提示无法加载imagick.so库文件,在Centos6.0下正常.
=================================
第四步 安装mysql(安装目录为/usr/local/mysql)
创建mysql服务进程的用户名和组
/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql
tar zxvf mysql-5.5.3-m3.tar.gz
cd mysql-5.5.3-m3/
./configure --prefix=/usr/local/mysql/ --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=partition,innobase,myisammrg

make && make install

chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
初始化表,如果要手动指定mysql的数据保存位置,可以用  --datadir=/data/mysql/data 这个参数,此时后面启动的时候也需要指定这个参数的,且目录还要一致
/usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql --user=mysql
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
/usr/local/mysql/bin/mysqld_safe &
注:在configure的时候,到最后时候会出现这个错误的.
config.status: executing libtool commands
/bin/rm: cannot remove `libtoolT': No such file or directory
config.status: executing default commands
这里没有理会.
//修改数据库root用户密码
/usr/local/mysql/bin/mysqladmin -u root password '123456'
/usr/local/mysql/bin/mysql -u root -p
然后输入root用户的密码,这里是123456,回车,这时进入mysql提示符下,说明mysql安装成功了,用exit退出mysql.
mysql>

为了在下次重启服务器的时候可以自动重启相关服务,需要将MySQL加入到系统服务里面,这样就可以用service mysqld start|stop|restart进行操作

cp  /usr/local/mysql/share/mysql/mysql.server      /etc/init.d/mysqld

#把msql的脚本文件拷到系统的启动目录下

cd /etc/init.d/

chkconfig --add mysqld                                #将mysql加到启动服务列表里
chkconfig mysqld on                                    #让系统启动时自动打开mysql服务,如果指定级别,用--level参数

这里为了以后维护的时候,不用输入完整的路径,做了软链接

ln -s /usr/local/mysql/bin/mysqldump /usr/sbin/mysqldump
ln -s /usr/local/mysql/bin/mysqld_safe /usr/sbin/mysqld_safe
ln -s /usr/local/mysql/bin/mysqlslap /usr/sbin/mysqlslap
ln -s /usr/local/mysql/bin/mysql /usr/sbin/mysql
ln -s /usr/local/mysql/bin/mysqladmin /usr/sbin/mysqladmin

 

=======================================

第五步 安装php(FastCGI模式)
首先安装iconv,否则安装php的时候会提示这个错误
tar zxvf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1/
./configure --prefix=/usr/local
make
make install
cd ../
如果在make install的时候,提示以下错误(http://blog.haohtml.com/archives/9000):
error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
make[1]: *** [install-pear-installer] 错误 127
make: *** [install-pear] Error 2
需要指定一下链接动态库的路径,执行以下命令,再执行make install即可.(http://blog.haohtml.com/archives/9211)

1.在/etc/ld.so.conf中加一行/usr/local/lib,

2.然后运行/sbin/ldconfig,文件解决,没有报错了~~
#########################################
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 ../../

#########################################

tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./configure
make
make install
cd ../

由于前面已经安装好了php所需的一些类库,所以这里安装方便的多了,记得这里是要打php-fpm补丁的.要先安装 patch 这个包(yum -y install patch)
cd /usr/src
tar zxvf php-5.2.14.tar.gz
gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1
cd php-5.2.14/
./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-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-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap
make ZEND_EXTRA_LIBS='-liconv'
make install
cp php.ini-dist /usr/local/php/etc/php.ini
cd ../
上面make ZEND_EXTRA_LIBS='-liconv'是为了解决Fastcgi模式编译时iconv模块出错.
如果在安装的过程中提示"configure: error: mcrypt.h not found. Please reinstall libmcrypt",请参考:http://blog.haohtml.com/archives/9592
=============================================
第六步 安装php扩展
如果需要更多的功能,可以安装一下几个软件
cd /usr/src
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

cd ../

########################################

tar jxvf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1/
/usr/local/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
make
make install

cd ../

########################################

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

cd ../

########################################

tar zxvf ImageMagick.tar.gz
cd ImageMagick-6.5.1-2/
./configure
make
make install

cd ../

########################################

tar zxvf imagick-2.3.0.tgz
cd imagick-2.3.0/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
cd ../
修改php.ini文件
手工修改:查找/usr/local/php/etc/php.ini中的extension_dir = "./"
#vi /usr/local/php/etc/php.ini
修改为
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.
为了安装起见,隐藏http头信息里的php信息,查找 expose_php = on 修改为 expose_php = off
再查找; cgi.fix_pathinfo=0,把前面的;注释符号删除,改为 cgi.fix_pathinfo=0,预防方法:防止Nginx文件类型错误解析漏洞
配置eAccelerator加速PHP:
#mkdir -p /usr/local/eaccelerator_cache
#vi /usr/local/php/etc/php.ini
按shift+g键跳到配置文件的最末尾,加上以下配置信息
[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"
如果要安装ZendOptimizer的话,参考:http://blog.haohtml.com/archives/9180
//创建www用户,php-fpm和nginx统一使用这个
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www
vi /usr/local/php/etc/php-fpm.conf
取消以下两行的注释,并将服务用户名和用户所在组(nobody),修改为www
<value name="user">nobody</value>
<value name="group">nobody</value>
启用php-fpm
/usr/local/php/sbin/php-fpm start
注意:如果在启用php-fpm的时候,提示"Starting php_fpm eAccelerator: Could not allocate 67108864 bytes, the maximum size the kernel allows is 33554432 bytes. Lower the amount of memory..."之类的错误,请参考:http://blog.haohtml.com/archives/10365
对于php安全设置请参考:http://blog.haohtml.com/archives/3114
======================================
第七步 安装NGINX
#安装正则表达式库,支持rewite
tar zxvf pcre-8.10.tar.gz
cd pcre-8.10/
./configure
make && make install

cd ../

########################################

tar zxvf nginx-0.8.46.tar.gz
cd nginx-0.8.46/
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
cd ../
注意:如果您要安装第三方Nginx模块的话,请参考:http://blog.haohtml.com/archives/12349
修改 /usr/local/nginx/conf/nginx.conf,删除user nobody;行前面的注释,并修改为 user www www;
将以下几行前面的注释删除,将修改fastcgi_param后面的路径
location ~ \.php$ {
root           html;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
include        fastcgi_params;
}
测试nginx.conf配置文件
/usr/local/nginx/sbin/nginx -t
启用nginx
/usr/local/nginx/sbin/nginx
第八步 结尾工作
vi /etc/rc.local
按shift+g快捷键,在末尾增加以下内容:
ulimit -SHn 65535
/usr/local/php/sbin/php-fpm start
/usr/local/nginx/sbin/nginx
测试是否支持php
vi /usr/local/nginx/html/phpinfo.php
输入内容 <?php phpinfo(); ?>
浏览http://ip/phpinfo.php,可以看到php的相关信息,可以查看扩展是否支持.
以上使用的是nginx的默认配置,为了充分发挥nginx的性能,实际生产过程中,我们还需要对nginx进行一些配置优化,请参考:Nginx优化配置(转)

使用技巧:

在不停止Nginx服务的情况下平滑变更Nginx配置
1、修改/usr/local/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:
/usr/local/nginx/sbin/nginx -t
如果屏幕显示以下两行信息,说明配置文件正确:
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully
2、平滑重启:
①、对于Nginx 0.8.x版本,现在平滑重启Nginx配置非常简单,执行以下命令即可:
/usr/local/nginx/sbin/nginx -s reload
②、对于Nginx 0.8.x之前的版本,平滑重启稍微麻烦一些,按照以下步骤进行即可。输入以下命令查看Nginx主进程号:
ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'
屏幕显示的即为Nginx主进程号,例如:
6302
这时,执行以下命令即可使修改过的Nginx配置文件生效:
kill -HUP 6302
或者无需这么麻烦,找到Nginx的Pid文件:
kill -HUP `cat /usr/local/nginx/nginx.pid`
检查ImageMagick安装是否成功,也可以用以下命令查看
convert -version
php里的时间有相关八小时的问题,解决办法为修改/usr/local/php/etc/php.ini里的date.timezone:
date.timezone = PRC
到此为止.基本上web环境已经配置完成了.为了方便用户可以通过ftp软件上传程序文件,下面我们接着安装vsftpdl软件CentOS下安装 vsftpd 虚拟用户设置教程
======================================
相关文章:

注意:

如果用的是64位的系统.在安装过程中会出现一些找不到libjpeg之类的错误.原因是由于configure一般的搜索编译路径为/usr/lib/下,因为php默认就在/usr/lib/下找相关库文件,而x64机器上是在:/usr/lib64.这时你就可以直接把需要的库文件从/usr/lib64中拷贝到/usr/lib/中去就可以了.

参考李宴的Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]而整理的.