诸如WordPress,Typecho都是基于PHP的,即LEMP框架。最近折腾服务器上跑Python web服务,就总结了一些安装步骤。
因为PHP用到的是fastCGI,所以在Django也使用fastCGI,不过这里还需要flup,flup是一个用python写的web server,也就是CGI中所谓的Server/Gateway,它负责接受Nginx转发的请求,并调用你写的程序 (application),并将application处理的结果返回到Nginx。
Ubuntu自带了Python,可以这样查看Python版本:
python --version
得到如下:
Python 2.7.6
接下来安装pip:
sudo apt-get install python-pip
用pip安装Django:
pip install Django==1.8.1
查看Django是否正确安装:
进入Python:
python
在Python中输入:
import django
print django.get_version()
得到:
1.8.1
创建一个Django项目:
这里实际上可以在服务器上任意自己想要的目录,不过我放在/usr/share/nginx/html/test下
cd到想要的目录,然后创建:
django-admin startproject mysite # mysite即项目名,可自己修改
安装flup:
sudo apt-get install python-flup
修改Nginx配置文件:
Nginx配置文件路径为:/etc/nginx/sites-available/default
在文件中新加入一个server,如下:
文件修改保存后退出。
启动flup:
将当前目录cd切换到Django项目下(即有manage.py的那层),执行:
python manage.py runfcgi method=threaded host=0.0.0.0 port=8051
注意这里端口号要和Nginx配置文件中相同
然后重启Nginx:
service nginx restart
接下来在浏览器中输入上面Nginx配置文件中的server_name就能看到Django的“It worked!”界面了,这样Django就算安装完成了。
需要注意的几点:Python版本问题,如果在Ubuntu中安装多个版本的Python一定要注意依赖包的问题,有可能pip install成功了但Python中无法import,所以这里我直接用的系统自带的。
Nginx配置文件中实际fastcgi_pass才是最重要的,我的test目录下有index.html,但访问test.polarxiong.com时仍然直接跳转到Django,说明Nginx首先会把请求交给fastcgi_pass,再由flup传至指定的Django项目。所以Django项目的实际路径也是可以自定义的。
flup运行后,即
python manage.py runfcgi method=threaded host=0.0.0.0 port=8051
执行后需要重启Nginx才能实现访问Django,所以在服务器重启后也要重复上述步骤。注意到执行
python manage.py runfcgi method=threaded host=0.0.0.0 port=8051
后会出现警告:
Warning: FastCGI support has been deprecated and will be removed in Django 1.9
这个因为现在用的还是1.8.1所以暂时不考虑。