计划采用流行的Nginx+uWSGI方式部署安装Django项目。uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx(engine x) 是一个高性能的HTTP、反向代理及负载均衡web服务器,目前非常流行。
步骤一、建立Django环境
1.创建虚拟环境命令:python -m venv my_project
2.下载代码:git clone https://github.com/xxxx /project.git project_github
3.安装依赖包:pip install -r req.txt
安装好之后可以试一下是否能正常跑起来:
python manage.py runserver 0.0.0.0:8090
因为是命令行方式访问的云服务器,所以需要在浏览器中输入服务器外网地址,网站能够正常打开的话,这一步就算是成功了。
步骤二、安装uWSGI
进入虚拟环境:sourcebin/activate,成功的话,在命令行前面会出现(myproject)
安装uWSGI:pip install uwsgi
安装后进入Django项目中有settings.py的文件夹,在这里建立文zuwsgi.ini
[uwsgi]
socket=127.0.0.1:8090
chdir=/your/Django/project/path/
wsgi-file=project/wsgi.py
process=4
threads=2
pidfile=uwsgi.pid
daemonize=uwsgi.log
master=True
安装完,可以执行uwsgi–ini uwsgi.ini启动,启动后会自动建立uwsgi.pid以及uwsgi.log文件。执行后,在uwsgi.log文件中发现两个错误。后附uwsgi遇到的错误及解决办法。
错误都解决后,最好验证一下Django是否能正常跑起来。将uwsgi.ini中的socket改为http,然后可以通过curl 127.0.0.1:8090命令测试,返回一堆html格式的文本,说明没大问题。
步骤三、安装Nginx
安装:apt-get install nginx
使用vim打开配置文件:vim /etc/nginx/nginx.conf。配置文件内容很简单,就是监听外网主机9999端口号,转发到内网8090端口上。注意如果连不通,把云的安全组设为全部通过以及暂时关闭Ubuntu的ufw防火墙,关闭防火墙命令为sudo ufw disable。调试通过后记得打开enable防火墙,否则会有很大安全隐患。
server {
listen 9999;
server_name 你的ip地址;
access_log /var/log/nginx/myproject_access.log;
error_log /var/log/nginx/myproject_error.log;
location / {
uwsgi_pass 127.0.0.1:8090;
include /etc/nginx/uwsgi_params;
}
}
启动Nginx
servicenginx restart
servicenginx status //看一下状态
如果一切顺利的话,可以通过云服务器的ip地址,加上端口号,就能访问你的Django项目了。
附uwsgi安装相关问题
1. !!! no internal routingsupport, rebuild with pcre support !!!问题。
需要卸载uwsgi后再安装pcre
ubuntu环境下
pip uninstall uwsgi
sudo apt-get install libpcre3 libpcre3-dev
pip install uwsgi --no-cache-dir
centos环境下
pip uninstall uwsgi
yum install -y pcre pcre-devel pcre-static
pip install uwsgi --no-cache-dir
2. failed to open python filewsgi.py问题。解决方法是文件uwsgi.ini中,一定要有xxx这个项目名称,否则找不到wsgi.py文件
wsgi-file=xxx/uwsgi.ini #项目目录下的uwsgi.ini
3. 还有说这里会出现静态文件403 forbidden问题。解决办法就是加权限:
chmod o+x /your/Django/project/path/
评论
No comments yet.