virtualenv+gunicorn+supervisor+nginx 部署 django项目

xiaoxiao2021-02-28  6

virtualenv

virtualenv用于搭建虚拟环境,之后的一切操作最好都在虚拟环境下执行,可能用到的命令:

pip install virtualenv #安装 virtualenv path #指定路径文件夹创建虚拟环境 source env/bin/activate #激活虚拟环境,env为前面指定的文件夹 cd django-blog-tutorial #进入你的django项目 pip freeze > requirements.txt #生成项目依赖 pip install -r requirements.txt #安装项目依赖 python manage.py collectstatic #收集静态文件

gunicorn

pip install gunicorn INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'gunicorn', # 在setting文件中添加 )

supervisor

在项目中创建文件:gunicorn.conf.py #gunicorn.conf.py bind = "127.0.0.1:9090" user = "root" #这句应该也可不要 supervisor配置文件: [program:blogproject] command = /home/ubuntu/sites/www.zhougb3.cn/env/bin/gunicorn -c /home/ubuntu/sites/www.zhougb3.cn/blogproject/blogProject/gunicorn.conf.py blogProject.wsgi:application directory = /home/ubuntu/sites/www.zhougb3.cn/blogproject startsecs = 3 redirect_stderr = true stdout_logfile_maxbytes = 50MB stdout_logfile_backups = 10 stdout_logfile = /home/ubuntu/sites/www.zhougb3.cn/blogproject/log/app.log

注意command命令,指定使用虚拟环境,指定读取文件去绑定端口。

使用以下命令查看是否配置成功:

netstat -lpnt #9090端口是否在监听 curl 127.0.0.1:9090 #是否显示出应有的页面内容

Nginx

配置文件如下:

server { listen 80; server_name www.zhougb3.cn; client_max_body_size 1m; access_log /home/ubuntu/sites/www.zhougb3.cn/blogproject/log/access_log; error_log /home/ubuntu/sites/www.zhougb3.cn/blogproject/log/error_log; root /home/ubuntu/sites/www.zhougb3.cn/blogproject; #gzip on; #gzip_min_length 1024; #gzip_buffers 4 8k; #gzip_types text/css application/x-javascript application/json; sendfile on; location /static { alias /home/ubuntu/sites/www.zhougb3.cn/blogproject/static; } location / { proxy_pass http://127.0.0.1:9090; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

static文件读取权限问题

正确配置之后,访问可以显示HTML页面,但是无法加载css样式,查了很多种方法。后面发现是nginx的权限问题。

#error.log "/home/ubuntu/sites/www.zhougb3.cn/blogproject/staticblog/js/jquery-2.1.3.min.js" failed (13: Permission denied), client: 120.236.174.168, server: www.zhougb3.cn, request: "GET /static/blog/js/jquery-2.1.3.min.js HTTP/1.1", host: "www.zhougb3.cn", referrer: "http://www.zhougb3.cn/"

使用nginx -t显示得到nginx.conf路径,然后给配置文件添加’user root;’但是没有效果。同时该命令提示如下信息:

nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied) 2017/12/10 10:43:21 [warn] 2991#2991: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 2017/12/10 10:43:21 [emerg] 2991#2991: open() "/run/nginx.pid" failed (13: Permission denied)

后面经过查找,真的是文件夹权限问题,把最外面的文件夹权限改成777就可以了。


参考链接:

django部署

django部署

gunicorn.conf.py

转载请注明原文地址: https://www.6miu.com/read-1400316.html

最新回复(0)