方法摘自:http://blog.bbkanba.com/mysql-nginx-php-linux-wordpress/(有修正)
原链接说的是Mysql(5.5.*)+Nginx(1.2.*)+PHP(5.3.*)+Linux_CentOS6.3(X86_64),我自己把PHP替换成5.4.*、Nginx替换成1.4.*,方法一样,这里说说存在的问题和我的修改。
1.我是在CentOS的VPS上安装的,目录有些不一样:
export TEMP_DIR_PACKAGES=~/packages
export TEMP_DIR_WEBSERVERS=/usr/local
把webservers.conf改名成mysql.conf
2. 在正式安装之前先更新一下系统:
yum -y install yum-fastestmirror
yum -y update
yum -y install vim-enhanced
yum -y install zip
3. 我安装的时候5.3的小版本升到31了,作者的原链接不可用,自己整了几个:
#wget http://mysql.ntu.edu.tw/Downloads/MySQL-5.5/mysql-5.5.31.tar.gz
#wget ftp://mirror.switch.ch/mirror/mysql/Downloads/MySQL-5.5/mysql-5.5.31.tar.gz
wget http://download.softagency.net/MySQL/Downloads/MySQL-5.5/mysql-5.5.31.tar.gz
4. 安装mysql数据库时要带上datadir参数,不然启动服务失败,开始以为是权限不够:
scripts/mysql_install_db –user=mysql –datadir=$TEMP_DIR_WEBSERVERS/mysql/data
5. mysql成功启动后要设一下root的默认密码和把mysql链到PATH指定的目录,不然后面没法运行mysql_secure_installation,这里默认密码是root,执行mysql_secure_installation时再改回正式的:
$TEMP_DIR_WEBSERVERS/mysql/bin/mysqladmin -u root password root
ln -s $TEMP_DIR_WEBSERVERS/mysql/bin/mysql /usr/bin/mysql
$TEMP_DIR_WEBSERVERS/mysql/bin/mysql_secure_installation
6. 有些下载包后缀变成.bz2,所以tar命令要把z参数去掉,比如:
tar xvf mhash-*.tar.bz2
tar xf pcre-*
7. PHP改用5.4,我写这篇博文时子版本最新是15,从官方下载:
wget http://cn2.php.net/get/php-5.4.15.tar.gz/from/us1.php.net/mirror
tar zxf php-5.4.*.tar.gz
8. php.ini和php-fpm.conf的参数需要做些修改,php-fpm默认是nobody用户,而nginx用的是www用户,所以安装完php后要修改过来,不然会提示找不到文件,把php也链到PATH指定的目录:
sed -i ‘s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g’ $TEMP_DIR_WEBSERVERS/php/etc/php.ini
sed -i ‘s/group = nobody/group = www/g’ $TEMP_DIR_WEBSERVERS/php/etc/php-fpm.conf
sed -i ‘s/user = nobody/user = www/g’ $TEMP_DIR_WEBSERVERS/php/etc/php-fpm.conf
ln -s $TEMP_DIR_WEBSERVERS/php/bin/php /usr/bin/php
9. Nginx替换成1.4,我写这篇博文时子版本是0,从官方下载:
wget http://nginx.org/download/nginx-1.4.0.tar.gz
10. 默认安装时会提示找不到libpcre.so.1文件,加一个链接,同时把nginx链到PATH指定的目录,再把nginx的启动放到rc.local中:
ln -s /lib64/libpcre.so.0.0.1 /lib64/libpcre.so.1
ln -s $TEMP_DIR_WEBSERVERS/nginx/sbin/nginx /usr/sbin/nginx
echo “nginx -c $TEMP_DIR_WEBSERVERS/nginx/conf/nginx.conf” >> /etc/rc.local
11. nginx.conf的配置文件参见原链接,关键点是:
1) 在http{}里下加:
[text]
# Upstream to abstract backend connection(s) for PHP.
upstream php {
#this should match value of “listen” directive in php-fpm pool
#server unix:/tmp/php-fpm.sock;
server 127.0.0.1:9000;
}
[/text]
2) 在server{}里加:include php.conf;
3) 新建一个php.conf,内容跟原链接的restrictions.conf一样,这里只是改了名:
[text]
# Pass all .php files onto a php-fpm/php-fcgi server.
location ~ \.php$ {
# Zero-day exploit defense.
# http://forum.nginx.org/read.php?2,88845,page=3
# Won’t work properly (404 error) if the file is not stored on this server, which is entirely possible with php-fpm/php-fcgi.
# Comment the ‘try_files’ line out if you set up php-fpm/php-fcgi on another machine. And then cross your fingers that you won’t get hacked.
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
#NOTE: You should have “cgi.fix_pathinfo = 0;” in php.ini
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fastcgi_intercept_errors on;
fastcgi_pass php;
}
[/text]
这里提供一个我整理好的可以无人值守的.sh文件:lnmp-new.sh
另外提供一个重启lnmp的脚本,考虑到VPS的内存有限,这些服务可能会占用内存越来越多,所以我把这个脚本放到crontab里每天定时重启一次:restart-lnmp.sh
PS. 我把以前在lnmp0.9下用WordPress建的博客打包发转过来,发现博文的正文无法显示,然后发现是Feed Layout这个插件的问题,直接把它停用或删除就好了。phpmyadmin的安装请参考lnmp0.9,我是直接把以前的phpmyadmin打包放到我的/home/www就直接能用了。
Tags: VPS