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 供大家下载
Posted by zuzhihui in Linux技术 on 2009/11/06 with No Comments
Debian和Ubuntu都自带了Nginx,用他们来配置Nginx的反向代理,非常方便。
运行如下命令安装并运行Nginx
apt-get install nginx
/etc/init.d/nginx start
然后在浏览器里面访问该IP的80端口,就会看到”Welcome to 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反向代理的一些高级配置,我们会不断写博客介绍,敬请关注。
Posted by zuzhihui in vps技术 on 2009/10/18 with No Comments
Nginx是Linux下优秀的Web Server,它效率很高,非常节省内存,和fastcgi模式的php配合起来用效果很好,是我们给客户推荐的Web Server。
我们在各种Linux VPS都有完整的Nginx解决方案,本文作为索引,列举出这些文章的地址,以方便用户查找。
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官方软件库中下载的最新版本。
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正常工作了!
我们使用Debian自带的MySQL,安装命令:
apt-get install mysql-server-5.0
/etc/init.d/mysql start
运行mysql -uroot -p命令,应该可以正常连接到MySQL
安装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测试一下,各个模块应该都能自带启动。大功告成!
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是我们自己编译的。
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正常工作了!
我们使用CentOS自带的MySQL,安装命令:
yum install -y mysql-server
chkconfig --list mysqld
chkconfig mysqld on
/etc/init.d/mysqld start
运行mysql -uroot命令,应该可以正常连接到MySQL
先安装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测试一下,各个模块应该都能自带启动。大功告成!
Posted by zuzhihui in vps技术 on 2009/09/05 with 3 Comments
在CentOS5 VPS下的nginx php mysql的解决方案有多个,本文介绍其中的解决方案之一。
本文基于64位的CentOS 5 VPS,如果是32位的VPS,请在相应部分做修改。
本解决方案使用瑞豪开源自己编译的最新稳定版本的Nginx,fastcgi进程管理使用spawn-fcgi,还有CentOS 5自带的5.0.45版本的MySQL和5.1.6版本的php。
本方案的优点是使用CentOS5自带的php和mysql,扩展性好,php的各种扩展yum库里面都有,都可以直接使用;另外,由于使用系统自带的php和mysql,安全性要好一些,如果有什么漏洞都可以直接升级为centos官方的最新版本。由于使用spawn-fcgi,所以无须重新编译php。
本方案的缺点有:
到 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正常工作了!
yum install -y mysql-server
chkconfig --list mysqld
chkconfig mysqld on
/etc/init.d/mysqld start
运行mysql -uroot命令,应该可以正常连接到MySQL
yum install -y php-cgi php-mysql
到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测试一下,各个模块应该都能自带启动。大功告成,该来些瓶啤酒庆祝一下了!
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/下供大家下载。
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
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
待续
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
近期评论