Django项目部署:CentOS7+Nginx+uwsgi
2019-09-25 本文已影响0人
warmsirius
参考文章:
写在前面
面试好几次总是问道会不会部署,所以这篇文章记录一下我部署过程中的所有历程,从小白一步一步学会简单的Django项目部署
环境+工具
环境:CentOS7 +Python3.6.* + Django2.* + MySQL5.* + Nginx + uwsgi
工具:Mac
Step 1:软件安装
前提:本次安装需要您的服务器系统为centos7
Step 1.1:安装python3.6.2
注意: centos7 中默认安装 python2.7
Step 1.1.1:安装依赖包
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
Step 1.1.2:下载 Python3.6.2 安装包
- 先在 /usr/local/ 下面创建 python3文件夹 ,然后进入该文件夹中下载python3.6.2 的安装包
mkdir /usr/local/python3
cd /usr/local/python3
- 利用wget命令下载 python3.6.2 文件包
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
Step 1.1.3:解压 python3.6.2.tar.xz 包
- 解压安装包
tar -xvjf Python3.6.2.tar.xz
- 并初始化配置
cd Python3.6.2
./configure --prefix=/usr/local/python3
Step 1.1.4:编译并安装 Python3.6.2
make && make install
Step 1.1.5:创建软链接
- 因为我们安装在了 /usr/local 下面,所以创建以下软链接,可以直接 使用python3、pip3,而不需要我们到 /usr/local/python3/bin/python3 和 /usr/local/python3/bin/pip3 下面才可以使用 python3, pip3
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
验证: 安装完成后,在服务器中输入
python3
如果安装成功会出现:
Python 3.6.2 (v3.6.2:d48ecebad5, Dec 18 2017, 21:07:28)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
Step 1.2:安装 Django
- 直接 pip3 安装Django即可
pip3 install django
Step 1.3:安装 MySQL
Step 1.3.1:更新 yum 源
yum update
Step 1.3.2:下载 mysql源安装包
- wget下载 mysql源安装包
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
- 检查 mysql源是否安装成功
yum repolist enabled | grep "mysql.*-community.*"
如果安装成功,会有相应的记录显示出来
Step 1.3.3:安装 MySQL服务端
yum install mysql-community-server
Step 1.3.4:启动 MySQL服务器
- 启动 MySQL服务器
systemctl start mysqld
- 查看 MySQL服务器 的启动状态
systemctl status mysqld
如果成功,会出现
...
Active: active (running) since 三 2019-03-27 11:24:01 CST; 9h ago
...
Step 1.3.5:设置 MySQL开机启动
systemctl enable mysqld
systemctl daemon-reload
以上步骤是 mysql的安装步骤
注意: 此时mysql中root用户的密码是初始密码,系统生成的,可通过下面命令来查看 root用户的初始密码:
grep 'temporary password' /var/log/mysqld.log
PS:修改mysql 的默认root密码
Step 1.4:安装 Nginx
Step 1.4.1:安装 rpm
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
Step 1.4.2:安装 Nginx
yum install -y nginx
以上步骤是 Nginx的安装步骤
- 查看 Nginx 默认目录
whereis nginx
输出内容为:
nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx
- 启动 Nginx
nginx
- 测试 Nginx配置是否正确
nginx -
- 查看 Nginx 的进程号
ps -ef | gref nginx
- 优雅重启 Nginx
nginx -s reload
- Nginx 服务停止
nginx -s stop
kill -9 pid
Step 1.5:安装 uwsgi
pip3 install uwsgi
Step2 Django项目上传至 服务器
Step 2.1:将Django项目压缩成 zip格式
电脑直接压缩即可
Step 2.2:Mac终端上传到服务器
- 利用 scp命令
scp -P port /dir_path/项目.zip username@服务器ip:/服务器保存的目录
Step 2.3:服务器解压 项目.zip文件
- 进入项目所在的目录,并解压 项目.zip 文件
cd 服务器保存目录
unzip 项目.zip
- 运行 项目
cd 项目文件夹
python3 manage.py runserver 127.0.0.1:9000
项目运行成功会出现以下提示:
Performing system checks...
System check identified no issues (0 silenced).
March 27, 2019 - 13:08:32
Django version 2.1.7, using settings 'auto_luffy.settings'
Starting development server at http://127.0.0.1:9000/
Quit the server with CONTROL-C.
注意: 如果项目运用的是 mysql数据库,可能出现报错提示:没有pymysql库,此时,安装 pymysql库即可:
pip3 install pymysql
Step 3: Django程序配置 uwsgi
Setp 3.1:创建启动uwsgi的配置文件
- 进入项目文件夹中,然后创建 项目名.ini
cd 项目文件
vi 项目名.ini
[uwsgi]
# 通过uwsgi访问django需要配置成http
# 通过nginx请求uwsgi来访问django 需要配置成socket
# 9000 是django的端口号
socket = :9000
# web项目根目录,
# 就是你的Django 项目的存储位置
chdir = /auto_luffy
# module指定项目自带的的wsgi配置文件位置
# 这里的auto_luffy 对应你的项目名字
module = auto_luffy.wsgi
# 允许存在主进程
master = true
# 开启进程数量
processes = 4
# 服务器退出时自动清理环境
vacuum = true
# 设置日志文件
daemonize = UWSGI.log
# 项目中wsgi的文件目录,相对于项目目录
wsgi-file = auto_luffy/wsgi.py
# 存放进程编号的文件
pidfile = uwsgi.pid
Step 4: 将django的静态文件收集到制定目录
想要uwsgi处理静态文件,需要先将django的静态文件收集到制定目录,然后再设置对应关系。
Step 4.1:收集django静态文件
- 在Django项目的配置文件 settings.py 中添加
STATIC_ROOT = os.path.join(BASE_DIR,"allstatic")
Step 4.2:设置uwsgi静态文件对应关系
uwsgi --http :9005 --chdir 项目地址 --wsgi-file 项目名/wsgi.py --master --processes 4(注释:和3.1配置的processes的个数一致) --static-map /static=/项目地址/allstatic
Step 5:配置 Nginx参数
- 找到nginx的配置文件
cd /etc/nginx/conf.d
vi default.conf
- 更改 nginx的配置
server_name 服务器ip;
listen 服务器端口号;
ssl off;
#ssl_certificate /etc/nginx/chanpay.co.crt;
#ssl_certificate_key /etc/nginx/chanpay.co.key;
charset utf8;
#access_log /var/log/nginx/yuanjunjun.com.access.log main;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9000; # 和 项目名.ini文件 中的一致
uwsgi_param UWSGI_SCRIPT auto_luffy.wsgi; # 将auto_luffy 更改为你的项目名
uwsgi_param UWSGI_CHDIR /auto_luffy; #/auto_luffy 更改为项目所在的位置
}
location /static {
alias /auto_luffy/allstatic; # 将/auto_luffy/allstatic 更改为项目的静态文件的位置
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
- 测试一下是否有语法错误
nginx -t
Step 6:启动 uwsgi 和 nginx 完成部署
uwsgi --ini /auto_luffy/auto_luffy.ini(注释:step3配置的ini文件的地址) & nginx
第一版,后续再检查~~~