Nginx+uwsgi部署django项目
1 安装nginx 和uwsgi(ubuntu14.04)
sudo apt-getinstall nginx(安装nginx)
sudo pip installuwsgi(安装uwsgi)(如果没有安装pip工具,需要先安装pip,安装命令为:sudo apt-get install python-pip)
1.1 测试nginx是否安装成功
打开浏览器输入:localhost或你的ip,出现如下界面表明nginx安装成功
1.2 测试uwsgi是否安装成功
创建一个test.py文件,内容如下:
# test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
#return [b"HelloWorld"] # python3
return ["Hello World"] # python2
在终端输入命令:uwsgi --http:8000 --wsgi-file test.py
随后,打开浏览器输入http://localhost:8000,查看浏览器
页面中出现Hello world,表示uwsgi安装成功。
Nginx和uwsgi都安装完成以后我们就可以部署我们的django网站了。
2 django网站部署
注:/home/xcy/gsm_lte是我的django网站位置
2.1 Nginx服务器配置
- 将/etc/nginx下的uwsgi_params文件复制到你的django项目主目录/home/xcy/gsm_lte下,命令为:cp –r /etc/nginx/uwsgi_params /home/xcy/gsm_lte/uwsgi_params
- 在网站主目录下创建一个名为gsm_lte_nginx.conf的配置文件,命令为:
- cd /home/xcy/gsm_lte
- sudo gedit gsm_lte_nginx.conf,打开一个空文件,在文件中输入如下内容:
upstream django {
#serverunix:///path/to/your/mysite/mysite.sock; # 使用unix套接字
server127.0.0.1:8001; # 使用TCP端口请注释上一行,并取消本行注释,这里的端口指的是跑uwsgi的端口
}
# nginx服务器配置
server {
# 监听端口
listen 9090;
# 域名
server_name localhost;
# 编码
charset utf-8;
# 最大上传大小
client_max_body_size 75M;
# Django 的media路径
location/media {
alias/home/xcy/gsm_lte;
}
# 静态文件路径
location/static {
alias/home/xcy/gsm_lte/static;
}
# 将动态请求转发到uwsgi跑的django程序
location /{
uwsgi_pass django;
include /home/xcy/gsm_lte/uwsgi_params; # 从/etc/nginx中复制来的
uwsgi_read_timeout 300;
}
}
3. 保存并关闭
- 在terminal中输入下列命令:sudo ln -s /home/xcy/gsm_lte/gsm_lte_nginx.conf /etc/nginx/sites-enabled/gsm_lte_nginx.conf,将你的网站软链接到nginx配置文件/etc/nginx/sites-enabled中(可自行进入/etc/nginx/sites-enabled文件查看软链接是否产生成功,可分别运行如下两个命令:
a. cd /etc/nginx/sites-enabled;
b. ls
查看是否操作成功)
至此,网站已经部署成功,但是为了避免权限问题网站报错,我们需要进入nginx的主配置文件,打开nginx的主配置文件,具体步骤为:在终端输入如下命令:sudo gedit /etc/nginx/nginx.conf
打开文件后,将user www-data一行注释,添加一行user root.然后保存,退出文件。
最后重启nginx命令,在终端输入如下命令:sudo service nginx restart
2.2 测试网站是否部署成功
在终端中进入你的项目目录,如我进入我的django项目gsm_lte,命令如下:
a.cd /home/xcy/gsm_lte
然后在终端输入如下命令:uwsgi--socket :8001 --module gsm_lte.wsgi --chmod-socket=664
如果终端没有报错,进入浏览器,输入你的ip地址和端口号即可访问你的网站,例如:我在浏览器中输入:localhost:9090即可访问我自己用django搭建的网站。
3 网站开机自启动
为了避免麻烦,我将web服务设为开机自启动,具体步骤如下:
打开配置文件/etc/rc.local
具体步骤为:在终端输入如下命令:sudo gedit/etc/rc.local
在/etc/rc.local文件中输入两个命令:
a. cd /home/xcy/gsm_lte(该命令进入django项目所在目录)
b. /usr/local/bin/uwsgi --socket :8001 --module gsm_lte.wsgi--chmod-socket=664(/usr/local/bin为uwsgi安装目录,pip安装默认此位置,不必更改)
4 总结
部署django项目,我们只要做了以下几件事:
- 安装nginx和uwsgi
- 给我们的网站写一个配置文件gsm_lte_nginx,并放到nginx中。
- 更改访问网站的用户为root,避免网站访问时出现权限问题。
- Django网站开机自启动。