Talk is cheap, show me the code.
我是以root用户登录安装的。
一、安装nginx
首先下载nginx包 nginx-1.10.2.tar.gz,可以直接从nginx官网下载:http://nginx.org/en/download.html
需要预安装一些工具:pcre,pcre-devel, openssl, openssl-devel, gcc,g++,zlib, zlib-devel.
命令:
yum install gcc-c++
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
上传下载好的nginx包至linux目录下,我是放到/usr/local 目录下,解压缩得到 nginx-1.10.2 目录:
tar zxvf nginx-1.10.2.tar.gz
注意千万不要将nginx-1.10.2重命名为nginx,因为安装完成后,程序会自动在/usr/local目录下创建一个nginx目录,这个nginx目录就是nginx启动配置的目录。
当前所在目录为 /usr/local, 进入nginx-1.10.2目录,开始安装:
cd nginx-1.10.2
./configure
make
make install
如果上面把解压缩后的nginx-1.10.2重命名为nginx那么这里make install就会报错”make [*] install error 2”。
如果都成功执行完,那么nginx就安装成功了,在/usr/local目录下会自动生成了nginx目录。
nginx的启动:
/usr/local/nginx/sbin/nginx
nginx查看是否启动:
ps -ef | grep nginx
nginx的重启:
/usr/local/nginx/sbin/nginx -s reload
nginx的关闭:
ps -ef | grep nginx //首先查找到nginx-master的pid 比如说是20544
kill 20544 //杀死nginx-master进程,worker进程也会自动死亡
启动nginx后,在浏览器输入 http://linuxIP:80 即可看到nginx的html目录下index.html中的内容,说明安装成功。
二、安装mysql
linux自动安装好了mysql,后续动手实践过再记录。
三、安装php
首先下载好php和php-fpm包:
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
将下载好的 php-5.2.14.tar.gz 和 php-5.2.14-fpm-0.5.14.diff.gz 放到 /usr/local 目录下。
安装php需要一些预安装的包:libxml2和libxml2-devel包
yum install libxml2
yum install libxml2-devel -y
安装成功后,进入 /usr/local目录,解压缩php-5.2.14.tar.gz得到php-5.2.14, 不要重命名, 然后进行安装:
cd /usr/local
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 --enable-fastcgi --enable-fpm
make
make install
然后,配置php
cp php.ini-dist /usr/local/lib/php.ini
最后同过 php-fpm 启动fastCGI进程,因为php启动不能用root账户来启动,否则会报错,新建账户的命令如下:
useradd -g root lee //新建用户lee,属于root组
passwd lee //给lee加上密码
chown -R lee:root /usr/local/php //将php的及其子目录全都赋予新用户lee权限
su lee //使用lee用户来启动fastCGI
/usr/local/php/sbin/php-fpm start //启动fastCGI
安装php成功,但是还不能将网页请求转发给php进行处理,还需要将web服务器进行配置,将php请求转发给php进程进行处理。
补充说明:
1. 启动fastCGI的目的说明:启动fastCGI进程(实际是php-cgi进程,通过ps -ef|grep php可以看到),使php解释器能监听127.0.0.1:9000的请求。当web服务器比如nginx收到来自网络的.php请求后,因为nginx本身只是静态网页html的解释器,不支持php、jsp、asp等动态网页的解析,但是当nginx.conf配置好支持php后,就可以将.php请求转发到127.0.0.1:9000,php解释器监听到请求后再解释执行,相当于nginx只作了代理转发服务器。(nginx配置支持php在下面会讲到)
2. php-fpm的其他命令:/usr/local/php/sbin/php-fpm start/stop/quit/reload/restart/logrotate 。logrotate是重新启动log日志;reload是个很重要的参数,它可以在PHP的FastCGI进程不中断的情况下重新加载改动过的php.ini,因此通过php-fpm可以平滑变更FastCGI模式下的PHP设置。
四、配置nginx支持php
nginx是root账户安装的,首先切换至root账户。
su root
进入nginx目录,更改nginx.conf的配置:
cd /usr/local/nginx/conf
vim nginx.conf
对应项更改为如下:
location / {
root /usr/local/nginx/html;
index index.html index.htm index.php;
}
location = /50x.html {
root /usr/local/nginx/html;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
配置完毕,重启nginx和fastCGI即可:
su root
/usr/local/nginx/sbin/nginx -s reload
su lee
/usr/local/php/sbin/php-fpm restart
在浏览器输入 http://linuxIP:80 即可访问到nginx的html下的index.html内容。
验证nginx可以相应php请求:
cd /usr/local/nginx/html
vim info.php
info.php的内容为:
<?php
phpinfo();
?>
在浏览器输入 http://linuxIP:80/info.php 可以看到php的首页内容。
php 5.6 下载链接:
wget http://www.php.net/distributions/php-5.6.3.tar.gz
php-fpm是php的一个补丁,通过与php源代码放在一起编译就能安装,起到fastCGI管理器的作用,编译是带上 –enable-fpm 即可。
php5.6安装方法:
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-fpm-user=www --with-fpm-group=www --enable-fpm --enable-opcache --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --disable-fileinfo --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-bcmath --enable-shmop --enable-exif --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-ftp --with-gettext --enable-zip --enable-soap --disable-ipv6 --disable-debug
开启 opcache,可以缓存opcode, –disable-debug –disable-ipv6,关闭 debug ipv6,都可以提高php性能。
make
make install
配置php.ini:可以根据/usr/local/php-5.6.3/php.ini-production生成一个php.ini,拷贝到/usr/local/lib/目录下。
配置php-fpm.conf:根据/usr/local/php/etc/php-fpm.conf.default生成一个/usr/local/php/etc/php-fpm.conf。
然后启动php-fpm即可:
/usr/local/php/sbin/php-fpm
创建php-fpm服务(可选,更方便)
cp /usr/local/php-5.6.3/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
创建php-fpm服务完毕,启动如下:
/etc/init.d/php-fpm start/restart/stop...
FAQ
1.安装php时报错libmcrypt安装失败。(下面两个必须都安装)
wget http://mirrors.hust.edu.cn/epel/6/x86_64/libmcrypt-2.5.8-9.el6.x86_64.rpm
rpm -Uvh libmcrypt-2.5.8-9.el6.x86_64.rpm
wget http://mirrors.hust.edu.cn/epel/6/x86_64/libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
rpm -Uvh libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
2.启动php-fpm时报错:
启动时报错/usr/local/php/etc/目录下没有php-fpm.conf文件,安装后需要进入/usr/local/php/etc/下从php-fpm.conf.default手动设置一个php-fpm.conf的配置文件。
启动时不能使用root用户,但可以是root用户组下的其他用户,否则会报错不能用root启动的错误。
如果报错’user’ directive is ignored when FPM is not running as root,只需要注释掉/usr/local/php/etc/php-fpm.conf中的user和group的设置即可。