Last update on .

这次的工作任务是已有的Django项目,项目采用python3.6.9和Django1.11.1开发,Django版本还是比较老的,计划在Ubuntu18.04中部署。

计划采用流行的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 restartservicenginx status //看一下状态

如果一切顺利的话,可以通过云服务器的ip地址,加上端口号,就能访问你的Django项目了。

 

附uwsgi安装相关问题

1. !!! no internal routingsupport, rebuild with pcre support !!!问题。

需要卸载uwsgi后再安装pcre

ubuntu环境下

pip uninstall uwsgisudo apt-get install libpcre3 libpcre3-devpip install uwsgi --no-cache-dir

centos环境下

pip uninstall uwsgiyum install -y pcre pcre-devel pcre-staticpip 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.

Please log in by using LinkedIn Weibo to leave a comment.