Denua 博客

Django部署, Nginx + Centos

发布时间: 2017-11-19 17:04   分类 : WEB    标签: Django 浏览: 613   


Django 是一个用 Python 实现的 web 框架, 使用django 部署 web 项目可以说是迅速方便, django 的许多特性都让我爱不释手, 如默认的 sqllite 数据库, 强大后台管理, 自带的 XXS 的表单验证, 基于 MVC 的设计, 写不到两百行代码就可以搭建一个网站. 这里我使用的是阿里云的 centos7 + nginx 为例, 部署第一个 django 项目. 服务器: 阿里云 centos 7.4 数据库: MariaDB 5.5.56 http代理: Nginx django: 1.11.7 先在阿里云控制台 -> 安全组 -> 配置规则 -> 添加安全组规则 > 端口范围: 80/80 > 授权对象: 0.0.0.0/0 其余默认 ### 安装 MariaDB 5.5.56 MariaDB 是 centos 中 MySQL 的替代品, 使用与 MySQL 一致 yum install -y mariadb mariadb-server yum install -y mysql-devel python-devel python-setuptools pip install mysql-python 启动 Mariadb 服务 systemctl start mariadb 登入, 修改密码, 创建数据库, 作为 django 项目的默认数据库 # mysql -u root > set password for root@localhost = password('password'); > create database www default charset=utf8; ### 安装 Nginx , uwsgi 选择 nginx 是因为 nginx 配置比较方便, 其特性完全满足适用于 django yum -y install nginx nginx # 启动 nginx 在浏览器访问服务器公网 IP 地址, 就可以看到 nginx 成功安装的提示 **安装 uwsgi** uwsgi 暂且认为它是沟通 nginx 与 django 的一座桥梁, 一个 web 服务器, 它实现了与 django 项目通信的接口 - wsgi (Web Server Gateway Interface) 协议 yum -y install uwsgi uwsgi-plugin-python pip install uwsgi ### 安装 Django 1.11 pip install django **启动一个项目** cd /home django-admin startproject www cd www mkdir static # 创建静态文件文件夹 创建完成后, 目录结构如下: www_ |_ manage.py | |_ static # 静态文件 | |_ www_ |_ __init__.py |_ settings.py # django 配置文件 |_ urls.py # 路由列表 |_ wsgi.py ### 配置 Nginx . uwsig **配置 nginx** 关于 vim 的使用查阅相关资料 cd /etc/nginx yum -y install vim vim nginx.conf 按 insert 键编辑 修改/etc/nginx/ nginx.conf server { listen 80; server_name ip; # 服务器 ip 或者域名 include /etc/nginx/default.d/*.conf; access_log /home/logs/access.log; # 日志 error_log /home/logs/error.log; location / { uwsgi_pass 127.0.0.1:3031; # uwsgi include /etc/nginx/uwsgi_params; } location /static { root /home/www/static/; # 静态文件 } } 按 esc 退出编辑, 按 shift + : 输入 wq 回车保存退出. **启动 uwsgi** cd /home mkdir logs # 用于存放日志 cd /home/www vim uwsgi.ini # uwsgi 配置 /home/www/ uwsgi.ini [uwsgi] plugin = python socket = 127.0.0.1:3031 workers = 2 threads = 2 wsgi-file = www/wsgi.py # wsgi 文件 相对django 项目的位置 chdir = /home/www # django 项目位置 master = true daemonize = /home/logs/uwsgi.log # 日志 log-maxsize = 5000000 # 日志最大大小 vacuum = true enable-threads = true # 多线程 py-autoreload = 1 # 当 django 发生改变时自动更新 配置 django settings, 修改默认数据库 vim /home/www/www/settings.py ALLOWED_HOSTS = ['ip'] # 允许 ip DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库 'NAME': 'www', 'USER': 'root', 'PASSWORD': 'password', 'HOST': '', 'PORT':'3306', } } 初始化 django python manage.py migrate 测试 项目是否配置成功 python manage.py runserver 0.0.0.0:80 访问你服务器的 ip 看到以下页面说明部署完成 ![image](https://www.denua.cn/media/kindeditor/2017-11/19/cca203b6-cd07-11e7-8e16-00163e020e5d.png) 从配置文件启动 uwsgi uwsgi --ini uwsgi.ini 重启 nginx nginx -s reload 访问服务器 ip , 如果现实 its worked 则说明部署成功 **Note** + 确定服务器 80 端口可访问, 配置安全组 + 版本不同会略微不同 + 如果 uwsgi 配置改变 或者 django 项目改变后访问 服务器 显示 服务器错误需要杀死 uwsgi 的进程后重启 ps -A # 找到 uwsgi 进程 PID kill -9 PID1 PID2 PID3 (完)

评论    

Copyright denua denua.cn