[Linux] Ubuntu_9.04_server安装nginx+php(fastcgi)+nginx虚拟主机配置格式
由于apache 太吃内存所以转投nginx下 效果相当明显!
512M内存启动apache 还剩15M(此时还未安装php支持)。同样的情况改装Nginx 剩余320M即使开启fast-cgi也还能剩250M。小内存VPS的福音。
准备知识:
Ubuntu :
Ubuntu 是linux的一个版本,有非洲发布的,现在比较流行的一个版本。
参考百度说明Ubuntu
nginx :
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。
Nginx 的中文维基:http://wiki.codemongers.com/NginxChs
Nginx 的中文站: http://www.nginx.cn
参考 百度百科解释NGINX
FastCGI:
个人初步感觉是CGI的先进产物,据说速度比CGI快五倍。
好了,现在来安装: 第一步,安装nginx
由于Ubuntu 904已经包含了nginx,所以根本不要编译,安装超简单!
修改/etc/apt/sources.list文件内容为国内镜像,然后运行:
apt-get update apt-get install nginx 即可完成安装
启动nginx:
/etc/init.d/nginx start 然后就可以访问了,http://localhost/ , 一切正常!如果不能访问,先不要继续,看看是什么原因,解决之后再继续。
下面配置php和mysql。
第二步,安装Php和mysql
安装php和MySQL:
apt-get install php5-cli php5-cgi mysql-server-5.0 php5-mysql
第三步,安装FastCgi和配置
我们需要/usr/bin/spawn-fcgi这个文件,而它是属于lighttpd这个包里面的,所以我们安装lighttpd然后把它设置为开机不启动:
apt-get install lighttpd #我们只要/usr/bin/spawn-fcgi apt-get install rcconf
rcconf #去掉lighttpd开机自启动 修改nginx的配置文件:/etc/nginx/sites-available/default 修改 server_name 184.82.12.188; 修改index的一行修改为: index index.php index.html index.htm;
去掉下面部分的注释: location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; include /etc/nginx/fastcgi_params;
}
特别注意上面红色的字。
重新启动nginx: /etc/init.d/nginx stop /etc/init.d/nginx start 启动fastcgi php:
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi
Memotech注:
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data /usr/bin/php-cgi
为了让php-cgi开机自启动: cd /etc/init.d cp nginx php-cgi vi php-cgi
替换nginx为php-cgi
并修改相应部分为: DAEMON=/usr/bin/spawn-fcgi DAEMON_OPTS="-a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi" ... stop) echo -n "Stopping $DESC: " pkill -9 php-cgi echo "$NAME." 然后运行rcconf设置php-cgi为开机自启动
Memotech注 方法二
- #!/bin/bash
- PHP_SCRIPT=/usr/bin/php-cgi
- RETVAL=0
- case"$1" in
- start)
- $PHP_SCRIPT
- RETVAL=$?
- ;;
- stop)
- killall -9 php5-cgi
- RETVAL=$?
- ;;
- restart)
- killall -9 php5-cgi
- $PHP_SCRIPT
- RETVAL=$?
- ;;
- *)
- echo "Usage: php-cgi {start|stop|restart}"
- exit 1
- ;;
- esac
- exit $RETVAL
这是用shell脚本的方法加入开机启动项,这个方法更好一些。我试验过上面的方法 好像不太灵。
----------------------------------------------------------------------------------------------------------------------
方法3
开启PHP FastCGI 设置听的端口9000上运行的本地用户和www-data, 运行下面程序:
root@memotech:~# /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
显示 spawn-fcgi.c.197: child spawned successfully: PID: 29470
修改rc.local 这个文件.先备份一个.
root@memotech:~# cp /etc/rc.local . root@memotech:~# vi /etc/rc.local 添加 /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
----------------------------------------------------------------------------------------------------------
在/var/www/nginx-default/目录下创建一个文件: /var/www/nginx-default/index.php 文件内容是:
< ?php phpinfo();?>
然后浏览器访问nginx就可以看到一切正常了
以上面的步骤一般能走通。
附: Nginx 虚拟主机配置格式
- server {
- listen 80;
- server_name a.memotech.org;
- access_log logs/a.access.log;
- server_name_in_redirect off;
- location / {
- index index.html index.htm;
- root /var/www/a.memotech.org/;
- }
- }
- server {
- listen 80;
- server_name b.memotech.org;
- access_log logs/b.access.log;
- server_name_in_redirect off;
- location / {
- index index.html index.htm;
- root /var/www/b.memotech.org/;
- }
- }
-------------------------------------------------------------------
#以上两个虚拟主机的配置不支持php 如果要支持php,请参照以下配置。
server { listen 80; server_name test.memotech.org; access_log /var/log/testmemoaccess.log; server_name_in_redirect off; location / { index index.php; root /var/www/test.memotech.org/; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/test.memotech.org$fastcgi_script_name; include /etc/nginx/fastcgi_params; } } }