Django项目快速部署
Abstract: 项目快速部署(Nginx+Mysql+uwsgi)
安装 Nginx
yum install nginx
或 apt-get install nginx
安装 Mysql
检查是否安装过Mysql
rpm -qa | grep mysql
如果安装过,使用rpm -e [filename]
删除创建文件夹放安装包
下载安装包
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
安装Mysql
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server
给权限
chown mysql:mysql -R /var/lib/mysql
或者 bash <(curl -s -S -L https://lhdream.github.io/LinuxBash/installMySQL.sh)
安装 uwsgi
查看 Python 版本
python --version
安装uwsgi
pip3 install uwsgi
或pip install uwsgi
安装第三方库
pip install -r requirements.txt
或pip3 install -r requirements.txt
配置 Nginx
进入配置文件夹
cd /etc/nginx/conf.d
编写配置文件
模板如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21server {
listen 80;
server_name [服务器ip];
location /static/ {
root [静态文件目录];
} #设置静态文件根目录
location /media/ {
root [媒体文件目录];
} #设置媒体文件根目录
location / {
include uwsgi_params;
uwsgi_read_timeout 600;
uwsgi_connect_timeout 600;
uwsgi_send_timeout 600;
uwsgi_pass unix:[uwsgi.sock路径];
} #如果非静态或媒体文件,交由uwsgi处理
}
配置 uwsgi
进入项目目录,在和 manage.py 同级的目录下创建 uwsgi.ini
编写配置文件
模板如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28[uwsgi]
chdir = [项目目录]
#项目根目录
wsgi-file = [wsgi.py路径]
module = [项目名].wsgi:application
#指定wsgi模块下的application对象
socket = [存放uwsgi.sock的路径]
#socket = 0.0.0.0:8000
#对本机8000端口提供服务
master = true
#主进程
# 以上4个是核心配置项
#vhost = true //多站模式
#no-site = true //多站模式时不设置入口模块和文件
#workers = 2 //子进程数
#reload-mercy = 10
#vacuum = true //退出、重启时清理文件
max-requests = 1000
#limit-as = 512
#buffer-size = 30000
pidfile = /var/run/uwsgi.pid
#pid文件,用于下脚本启动、停止该进程
daemonize = [日志文件的路径]
#日志文件
disable-logging = true
#不记录正常信息,只记录错误信息
配置 Mysql
启动 Mysql服务
systemctl start mysqld.service
查看服务状态
service mysqld status
查看初始密码
grep password /var/log/mysqld.log
进入 Mysql
mysql -u root -p
按提示修改 root 用户密码
创建项目使用数据库和用户
create database [数据库名];
grant all on [数据库名].* to '[用户名]'@'localhost' identified by '[密码]';
导入 sql 文件
use [数据库名];
source [sql文件路径];
创建 uwsgi 服务进入目录
进入 init.d 目录
cd /etc/init.d/
创建三个文件
uwsgi-start.sh
1
2
3
4
5
export LD_LIBRARY_PATH="/usr/local/lib"
uwsgi --ini [uwsgi.ini路径]uwsgi-stop.sh
1
2
3
uwsgi --stop [uwsgi.pid路径]uwsgi-restart.sh
1
2
3
uwsgi --reload [uwsgi.pid路径]
Django一些操作
python manage.py collectstatic
python manage.py makemigrations
python manage.py migrate
运行服务
service nginx start
service uwsgi start
service mysql.service start
其他
- 需要在服务器控制台设置安全组
- 访问服务器ip无反应,检查nginx服务和日志
- 访问服务器nginx显示错误,检查nginx日志和uwsgi日志
- uwsgi日志出现conn 和 str没有default属性时,检查setting.py中的登录信息
- DEBUG改为False