前言
为了方便自己以后查看,记录安装部署的过程。
部署环境
| 软件 | 版本 |
|---|---|
| python | 3.6.6 |
| Django | 2.0.0 |
| nginx | 1.15.12 |
| mysql | 5.7 |
基础环境安装
nginx安装
下载nginx软件包
建议压缩包放在/usr/local/src/
wget http://nginx.org/download/nginx-1.15.12.tar.gz
解压并且编译安装
tar -zxvf nginx-1.15.12.tar.gz
cd nginx-1.15.12
./configure --prefix=/usr/local/nginx # --prefix指定了安装目录
make&make install
启动服务
/usr/local/nginx/sbin/nginx

注意:若是出现无法访问该地址,须要关闭虚拟机的防火墙
systemctl stop firewalld # 关闭
systemctl disable firewalld # 开机禁用
mysql安装
下载并安装mysql官方的Yum Repository
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm # 建议下载存放到/usr/local/src/目录下
yum -y install mysql57-community-release-el7-10.noarch.rpm
# 开始安装mysql
yum -y install mysql-community-server
mysql数据库配置
# 启动mysql
systemctl start mysqld.service
# 查看运行状态
systemctl status mysqld.service

grep "password" /var/log/mysqld.log # 查找初始密码
mysql -uroot -p "初始密码" # 上一步查找出来的密码,登录到数据库里
# 修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
其中,若是新设置的密码过于简单,数据库会报错,建议修改下密码设置规范。
mysql> set global validate_password_policy=0;
python安装
更新软件管理包和可能使用的依赖
yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
下载python3压缩包
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
解压并且安装编译
# 解压
tar -zxvf Python-3.6.6.tgz
# 进入python3目录
cd Python-3.6.6
./configure --prefix=/usr/local/python3 # 一样把python3安装指定目录下
make&make install
安装完成之后,建立软链接,添加变量,方便在终端中直接使用python3
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
同理,安装完python3后,pip3也已经安装好了,建立软连接。
ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
查看python3和pip3安装情况

virtualenv安装
为了不同版本项目管理,建议安装虚拟环境。
# 创建部署目录 /website为项目部署的路径,也可以针对虚拟环境env和网站文件www建立对应的目录
mkdir /website
cd /website/
# 创建虚拟环境
pip3 install virtualenv
# 建立软链接,方便终端使用命令virtualenv
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
# 创建虚拟环境
virtualenv python3_env
# 进入创建好的python3_env虚拟环境
source /website/python3_env/bin/activate

uwsgi和Django安装
pip3 install uwsgi -i https://pypi.douban.com/simple
pip3 install django==2.0 -i https://pypi.douban.com/simple
至此基础环境已经安装好了,可以pip3 list查看。

项目配置
这里用自己的一个项目做演示(两个app,boot和users),该django项目结合了fslayui框架,所以此处没有并没有用到静态文件/static/,在nginx配置中会讲到。

上传项目并配置settings
将项目打包上传至/website目录下,配置settings.py。

STATIC_ROOT是必须要修改的,路径值看你这边把静态文件放在那里。配置静态文件尤为重要,为后续nginx配置起作用。
添加日志目录和PID文件
# 创建logs目录
mkdir /website/logs
cd /website/logs
# 创建日志和PID文件
touch website_uwsgi.{pid,log}
进入项目中收集django后台的静态文件
cd /website/ServerWeb
# 在项目路径下搜集所有的静态文件到static下,包括admin中的。
python3 manage.py collectstatic
迁移数据库文件
python3 manage.py makemigrations
python3 manage.py migrate
安装项目所依赖的包
此处的示例项目所需要的依赖包可通过pip3 install来安装,如图:

pip3 install mysqlclient的时候若是报错无法安装,则一般解决办法为:
# 安装完mysql-devel后,再安装mysqlclient
cd /etc/yum.repos.d/
rpm -ivh http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
yum install mysql-devel
配置运行环境
uwsgi配置
添加uwsgi配置文件
当前虚拟环境已经安装好了uwsgi,添加uwsgi配置文件,进行配置。
vi /etc/init.d/website_uwsgi
[uwsgi]
//运行端口号
socket = 127.0.0.1:8000
//主进程
master = true
//多站模式
vhost = true
//多站模式时不设置入口模块和文件
no-stie = true
//子进程数
workers = 2
reload-mercy = 10
//退出、重启时清理文件
vacuum = true
max-requests = 1000
limit-as = 512
buffer-sizi = 30000
//pid文件,用于下面的脚本启动、停止该进程
pidfile = /website/logs/website_uwsgi.pid
daemonize = /website/logs/website_uwsgi.log
添加快捷启动脚本
vi /etc/init.d/website_uwsgi
其中,变量的路径值是可以变的。
#!/bin/bash
NAME='website_uwsgi'
DAEMON='uwsgi'
CONFIGFILE="/website/$NAME.ini"
PIDFILE="/website/logs/$NAME.pid"
SCRIPTNAME="/etc/init.d/$NAME"
do_start() {
$DAEMON $CONFIGFILE || echo -n "uwsgi running"
}
do_stop() {
$DAEMON --stop $PIDFILE || echo -n "uwsgi not running"
rm -f $PIDFILE
echo "$DAEMON STOPED."
}
do_reload() {
$DAEMON --reload $PIDFILE || echo -n "uwsgi can't reload"
}
do_status() {
ps aux|grep $DAEMON
}
case "$1" in
status)
echo -en "Status $NAME: \n"
do_status
;;
start)
echo -en "Starting $NAME: \n"
do_start
;;
stop)
echo -en "Stopping $NAME: \n"
do_stop
;;
reload|graceful)
echo -en "Reloading $NAME: \n"
do_reload
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|reload}" >&2
exit 3
;;
esac
exit 0
给脚本授权
chmod 755 /etc/init.d/website_uwsgi
使用脚本启动或关闭服务
/etc/init.d/website_uwsgi start
显示相关的进程:

nginx配置
当前centos7已经安装好了nginx,还需要对nginx进行配置。
cd /usr/local/nginx/conf/
# 备份nginx.conf
cp nginx.conf nginx.con.bak
vi nginx.conf
# 在最后一个 } 前面添加如下内容,其中入口文件和根目录就是项目名字和所在目录
server {
# 设置网站运行端口
listen 8080;
server_name localhost;
location / {
include uwsgi_params;
# 必须和uwsgi中的设置一致
uwsgi_pass 127.0.0.1:8000;
# 入口文件,即wsgi.py相对于项目根目录的位置,“.”相当于一层目录
uwsgi_param UWSGI_SCRIPT bootproject.wsgi;
# 项目根目录
uwsgi_param UWSGI_CHDIR /root/website/ServerWeb;
index index.html index.htm;
client_max_body_size 35m;
}
# 静态文件目录
#location /static/ {
# alias /website/nav_project/static/;
# index index.html index.htm;
#}
}
由于之前说过该示例项目不需要在此指定静态文件的路径,所以此处静态文件目录的配置注释掉。
启动nginx服务
/usr/local/nginx/sbin/nginx -s reload。
此时就可以根据配置的端口号以及ip地址,进行访问。
如图:

小结
总结一下,在centos7部署Django项目,首先要把对应的基础环境搭好,然后再对配置文件进行修改。
特别申明:图中数据为本地数据库以及项目示例,仅供本人练习使用,并非任何产品网站的正式数据以及项目。
参考链接: