Nginx + uwsgi +Django环境搭建

系统:Fedora27
参考博客:
https://www.cnblogs.com/chenice/p/6921727.html
https://blog.csdn.net/a657941877/article/details/8953233
https://segmentfault.com/q/1010000002492487

一、相关软件安装

1、安装django
pip3 install django

2、安装uwsgi
yum install gcc
yum install pip3-devel
pip3 install uwsgi

3、安装nginx
yum install nginx

二、uwsgi配置

1、uwsgi配置文件路径(自定义)

├── workplace
│   ├── a_blog               #Django项目目录
│   │   ├── a_blog
│   │   ├── aBlog            #app
│   │   ├── db.sqlite3
│   │   ├── manage.py
│   │   ├── static
│   │   └── templates
│   └── script
│       ├── uwsgi.ini
│       ├── uwsgi.log
│       ├── uwsgi.pid
│       └── uwsgi.sock

2、uwsgi.ini配置内容

[root@localhost XXX]# cat workplace/script/uwsgi.ini
[uwsgi]

#项目目录
chdir=/home/XXX/workplace/a_blog

#指定项目的application
module=a_blog.wsgi:application

#指定sock文件路径
socket=/home/XXX/workplace/script/uwsgi.sock

#进程个数
workers=5
pidfile=/home/XXX/workplace/script/uwsgi.pid

#指定IP端口
http=192.168.2.111:8000
#socket=192.168.2.111:8000

#指定静态文件
static-map=/static=/home/XXX/workplace/a_blog/static

#启动uuwsgi的用户名和用户组
uid=root
gid=root

#启动主进程
master=true

#当服务停止时自动移除unix Socket和pid文件
vacuum=true

#序列化接受的内容
thunder-lock=true

#启动线程
enable-threads=true

#设置中断时间
harakiri=30

#设置缓存
post-buffering=4096

#设置日志目录
daemonize=/home/XXX/workplace/script/uwsgi.log

3、启动uwsgi服务

uwsgi --ini /home/XXX/workplace/script/uwsgi.ini

三、nginx配置
1、修改 /etc/nginx/nginx.conf

#user nginx;   注释
user root;     新增

2、在/etc/nginx/conf.d下新增配置文件site1.conf

touch /etc/nginx/con.f/site1.conf

3、site1.conf内容

server{
        listen 80;
        server_name 192.168.2.111;
        access_log /var/log/nginx/access.log main;
        charset utf-8;
        gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream;

        #error_page 404 /404.html
        #error_page 500 502 503 504 /50x.html

        location / {
                include uwsgi_params;
                uwsgi_connect_timeout 150;
#               uwsgi_pass 192.168.2.111:8000;
                uwsgi_pass unix:/home/XXX/workplace/script/uwsgi.sock;
#               uwsgi_param UWSGI_PYHOME /home/XXX/workplace/site1;
#               uwsgi_param UWSGI_SCRIPT site1.wsgi;
#               uwsgi_param UWSGI_CHDIR /home/XXX/workplace/site1/site1;
        }

        location /static {
                root /home/XXX/workplace/site1/static/;
                index index.html index.htm;
        }

}

4、启动nginx

service nginx start

四、遇到的错误
1、访问目标地址时出现502错误提示

查看 /var/log/nginx/error.log
错误信息为 (13: Permission denied) 
解决方案:
  vi /etc/selinux/config
  #SELINUX=enforcing #注释掉
  #SELINUXTYPE=targeted #注释掉
  SELINUX=disabled #增加
  :wq! #保存退出
  setenforce 0 #使配置立即生效

2、DisallowedHost at /
Invalid HTTP_HOST header: ‘127.0.0.1:8000’. You may need to add ‘127.0.0.1’ to ALLOWED_HOSTS.

添加127.0.0.1 到Django项目的 settings -> ALLOWED_HOSTS

3、Django的admin式样丢失

在settings中添加:
  STATIC_ROOT = os.path.join(BASE_DIR,'static')
执行:
  python3 manage.py collectstatic

猜你喜欢

转载自www.cnblogs.com/baird/p/9541874.html