在Ubuntu 8.04下编译Nginx 0.7.63

Posted by zuzhihui in Linux技术 on 2010/01/28 with No Comments

Ubuntu 8.04上自带的Nginx版本比较老,本文介绍怎样在Ubuntu 8.04下编译0.7.63。

只所以选择0.7.63版本的Nginx,是因为Ubuntu官方有这个版本的Nginx源码包,基于这个源码包在Ubuntu 8.04下编译,非常方便。

首先到 http://us.archive.ubuntu.com/ubuntu/pool/universe/n/nginx/ 去下载Nginx的源码,下载如下三个文件:

nginx_0.7.63-1ubuntu1.dsc
nginx_0.7.63-1ubuntu1.diff.gz
nginx_0.7.63.orig.tar.gz

然后运行:

dpkg-source -x nginx_0.7.63
cd nginx-0.7.63/
fakeroot dpkg-buildpackage
cd ..

然后在当前目录就应该生成编译出来的deb包了,名字是:nginx_0.7.63-1ubuntu1_amd64.deb ,我们把这个文件放到了 http://dl.rashost.com 供大家下载

在Debian/Ubuntu VPS下配置Nginx做反向代理

Posted by zuzhihui in Linux技术 on 2009/11/06 with No Comments

Debian和Ubuntu都自带了Nginx,用他们来配置Nginx的反向代理,非常方便。

安装Nginx

运行如下命令安装并运行Nginx

apt-get install nginx
/etc/init.d/nginx start

然后在浏览器里面访问该IP的80端口,就会看到”Welcome to Nginx!”的信息,这说明Nginx安装完成了!

配置Nginx做反向代理

Nginx的缺省站点的配置文件是/etc/nginx/sites-available/default,修改这个文件中的如下部分:
        location / {
root   /var/www/nginx-default;
index  index.html index.htm;
}

修改为:
        location / {
proxy_pass http://www.google.com/;
proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

然后重启Nginx:

/etc/init.d/nginx restart

然后在浏览器里面重新访问该IP上面的80端口,应该就看到google的主页了,反向代理配置成功了

多域名反向代理配置实例

在一个VPS上配置多个域名的反向代理,比如我们有两个域名test1.rashost.com和test2.rashost.com,我们希望客户在访问test1.rashost.com的时候出现www.baidu.com的内容,希望客户在访问test2.rashost.com的时候出现www.kernel.org的内容,客户只知道test1.rashost.com和test2.rashost.com的存在,而不知道www.baidu.com和www.kernel.org的存在。

首先需要把域名test1.rashost.com和test2.rashost.com指向VPS的IP地址。

然后在/etc/nginx/sites-available 目录下增加两个文件,文件名分别是test1.rashost.com和test2.rashost.com

test1.rashost.com的文件的内容如下:
server {
listen   80;
server_name  test1.rashost.com;

location / {
proxy_pass http://www.baidu.com/;
proxy_redirect off;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

test2.rashost.com的文件的内容如下:
server {
listen   80;
server_name  test2.rashost.com;

location / {
proxy_pass http://www.kernel.org/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

然后运行命令:

cd /etc/nginx/sites-enabled
ln -sf /etc/nginx/sites-available/test1.rashost.com .ln -sf /etc/nginx/sites-available/test2.rashost.com .
/etc/init.d/nginx restart

这时候在浏览器里面访问test1.rashost.com将会出现www.baidu.com的内容,访问test2.rashost.com将会出现www.kernel.org的内容。

反向代理的高级配置

关于Nginx反向代理的一些高级配置,我们会不断写博客介绍,敬请关注。

nginx+php+mysql在各种Linux VPS的一系列解决方案

Posted by zuzhihui in vps技术 on 2009/10/18 with No Comments

Nginx是Linux下优秀的Web Server,它效率很高,非常节省内存,和fastcgi模式的php配合起来用效果很好,是我们给客户推荐的Web Server。

我们在各种Linux VPS都有完整的Nginx解决方案,本文作为索引,列举出这些文章的地址,以方便用户查找。

Debian 5 VPS下的nginx+php+mysql的解决方案

Posted by zuzhihui in Linux技术 on 2009/09/08 with No Comments

本文介绍在Debian 5 VPS下的nginx php mysql的解决方案,本方案使用php-fpm作为fastcgi的进程管理器。

本文基于64位的Debian 5 VPS,如果是32位的Debian VPS,请在相应部分做修改。

使用php-fpm就必须重新编译php,不能使用系统自带的php。MySQL使用Debian自带的,Nginx是从Debian官方软件库中下载的最新版本。

安装Nginx

Debian 5系统自带的nginx版本比较低,现在Nginx的新稳定版本0.7.61,即将发行的Debian 6里面带的是最新版本的nginx,测试后发现这个nginx在Debian 5下可以运行。我们在 http://ftp.us.debian.org/debian/pool/main/n/nginx/ 下载了Nginx的deb包,放到了 http://dl.rashost.com/方便客户下载

安装命令:


dpkg -i nginx_0.7.61-3_amd64.deb
/etc/init.d/nginx start
mkdir -p /var/www/nginx-default
echo 'nginx ok'>/var/www/nginx-default/index.html
echo '<?phpinfo()?>' > /var/www/nginx-default/test.php

另外运行dpkg -L nginx命令可以看到nginx的文件都安装在哪些目录下面了

Debian下nginx的缺省网页目录是/var/www/nginx-default,这个目录安装的时候没有创建,我们是手工创建的。

通过浏览器访问,应该能看到nginx的缺省网页了,说明nginx正常工作了!

安装MySQL

我们使用Debian自带的MySQL,安装命令:


apt-get install mysql-server-5.0
/etc/init.d/mysql start

运行mysql -uroot -p命令,应该可以正常连接到MySQL

安装php & php-fpm

安装php所需要的库文件:


apt-get update
apt-get install libxml2 libldap-2.4-2 libmhash2 curl libpng3 libjpeg62 libsasl2-2 libmcrypt4

http://dl.rashost.com下载安装我们自己在Debian下编译的php-fpm:


cd /opt
tar zxf php-fpm-5.2.10-amd64.tar.gz
ln -s /opt/php/sbin/php-fpm /etc/init.d/php-fpm
update-rc.d -f php-fpm defaults
/etc/init.d/php-fpm start

整合

首先在/var/www/nginx-default目录下创建文件test.php,其内容很简单,只要下面一行:

<?phpinfo();?>

假设所在VPS的地址是debian5.rashost.com,这时通过浏览器访问http://debian5.rashost.com/test.php是得不到正确的显示结果的。

修改nginx的配置文件/etc/nginx/sites-enabled/default,在文件内搜索fastcgi_pass,修改该部分内容为:

      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        fastcgi_params;
}

注意,Debian下的nginx配置文件和centos下的区别比较大,Debian下把配置分割成多个文件了,推荐一个站点一个配置文件,我们修改的是/etc/nginx/sites-enabled/default。另外fastcgi_param参数后面的/var/www/nginx-default/部分,这是具体的网页目录,如果像Debian下那样写成$document_root不知道为什么就不工作了。

然后重启nginx:

/etc/init.d/nginx/restart

然后在浏览器中访问test.php页面,就应该能正确显示了,reboot VPS测试一下,各个模块应该都能自带启动。大功告成!

CentOS 5 VPS的nginx+php+mysql解决方案之二

Posted by zuzhihui in vps技术 on 2009/09/05 with No Comments

本文介绍在CentOS 5 VPS下的nginx php mysql的解决方案之二,本方案使用php-fpm作为fastcgi的进程管理器。

使用php-fpm就必须重新编译php,不能使用系统自带的php。我们的观点是尽量使用系统自带的,除非功能满足不了。本方案中MySQL是使用CentOS 5自带的,Nginx是我们自己编译的。

安装Nginx

centos系统不带nginx,我们用的Nginx是自己编译的,Nginx版本是最新稳定版本0.7.61,到 http://rashost.com/download 下载nginx,然后开始安装:

rpm -ivh nginx-0.7*.rpm
chkconfig --list nginx
chkconfig nginx on
/etc/init.d/nginx start
rpm -ql nginx

上面的rpm -ql nginx命令是看看nginx的文件都安装在哪些目录下面了,可以看到nginx的缺省网页目录应该是/usr/share/nginx/html/

通过浏览器访问,应该能看到nginx的缺省网页了,说明nginx正常工作了!

安装MySQL

我们使用CentOS自带的MySQL,安装命令:

yum install -y mysql-server
chkconfig --list mysqld
chkconfig mysqld on
/etc/init.d/mysqld start

运行mysql -uroot命令,应该可以正常连接到MySQL

安装php & php-fpm

先安装php & php-fpm所依赖的一些库文件:

yum install libmhash libmcrypt libtool-ltdl libpng libjpeg curl

然后到 http://dl.rashost.com 下载我们自己编译的php-fpm并安装:

cd /opt
tar zxf php-fpm-5.2.10*.tar.gz
/opt/php/sbin/php-fpm start

然后编辑/etc/rc.local,在其中加入/opt/sbin/php-fpm start

整合

首先在/usr/share/nginx/html目录下创建文件test.php,其内容很简单,只要下面一行:

<?phpinfo();?>

假设所在VPS的地址是centos5.rashost.com,这时通过浏览器访问http://centos5.rashost.com/test.php是得不到正确的显示结果的。

修改nginx的配置文件/etc/nginx/nginx.conf,在文件内搜索fastcgi_pass,修改该部分内容为:

      location ~ \.php$ {
root           html;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
include        fastcgi_params;
}

然后重启nginx:

/etc/init.d/nginx/restart

然后在浏览器中访问test.php页面,就应该能正确显示了,reboot VPS测试一下,各个模块应该都能自带启动。大功告成!

CentOS 5 VPS的nginx+php+mysql解决方案之一

Posted by zuzhihui in vps技术 on 2009/09/05 with 3 Comments

在CentOS5 VPS下的nginx php mysql的解决方案有多个,本文介绍其中的解决方案之一。

本文基于64位的CentOS 5 VPS,如果是32位的VPS,请在相应部分做修改。

本解决方案使用瑞豪开源自己编译的最新稳定版本的Nginxfastcgi进程管理使用spawn-fcgi,还有CentOS 5自带的5.0.45版本的MySQL和5.1.6版本的php。

优缺点

本方案的优点是使用CentOS5自带的php和mysql,扩展性好,php的各种扩展yum库里面都有,都可以直接使用;另外,由于使用系统自带的php和mysql,安全性要好一些,如果有什么漏洞都可以直接升级为centos官方的最新版本。由于使用spawn-fcgi,所以无须重新编译php。

本方案的缺点有:

  1. php和mysql都是centos自带的版本,不是最新版本,万一用到php最新版本的某些特性则就不行了。
  2. spawn-fcgi的性能不如php-fpm,如果想用php-fpm,请参考 http://rashost.com/blog/centos5-vps-nginx-solution2

安装Nginx

 http://dl.rashost.com/下载nginx-0.7.61-1.x86_64.rpm

安装命令:

rpm -ivh nginx-0.7.61-1.x86_64.rpm
chkconfig --list nginx
chkconfig nginx on
/etc/init.d/nginx start
rpm -ql nginx

上面的rpm -ql nginx命令是看看nginx的文件都安装在哪些目录下面了,可以看到nginx的缺省网页目录应该是/usr/share/nginx/html/

通过浏览器访问,应该能看到nginx的缺省网页了,说明nginx正常工作了!

安装MySQL

yum install -y mysql-server
chkconfig --list mysqld
chkconfig mysqld on
/etc/init.d/mysqld start

运行mysql -uroot命令,应该可以正常连接到MySQL

安装PHP

yum install -y php-cgi php-mysql

安装spawn-fcgi

http://dl.rashost.com/ 下载 spawn-fcgi-1.6.2-1.32.x86_64.rpm

rpm -ivh spawn-fcgi-1.6.2-1.32.x86_64.rpm

然后在/etc/rc.local里面加入spawn-fcgi的启动命令:

spawn-fcgi -C 10 -a 127.0.0.1 -p 9000 -u nginx -d /tmp -f php-cgi

其中的-C 10参数是指启动的php fastcgi的进程数目,这个数值可以根据网站的访问量和内存大小修改。

然后先手工启动一下php:

spawn-fcgi -C 10 -a 127.0.0.1 -p 9000 -u nginx -d /tmp -f php-cgi

整合

首先在/usr/share/nginx/html目录下创建文件test.php,其内容很简单,只要下面一行:

<?phpinfo();?>

假设所在VPS的地址是centos5.rashost.com,这时通过浏览器访问http://centos5.rashost.com/test.php是得不到正确的显示结果的。

修改nginx的配置文件/etc/nginx/nginx.conf,在文件内搜索fastcgi_pass,修改该部分内容为:

      location ~ \.php$ {
root           html;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
include        fastcgi_params;
}

然后重启nginx:

/etc/init.d/nginx/restart

然后在浏览器中访问test.php页面,就应该能正确显示了,reboot VPS测试一下,各个模块应该都能自带启动。大功告成,该来些瓶啤酒庆祝一下了!

在CentOS5 VPS下编译nginx的RPM包

Posted by zuzhihui in vps技术 on 2009/09/04 with 2 Comments

Nginx是个Web服务器新秀,CentOS5官方没有Nginx的RPM包,本文记录了在64位的CentOS5 VPS下怎样编译Nginx 0.7.61版本的RPM包。

要编译RPM包,首先要有SRPM包,也就是RPM包的源代码包。可以从Nginx官网下载Nginx的源代码然后自己制作Nginx的SRPM包,这比较麻烦。本文下载了fedora 10中自带的Nginx的SRPM包,稍做修改即可。

安装SRPM包:

rpm -ivh nginx-0.7.61-1.fc10.src.rpm

上面命令把源代码安装在了/usr/src/redhat目录下,要编译RPM,需要rpmbuild命令:

yum install -y rpm-build.x86_64

然后就可以开始build了:

cd /usr/src/redhat/SPECS
rpmbuild -bb nginx.spec

build报错了,少了几个必须的库文件,我们来安装:

yum install -y pcre-devel.x86_64 zlib-devel.x86_64 openssl-devel.x86_64 mod_perl-devel.x64_64

然后修改nginx.spec文件,将其中的perl-devel修改成mod_perl-devel。继续build:

rpmbuild -bb nginx.spec

大功告成!build出来的RPM包就是/usr/src/redhat/RPMS/x86_64/nginx-0.7.61-1.x86_64.rpm 。同样的方法,我们在32位的CentOS VPS下也编译了一份,然后把他们都放到http://dl.rashost.com/下供大家下载。

nginx 下discuz不能上传问题之解决方法

Posted by zuzhihui in Linux技术 on 2009/03/30 with No Comments

问题出在 nginx的默认配置是不允许上传文件的。

解决方法:

找到nginx的配置文件nginx.conf

在http{}段,加入如下一句:
client_max_body_size 8m;

注意,最后的那个;号一定要有。

为了以防万一,再检查下php.ini关于上传文件设置

post_max_size = 8M
upload_max_filesize = 2M

配置Nginx支持CGI程序

Posted by zuzhihui in vps技术 on 2008/07/08 with No Comments

Nginx天生是不支持CGI的,所以Nginx也就没有了CGI方面的漏洞,提高了安全性。Nginx虽然不支持CGI,但它支持fastCGI,我们可以用fastCGI来达到CGI同样的效果。本文参考了 http://wiki.codemongers.com/NginxSimpleCGI

待续

在CentOS5下安装配置nginx+fastcgi php+mysql

Posted by zuzhihui in Linux技术 on 2008/06/01 with 2 Comments

后注:CentOS VPS下最新的nginx解决方案,请参考 http://rashost.com/blog/centos5-vps-nginx-solution2

这篇文章已经介绍了怎样编译Nginx的RPM包 下载RPM包:

wget http://rashost.com/local/nginx-0.6.35-2.i386.rpm
rpm -ivh nginx-0.6.35-2.i386.rpm
chkconfig nginx on
/etc/init.d/nginx start

然后访问本机的80端口,就可以看到页面了,这表示安装一切正常。 修改/etc/nginx/nginx.conf文件中的server_name部分,修改IP地址为本机IP地址:

server_name  192.168.0.104;

修改/etc/nginx/nginx.conf文件的index部分,加入index.php

index  index.php index.html index.htm;

安装php和fastcgi

wget ftp://rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/lighttpd-fastcgi-1.4.18-1.el5.rf.i386.rpm
wget ftp://rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/lighttpd-1.4.18-1.el5.rf.i386.rpm
rpm -ivh lighttpd*.rpm # CentOS不自带lighttpd, 我们只好从别处下载,安装
chkconfig --del lighttpd  #我们只用到lighttpd中的一个文件,不需要lighttpd开机自启动
yum install -y php-cgi php-mysql
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u nginx -f /usr/bin/php-cgi
cd /usr/share/nginx/html/
echo "< ? phpinfo(); ?>" >i.php

然后修改/etc/nginx/nginx.conf文件的如下部分:

     location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
        }

重启nginx:

/etc/init.d/nginx stop
/etc/init.d/nginx start

然后访问本机的i.php文件 http://192.168.1.104/i.php 应该能正确的到php的配置信息,这就成功了! 最后要注意的是,在CentOS下nginx的默认html目录是/usr/share/nginx/html,这个和ubuntu下不同 另外,为了让php cgi程序开机自启动,请在/etc/rc.local文件的最后加入下面这行:

spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u nginx -f /usr/bin/php-cgi
Back to Top

2007-2017 © 北京瑞豪开源科技有限公司 京ICP备13004995号-2