网上有很多类似文章,本文就简述自己的部署过程
环境说明:debian、python3.6 、 Django1.11
一、运行django项目 启动就不详细赘述了:python3 manage.py runserver 0:8899
二、使用uwsgi提供服务
1、安装uwsgi : pip3 install uwsgi
2、启动uwsgi : uwsgi --http 127.0.0.1:8899 --module project_name.wsgi
就可以运行你的web项目了,在浏览器输入127.0.0.1:8899访问项目,若能成功访问表示这步部署成功。
三、部署到nginx
1、安装nginx : apt-get install nginx
2、设置nginx 配置文件
因为/etc/nginx/nginx.conf 配置文件中有默认配置 include /etc/nginx/conf.d/目录下所有.conf配置文件,为了方便管理,在/etc/nginx/conf.d/目录下面创建自己的web项目配置文件,例如新建一个my_site.conf文件,具体配置信息如下:
server {
listen 80; #启动的nginx进程监听请求的端口
server_name localhost; #域名
error_log /var/log/nginx/project_name/error.log; #nginx错误日志,可自行设置,但必须保证提前建立好该目录和文件
location / {
include /etc/nginx/uwsgi_params;
uwsgi_pass 127.0.0.1:8899; #对于动态请求,转发到本机的9090端口,也就是uwsgi监听的端口
}
#error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location /static/ {
alias /var/www/nginx/manage/static/; #设定静态文件所在目录
}
location /media/ {
alias /var/www/nginx/manage/media/; #同样自行设置,要保证目录已经建好
}
}
配置文件写好后,我们要检查配置文件的正确性:
nginx -t -c /etc/nginx/nginx.conf
3、同步静态文件到nginx设置的目录下面
首先在Django项目setting.py中增加 STATIC_ROOT='/var/www/manage/static/
在命令行执行同步 python manage.py collectstatic自动将所有静态文件复制到nginx索引目录
4、启动uwsgi
在django项目目录下 uwsgi --socket 127.0.0.1:8899 --module project_app.wsgi
5、启动nginx
启动命令:service nginx start 正常启动后可以访问页面了
四、遇到的问题
1、问题:nginx connect() failed (111: Connection refused) while connecting to upstream
原因:uwsgi未启动服务,不用安装php-fpm服务,更不需要启动php-fpm服务
将启动uwsgi : uwsgi --http 127.0.0.1:8899 --module project_name.wsgi 放入supervisor的配置文件(/etc/supervisor/conf.d)内并启动
参考配置:
[program:managesite]
command=uwsgi --socket 127.0.0.1:8899 --module BackStage.wsgi
directory=/home/username/project/manage #django项目绝对目录
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true