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](https://my.oschina.net/u/570656) = 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 看到以下页面说明部署完成
从配置文件启动 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
(完)
个人博客文章链接: https://www.denua.cn/blog/article/8/