sudo apt-get install nginx
安装完成后配置Nginx,默认的安装结构是:
sudo gedit /etc/nginx/sites-available/default
注意:修改网站默认目录为 /var/www/nginx/nginx-default,当然你也可以修改为/var/www
location /{
root /var/www/nginx-default;
index index index.php index.html index.htm; }
启动Ngnix:
sudo /etc/init.d/nginx start
访问http://localhost,如果正常的话应该显示 Welcome to Nginx !,如果显示403,那就是接着修改网站默认目录。
安装PHP和Mysql :
sudo apt-get install php5-cli php5-cgi mysql-server php5-mysql
注意:在安装过程中会要求创建Mysql 的root用户密码,请务必牢记数据库Mysql的超级密码。
安装 FastCgi :
sudo apt-get install spawn-fcgi
配置 Nginx :
sudo gedit /etc/nginx/sites-available/default
注释掉其中的PHP部分(去掉前面的#号)
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;#如果在/etc/nginx/fastcgi_param配置了 这里就不需要重复配置,要不然会启动不起来的
include /etc/nginx/fastcgi_params;
}
注意:务必注意上面的空格以及目录名称。
重启Nginx:
/etc/init.d/nginx stop
sudo /etc/init.d/nginx start
注意:第二行的sudo不能少,否则还是会出问题。
启动 Fastcgi php:
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi
注意:如果出现错误 Address already in use 之类的,网上所说是由于Apache占用了98端口,如果你安装过Apache,那请卸载掉再重试。
我自己的电脑没有安装过Apache,也找不出问题,因此我修改了9000这个端口为9001,同样上面的Nginx配置文件中也要修改。重新启动 Fastcgi php,成功。
创建测试 phpinfo:
sudo gedit /var/www/nginx-default/info.php
输入 <?php phpinfo(); ?> 保存,关闭。
打开 http://localhost/info.php,如果一切正常的话会显示PHP的属性页面。
下载安装XCache :
sudo apt-get install php5-xcache
然后打开XCache的配置文件:
/etc/php5/conf.d/xcache.ini
复制全部,准备编辑php.ini
sudo gedit /etc/php5/cgi/php.ini
粘贴至php.ini文件中。
重启php-cgi :
sudo killall -HUP php-cgi
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi
注意:在info.php中查看 XCache 模块。(要能搜索到多个xcache,如果只有一个,那必然有问题。)
安装Zend 区分PHP版本,因此我会在下一篇文章中专门贴出来。而且ubuntu终端中安装 nginx 版本是0.75,Nginx官方最新稳定版为Nginx1.0.10,所以在讲完Zend Op的安装后,会再说一下如何平稳升级Nginx到最新版。
本文主要参考 Ubuntu 官方 wiki 的《 Nginx 的教程》以及Google,国内关于Nginx研究比较多的就是张宴老师了。他的博客:http://s135.com/
rpm -ivh http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum install nginx mysql mysql-server php-fpm php-mysql php-cli php-eaccelerator php-gd php-imap php-xml php-xmlrpc php-mbstring php-mcrypt php-suhosin --enablerepo=epel,nginx,remi
sed -i '/expose_php/{s/On/Off/g}' /etc/php.ini sed -i '/display_errors/{s/On/Off/g}' /etc/php.ini sed -i '/php_errors.log/{s/;//g}' /etc/php.ini sed -i '/file_uploads/{s/On/Off/g}' /etc/php.ini sed -i '/allow_url_fopen/{s/On/Off/g}' /etc/php.ini sed -i '/allow_url_include/{s/On/Off/g}' /etc/php.ini sed -i '/;date.timezone/{s/;//g;s/=/= Asia\/Shanghai/g}' /etc/php.ini sed -i '/cgi.fix_pathinfo\=/{s/;//g;s/1/0/g}' /etc/php.ini sed -i '/memory_limit/{s/128/64/g}' /etc/php.ini sed -i '/safe_mode/{s/Off/On/g}' /etc/php.ini
sed -i 's/apache/nginx/g' /etc/php-fpm.d/www.conf sed -i '/request_terminate_timeout/{s/;//g;s/0/30/g}' /etc/php-fpm.d/www.conf
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf echo "vm.swappiness = 25" >> /etc/sysctl.conf echo "net.ipv4.route.max_size = 524288 " >> /etc/sysctl.conf echo "net.core.somaxconn = 10240" >> /etc/sysctl.conf echo "net.ipv4.tcp_max_syn_backlog = 204800" >> /etc/sysctl.conf echo "net.core.netdev_max_backlog = 204800" >> /etc/sysctl.conf echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf echo "ulimit -SHn 65535" >> /etc/profile cat >> /etc/security/limits.conf <<EOF nginx soft nofile 65535 nginx hard nofile 65535 EOF
sed -i '/worker_processes/{s/1/4/g}' /etc/nginx/nginx.conf sed -i '/worker_processes/a\ worker_rlimit_nofile 65535;' /etc/nginx/nginx.conf sed -i '/worker_connections/{s/1024/10240/g}' /etc/nginx/nginx.conf sed -i '/sendfile/a\ server_tokens off;' /etc/nginx/nginx.conf sed -i '/version/{s/\/\$nginx_version//g}' /etc/nginx/fastcgi_params sed -i '/events/a\ use epoll;' /etc/nginx/nginx.conf
location ~ \.php$ { root /var/www/html; fastcgi_pass 127.0.0.1:9000; #fastcgi_pass unix:/tmp/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
mkdir -p /var/www/html sed -i 's#/usr/share/nginx/html#/var/www/html#g' /etc/nginx/nginx.conf sed -i 's/index.html/& index.php/' /etc/nginx/nginx.conf echo "<?php phpinfo();phpinfo(INFO_MODULES);?>" >/var/www/html/index.php
chkconfig nginx on chkconfig php-fpm on chkconfig mysqld on /etc/init.d/php-fpm start /etc/init.d/mysqld start /etc/init.d/nginx start