NGINX + uWSGI +Django +ubantu下发布

先安装uWSGI :

pip install uwsgi测试测试是否安装成功:$ uwsgi --version
2.0.15测试文件:# test.py
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"] # python3
    #return ["Hello World"] # python2运行uwsgi:uwsgi --http :8000 --wsgi-file test.py

如果想要运行项目来测试

# uwsgi --http :8000 --chdir 项目路径 -w 项目.wsg --static-map=/static=static

uWSGI常用命令:

uwsgi --chdir=/path/to/your/project \
    --module=mysite.wsgi:application \
    --env DJANGO_SETTINGS_MODULE=mysite.settings \
    --master --pidfile=/tmp/project-master.pid \
    --socket=127.0.0.1:49152 \      # 可以ip地址,也可以是文件 
    --processes=5 \                 # 进程数量
    --uid=1000 --gid=2000 \         # 如果是root用户,uwsgi可以有删除权限
    --harakiri=20 \                 # 一个请求超时时间
    --max-requests=5000 \           # 一个工作进程最大请求数
    --vacuum \                      # 退出时清楚环境
    --home=/path/to/virtual/env \   # virtualenv的路径
    -- static                       # 做一个映射,指定静态文件
    --http                          # 这个就和runserver一样指定IP 端口
    --daemonize=/var/log/uwsgi/yourproject.log      # 日志 

配置项目启动文件uwsgi.ini

在项目根目录创建uwsgi.ini文件[uwsgi]# 指定IP端口
http=127.0.0.1:8000
#socket=/home/www/work/project/pro/nginx_uwsgi.socket#socket套接字,与uwsgi通信
socket = 127.0.0.1:8001#项目目录
chdir=/home/EdmureBlog/
chmod-socket=664# 启用主进程
master=true进程数
processes=4线程数
threads=2# 指定项目的application
module=EdmureBlog.wsgi
#wsgi-file=uwsgi_test.py
#stats=127.0.0.1:9000# 自动移除unix Socket和pid文件当服务停止的时候
#vacuum = true启动配置$ uwsgi --ini uwsgi.ini   # 启动uwsgi配置
[uwsgi-static] added mapping for /static => /home/EdmureBlog//static    # 启动成功
$ uwsgi --stop uwsgi.pid  # 关闭uwsgi
signal_pidfile()/kill(): Operation not permitted [core/uwsgi.c line 1659]
$ uwsgi --reload uwsgi.pid  #重新加载配置

2.安装NGINX

(1)安装NGINX

$ sudo apt-get install nginx  #安装
是否安装成功
$ ps -ef|grep -i nginx
root       6961      1  0 03:56 ?        00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data   6962   6961  0 03:56 ?        00:00:00 nginx: worker process
pala       6985   2090  0 03:57 pts/0    00:00:00 grep --color=auto -i nginx

NGINX常用命令:

$ /etc/init.d/nginx start  #启动
$ /etc/init.d/nginx stop  #关闭
$ /etc/init.d/nginx restart  #重启
$  killall nginx    杀死所有nginx

# 如果是生产环境的话Nginx正在运行,就不要直接stop start 或者 restart  直接reload就行了
# 对线上影响最低
$ /etc/init.d/nginx reload

配置/etc/nginx/nginx.conf

     server {      listen       80;          server_name  www.example.com;         charset UTF-8;         access_log  /var/log/nginx/EdmureBlog_access.log;#nginx访问日志          error_log   /var/log/nginx/EdmureBlog_error.log;#nginx错误日志   proxy_request_buffering off;  proxy_buffering off;         client_max_body_size 75M;          location / {                      include /etc/nginx/uwsgi_params;                  #uwsgi_pass unix:/home/EdmureBlog/myweb.sock;    uwsgi_pass   127.0.0.1:8001;#                  uwsgi_read_timeout 150;    #myweb.wsgi的路径    uwsgi_param  UWSGI_SCRIPT  myweb.wsgi;    uwsgi_param  UWSGI_CHDIR   /home/EdmureBlog;               root  /home/EdmureBlog/templates;    #alias  /home/wb/myweb/templates/;    index  index.html index.htm;          } #静态文件日志          location /static/ {               #autoindex on;               alias /home/EdmureBlog/static/;          } #上传文件日志          location /media/ {               #autoindex on;               alias /home/EdmureBlog/media/;          }         }
检查nginx的语法$ nginx -t  # 检查nginx语法问题nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful重启nginx$ /etc/init.d/nginx restart  #重启uwsgi默认不会加载静态文件,需要手动加载      Django项目下的setting.py设置DEBUG = False #生产下的配置,调试关了STATIC_ROOT = os.path.join(BASE_DIR, 'statics')#将静态文件都收集到此指定目录执行collectstatic命令:
python manage.py collectstatic
文章来源: NGINX + uWSGI +Django +ubantu下发布

人吐槽 人点赞

猜你喜欢

发表评论

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:NGINX + uWSGI +Django +ubantu下发布