时光飞逝,机会就在我们眼前,学会把握机遇。

Django部署到服务器

  •  小涛
  •   Django部署
  •  2018-12-27
  •  1117 人已阅读

用Nginx+uWSGI部署

第一步:安装uWSGI
注意:
1)在系统环境安装,非虚拟环境
2)使用对应python版本安装
3)要先安装python开发包

root@iZwz98z8juypkzatn41qjbZ:~# pip3 install uwsgi
第二步:测试uwsgi是否正常
在/home下新建test.py 文件,内容如下
def application(env, start_response):
   start_response('200 OK', [('Content-Type','text/html')])
   return [b"Hello World"] # 在终端下运行 注意:需要开启端口才可以正常访问 uwsgi --http :8001 --wsgi-file test.py
第三步:用uwsgi的http协议访问django写的网站
# 执行命令可以测试自己的项目
uwsgi --http :8001 --chdir /home/mysite --home /home/mysite_env --module mysite.wsgi:application

启动成功后,就能使用ip+端口号访问到自己的网站了;但是发现样式全都不见了;接下来就用Nginx来处理

第四步:安装Nginx
apt-get update
apt-get install nginx
# 如果当前用户不是root用户,在命令前加 sudo
第五步:配置Nginx
## 查看sites-enabled目录下的软连接(default)
root@iZwz98z8juypkzatn41qjbZ:/etc/nginx/sites-enabled# ls
default
## 删除sites-enabled目录下的软连接(default)
root@iZwz98z8juypkzatn41qjbZ:/etc/nginx/sites-enabled# rm default
root@iZwz98z8juypkzatn41qjbZ:/etc/nginx/sites-enabled# ls

## 查看sites-available可用目录
root@iZwz98z8juypkzatn41qjbZ:/etc/nginx/sites-available# ls
default
## 在sites-available可用目录下新建一个mysite.conf文件
root@iZwz98z8juypkzatn41qjbZ:/etc/nginx/sites-available# vim mysite.conf

mysite.conf的配置:

server {
  listen 80; # 监听端口
  server_name mysite;
  charset utf-8; # 编码集

# 客户端大小
  client_max_body_size 75M;

# 静态文件的相关目录
  location /static {
      alias /home/mysite/static;
  }

# 上传文件的目录
  location /media {
      alias /home/mysite/media;
  }

# 动态链接需转发到uwsgi
  location / {
      uwsgi_pass 127.0.0.1:8001;
      include /etc/nginx/uwsgi_params;
  }
}
加入Https的详细配置
server {
  listen 80;
  server_name tengxiaotao.top;
  rewrite ^(.*)$ https://tengxiaotao.top$1;
}

server {
  listen 443;
  server_name tengxiaotao.top;
  charset utf-8;

  ssl on;
  ssl_certificate /etc/nginx/cert/tengxiaotao.top.pem;
  ssl_certificate_key /etc/nginx/cert/tengxiaotao.top.key;
  ssl_session_timeout 5m;

  client_max_body_size 75M;

  location /favicon.ico {
      alias /home/mysite/favicon.ico;
  }

  location /static {
      alias /home/mysite/static_collected;
  }

  location /media {
      alias /home/mysite/media;
  }

设置软链接到sites-enabled**

root@iZwz98z8juypkzatn41qjbZ:/etc/nginx# ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/mysite.conf

查看Nginx是否有问题: nginx -t

root@iZwz98z8juypkzatn41qjbZ:/etc/nginx# nginx -t
# 出现如下是没问题的
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重启Nginx: service nginx restart

root@iZwz98z8juypkzatn41qjbZ:/etc/nginx# service nginx restart

回到/home目录下创建mysite_uwsgi目录,用于管理uwsgi的相关文件;在mysite_uwsgi的目录下创建mysite.ini

mkdir mysite_uwsgi
vim mysite.ini

mysite.ini的配置

[uwsgi]
# 项目的目录
chdir = /home/mysite
# 虚拟环境目录
home = /home/mysite_env
module = mysite.wsgi:application

# 启动的主程序
master = True
# 进程数
processes = 4
# 每个请求的超时时间
harakiri = 60
# 最大的请求
max-requests = 5000

socket = 127.0.0.1:8001
uid = 1000
gid = 2000

# 启动主进程
pidfile = /home/mysite_uwsgi/master.pid
# 后台运行
daemonize = /home/mysite_uwsgi/mysite.log
# 服务器退出自动回收
vacuum = True
启动uwsgi
uwsgi --ini /home/mysite_uwsgi/mysite.ini

查看uwsgi进程

ps -aux | grep uwsgi
其他参考
正常关闭uwsgi进程:uwsgi --stop /home/mysite_uwsgi/master.pid
强制关闭全部uwsgi进程:ps -aux | grep uwsgi |awk '{print $2}'|xargs kill -9
重新加载uwsgi:uwsgi --reload /home/mysite_uwsgi/master.pid
参考文档
(Django官网)https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/uwsgi/
(uwsgi中文)https://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/tutorials/Django_and_nginx.html
(uwsgi英文)https://uwsgi.readthedocs.io/en/latest/tutorials/Django_and_nginx.html
(自强学堂)https://code.ziqiangxuetang.com/django/django-nginx-deploy.html
  很赞哦!(0)
关闭

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

 发表评论  请文明留言
2 条评论
ZLOE (2019-01-26 17:50:30):

软连接不好管理,如果你需要运行多个网站的话,就麻烦了

回复
小涛 (2018-12-28 00:19:28):

底部的footer,有点小问题;先这样吧,css好难

回复