用NGINX+uWSGI+python+virtualenv+Django搭建服务器发布项目+linux开发环境

在centos7或ubuntu中安装软件python+virtualenv+django+nginx+uwsgi

安装步骤和内容参考:https://www.cnblogs.com/yanjidong/articles/13193141.html

安装pycharm+mariadb+aria2等工具

安装步骤和内容参考:https://www.cnblogs.com/yanjidong/articles/13222495.html

配置uwsgi

1.使用py文件,测试启动uwsgi

# test.py,进入myprojects目录touch(vim) test.py,

  def application(env, start_response):

    start_response('200 OK', [('Content-Type','text/html')])
     return [b"Hello World"] # python3
  # 运行
   uwsgi --http :8001 --wsgi-file /opt/myprojects/test.py

 

2.使用modele参数启动uwsgi+django

uwsgi --http :9000 --module zqswoa.wsgi --py-autoreload=1   # --py-autoreload=1    热加载:项目有更新 自动重新加载,保持随时更新状态

3.使用INI配置文件启动uwsgi+django

uwsgi  -d --ini /opt/myProjects/zqswoa/uwsgi.ini  #-d 后台运行

[uwsgi.ini]

http=76.20.82.107:9000

chdir=/opt/mProjects/zqswoa

wsgi-file=zqswoa.wsgi

master = true

process=4

threads=2

pidfile=uwsgi.pid    

daemonize=/opt/myPrejects/zqswoa/uswgi.log

 

停止uwsgi

如果ini里有uwsgi.pid

uwsgi --stop uwsgi.pid

uwsgi --reload uwsgi.pid   #重启

如果没有

ps -ef | grep uwsgi

pkill -f uwsgi -9

 

下面接着建立uWSGI的配置文件,在自己工程目录下创建uwsgi.ini文件,写入以下内容

[uwsgi]
socket = 127.0.0.1:9090
chdir=/wwwroot/destiny
module=destiny.wsgi
master = true         
processes=2
threads=2
max-requests=2000
chmod-socket=664
vacuum=true
daemonize = /wwwroot/destiny/uwsgi.log

其中的socket字段值”127.0.0.1:9090”必须要和上面写的density.conf配置文件中的uWSGI监听地址完全一样;
chdir指自己工程的绝对路径;
module指的是wsgi.py在自己工程中的相对路径,”.”指代一层目录;我的django工程的wsgi.py文件是在”/wwwroot/destiny/destiny/wsgi.py”,所以写成destiny.wsgi;
daemonize指定uWSGI日志的存储路径。

好了,现在理一下路径:

工程路径:                  /wwwroot/destiny
工程静态文件路径:            /wwwroot/destiny/destiny/static
wsgi.py的路径:             /wwwroot/destiny/destiny/wsgi.py
uwsgi.ini的路径:           /wwwroot/destiny/uwsgi.ini
uwsgi日志路径:             /wwwroot/destiny/uwsgi.log
destiny.conf的路径:        /wwwroot/destiny/destiny.conf
uwsgi_params的路径:        /etc/nginx/conf/uwsgi_params
nginx访问日志路径:          /wwwroot/destiny/nginx_access.log
nginx错误日志路径:          /wwwroot/destiny/nginx_error.log

可以发现,我几乎把所有有关工程的配置文件和日志文件都放在工程目录下了,方便后期维护与查错。
启动uWSGI

sudo uwsgi --ini /wwwroot/destiny/destiny.ini

 

配置NGINX

首先确认自己准确的知道nginx的默认配置文件目录(nginx.conf)的路径,如果不清楚,请使用如下命令获取:

nginx -t

大概会列出以下类似信息:

nginx: the configuration file /etc/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/conf/nginx.conf test is successful

里面说明了nginx默认配置文件的路径是:/etc/nginx/conf/nginx.conf;

然后,确保nginx.conf的同目录下有uwsgi_params文件(/etc/nginx/conf/uwsgi_params),没有的话根据链接获取, 后面要用到。

自己的工程目录下,建立如destiny.conf(/wwwroot/destiny/destiny.conf)的配置文件;复制nginx.conf里面全部的内容,全部写入destiny.conf中。
然后按照下面写的,把destiny.conf配置文件中的server段部分全部替换掉。

server {
    listen 80;
    server_name localhost;
    charset     utf-8;
    access_log      /wwwroot/destiny/nginx_access.log;
    error_log       /wwwroot/destiny/nginx_error.log;
    client_max_body_size 75M;                       //上传文件大小


    location /static {
        alias /wwwroot/destiny/destiny/static;
    }

    location / {
        include     /etc/nginx/conf/uwsgi_params;
        uwsgi_pass  127.0.0.1:9090;
    }
}

其中的 listen 80代表服务器开放80端口;
location [目录名]代表项目路径的引导;
access_log 和error_log是定义nginx访问日志和错误日志的存放路径。
“location /static”中的”/static”是自己定义的项目引用静态文件时,浏览器中显示的静态资源所在的根目录名;这样的话,用户在浏览器中查看到的所有image、css或js资源都是处在http://127.0.0.1/static下的。
django静态文件的绝对路径是根据自己的实际情况来确定的,一般在自己的django的app名/static目录下,或自己python manage.py collectstatic后的路径下。像我的是在/wwwroot/destiny/destiny/static根目录下。
“location /”是指访问项目根目录时,nginx要做的事。其中需要指定 uwsgi_params文件的绝对路径,上面已经提到了;如果还有media文件��类的静态目录,仿照static的写法,自己补充。
127.0.0.1:9090是指uWSGI绑定的监听地址,这里使用了9090端口。
需要注意的是,请确认自己django的静态文件目录所有者是www用户,如果不是,请用以下命令更改静态目录权限归属者

:sudo chown -R www:www /wwwroot/destiny/destiny/static

location / {
        ......
     
    client_max_body_size 75M;                       //上传文件大小

}

 

启动nginx
在这之前,我们要先去nginx配置文件的根目录拷贝mime.types(/etc/nginx/conf/mime.types)到工程目录(/wwwroot/destiny/mime.types),和destiny.conf放在一起
否则用配置文件启动nginx会报错:

nginx: [emerg] open() "/**/**/**/mime.types" failed (2: No such file or directory)

如果nginx已经开启,先关闭nginx(service nginx stop),再执行以下命令:

nginx -c /wwwroot/destiny/destiny.conf

这里的-c 表示加载配置文件启动

posted on 2020-06-27 00:06  东门乱弹琴  阅读(114)  评论(0编辑  收藏  举报

导航