美文网首页
Django项目部署:CentOS7+Nginx+uwsgi

Django项目部署:CentOS7+Nginx+uwsgi

作者: warmsirius | 来源:发表于2019-09-25 08:07 被阅读0次

参考文章:

写在前面

面试好几次总是问道会不会部署,所以这篇文章记录一下我部署过程中的所有历程,从小白一步一步学会简单的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

第一版,后续再检查~~~

相关文章

网友评论

      本文标题:Django项目部署:CentOS7+Nginx+uwsgi

      本文链接:https://www.haomeiwen.com/subject/hsgayctx.html