77家的会客2010

Ubuntu14.04 Apache2.4.7 FastCgi Web.py php配置备忘

原来的VPS已经是几年前配置的了,当时是想记录下来,后来就一直懒,就没弄,结果最近VPS换了,该死的服务商竟然忘了帮我转移,只能我自己来手动转移,这样的话,我就得又重新配置一下环境。

关于Ubuntu:

用Ubuntu用习惯了,果断让服务商把默认的CentOS换成Ubuntu(CentOS我是真不会用呀)。服务商给我装的是13.04 LTS,但不知道为什么源列表一直有问题,服务器在美国肯定要用官方的源了,但什么软件也装不了,连apt-get update都出错,把源全给ignore了,没办法只好do-release-upgrade来进行系统升级。

好在服务器速度很快,我一口气连升两次直接升到了最新的14.04版了。

要先把服务器的免密码登录搞定
cat ~/.ssh/id_rsa.pub | ssh root@w.x.y.z " cat >> ~/.ssh/authorized_keys"

 

至于为什么用fastcgi而不用wsgi,我用过的经验是wsgi很不稳定,经常挂掉,fastcgi处理起来就轻松很多,另外fastcgi独有的进程管理不会导致apache当掉。 

 

服务器的配置模式是基于Apache,然后使用fastcgi(标准协议,又支持python,又支持php),本站DB嘛就使用python默认支持的sqlite了

1:Apache安装配置

sudo apt-get install apache2

sudo apt-get install libapache2-mod-fcgid libapache2-mod-fastcgi

sudo apt-get install python-flup

 

配置apache site,由于之前用的是apache2.2现在的是2.4版本,里面有个很小的差别

原来的Allow from all 要改成Require all granted

原来的Denied from all 要改成Require all denied

原来的Order Allow,Deny或Order Deny, Allow都已经不用了,直接删掉

 

关于mod-fcgid,在配置里加一下python和php的处理,在/etc/apache2/mods-enabled/fcgid.conf里加上

AddHandler fcgid-script .py
AddHandler fcgid-script .php #顺便把php的处理也给加进去,后面会用到

*当然这里可以不加,而在后面的site的conf里单独把上面的加上也行

 

改好的网站的配置文件后,

a2dissite 000-default  禁用掉apache默认的网站

a2ensite n3cp 启用新的网站

 

*一定要安装mod-fcgid,否则即使其它的全配置没问题,访问网站也会出现404错误,并且在log里面没有错误信息,因为没有fcgid来处理请求,客户端得不到东西服务器端也得不到请求
*对于apache2.4所有的网站配置文件必须是.conf扩展名的(除非在apache2.conf里改掉),不能像2.2那样没有扩展名
*所有和配置相关的修改,都要重启apache服务器(sudo service apache2 restart)之后才能生效
*mod-fcgid和mod-fastcgi的区别,请见这里 http://my.oschina.net/guol/blog/115839

为了方便管理每个网站的配置文件,可以用ln /etc/apache2/sites-available/n3cp.conf /var/www/n3cp/n3cp.conf 来做个硬链接

 

2:安装web.py用到的

web.py:
wget https://github.com/webpy/webpy/tarball/master
tar -zxvf web.py-dev.tar.gz
python setup.py install

SqlAlchemy:
sudo apt-get install python-sqlalchemy

PIL:
sudo apt-get install python-imaging

Jinja2 template:
sudo apt-get install python-jinja2

*访问web.py主站如果遇到是500错误,这个时候就要看error log了,如果出现Premature end of script headers: run.py这个错误的话,就可以在服务器远程运行python run.py会给出详细的错误信息,一般是少装某个包了。

3:安装php相关的
sudo apt-get install apache2-mpm-worker php5 php5-cgi php5-cli php5-common php5-gd

然后php的配置又和之前的不太一样了,黑体的是之前的配置方法,下划线的是现在的方法
这个配置不好的话,就一直显示403错误,这个问题浪费了我半天的时间。


#SetHandler php-fastcgi
#Action php-fastcgi /fcgi-bin/php5-cgi
SetHandler fcgid-script
FcgidWrapper /usr/lib/cgi-bin/php5 .php
AddType application/x-httpd-php .php
Options +ExecCGI
Require all granted

*FCGIWrapper 这个是老版本的,现在apache2也升到最新版 的就用 FcgidWrapper了
*现在还比较流行的一个处理apache+php的方法 是用FPM,可以安装php5-fpm来实现,但我这儿由于是和python一起用一起处理,就直接用fastcgi好了
*如果在/etc/apache2/mods-enabled/fcgid.conf里没有加处理,那上面的SetHandler 那里就要写成AddHandler fcgid-script .php了

最后,不要忘了把fcgid的上传限制给改一下

vi /etc/apache2/mods-available/fcgid.conf

FcgidConnectTimeout 20
MaxRequestLen 15728640

service apache2 restart

历史上的今天: [2005/08/14]疲惫的周末

[Ubuntu14.04 Apache2.4.7 FastCgi Web.py php配置备忘]的回复

Post a Comment~