新版博客SEO优化基本完成,新老博客内容正在整合中,保证每篇文章高质量。 SiteMap RSS Github
Django部署到服务器
嘉美伯爵   2018年12月14日 12:15   Python   Django   250  

环境要求

  • Python和虚拟环境安装

Centos下Python2和Python3共存

Virtualenv/Canda 虚拟环境安装

  • Nginx 安装

Nginx 安装

  • Mysql 安装

环境配置

  • 进入虚拟环境
[root@gage bin]# cd /data/env2/pyweb/bin/
[root@gage bin]# source activate
(pyweb) [root@gage bin]# 
  • 安装 uwsgi
pip install uwsgi # 安装
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi # 建立软连接
  • django 部署前

由于我们在本地开发环境默认使用了django的server,但是生成环境下我们需要用nginx进行静态文件代理

  • 测试环境
# urls.py 解决静态文件丢失
url(r'^static/(?P<path>.*)$', serve, {'document_root': STATIC_ROOT})
# 该参数只在本地开发环境下有效
STATICFILES_DIRS = os.path.join(BASE_DIR, 'static')
# 生成环境下静态文件存放目录
STATIC_ROOT = os.path.join(BASE_DIR, "static") 
  • 生产环境

  • 上传Django项目
mkdir -p /data/wwwroot/test
# 将代码上传到该目录下
  • django 依赖安装
pip install -r requirements.txt
python manage.py migrate
python manage.py collectstatic # 静态文件收集
python manage.py runserver # 测试,若不报错,则说明没有问题

利用 uwsgi

  • 项目根目录下创建 project.xml
<uwsgi>
    <socket>127.0.0.1:8764</socket><!-- 内部端口,自定义 -->
     <chdir>/data/wwwroot/project/</chdir><!-- 项目路径 -->
    <module>blog.wsgi</module>
     <processes>4</processes> <!-- 进程数 -->
    <daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>
  • 测试 uwsgi
uwsgi --http :8000 --module shop.wsgi
/root/django1/bin/uwsgi -x /data/wwwroot/project/project.xml

利用gunicorn

  • 项目根目录下创建 gunicorn.conf
# 并行工作进程数
workers = 4
# 指定每个工作者的线程数
threads = 2
# 监听内网端口5000
bind = '0.0.0.0:5000'
# 设置守护进程,将进程交给supervisor管理
daemon = 'false'
# 工作模式协程
worker_class = 'gevent'
# 设置最大并发量
worker_connections = 2000
# 设置进程文件目录
pidfile = '/var/run/gunicorn.pid'
# 设置访问日志和错误信息日志路径
accesslog = '/var/log/gunicorn_acess.log'
errorlog = '/var/log/gunicorn_error.log'
# 设置日志记录水平
loglevel = 'warning'
  • 测试 gunicorn
gunicorn shop.wsgi
gunicorn shop.wsgi:application -c gunicorn.conf
  • nginx 配置
server {
    listen 443;
    server_name blog.gaozhe.top;
    location /static {
            alias /data/wwwroot/test/static/;
        }
    ssl on;
    ssl_certificate  /usr/local/nginx/conf/ssl/2515377_blog.gaozhe.top.pem;
    ssl_certificate_key  /usr/local/nginx/conf/ssl/2515377_blog.gaozhe.top.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
       include uwsgi_params;
       uwsgi_pass 127.0.0.1:8999;
    }
}

相关问题

  • 关闭uwsgi
pkill -f uwsgi -9

参考文档

Centos7部署Django项目

centos7 下通过nginx+uwsgi部署django应用