Django项目部署:Python3+Django2+Nginx+Uwsgi

一.版本说明

  1. 系统:Ubuntu16.04(阿里云)
  2. Python:Python3.7
  3. Django:Django2
  4. Nginx:Nginx1.10.3

二.安装软件

该操作使用的是root账号,如果不是root账号,那么需要在命令前面加sudo.示例:sudo apt-get update

1.升级系统(慎重选择)

root@iZ6x44ao8frlx0Z:~# apt-get update

root@iZ6x44ao8frlx0Z:~# apt-get upgrade

2.安装git,python3,pip

root@iZ6x44ao8frlx0Z:~# apt-get install git python3 python3-pip

3.安装Nginx

(1)安装

root@iZ6x44ao8frlx0Z:~# apt-get install nginx

(2)目录结构

安装完Nginx后,文件结构大致为:
所有的配置文件都在 /etc/nginx下;
启动程序文件在 /usr/sbin/nginx下;
日志文件在 /var/log/nginx/下,分别是access.log和error.log;
并且在 /etc/init.d下创建了启动脚本nginx。

(3)相关命令

sudo /etc/init.d/nginx start # 启动 
sudo /etc/init.d/nginx stop # 停止 
sudo /etc/init.d/nginx restart # 重启

(4)启动Nginx服务

root@iZ6x44ao8frlx0Z:~# service nginx start

在浏览器输入阿里云服务器域名(如http://47.107.136.2/),看Nginx是否启动成功:

 

四.部署代码

1.部署前的项目配置

(1)指定静态文件目录(setting.py)

# STATIC_ROOT 指明了静态文件的收集目录,即项目根目录(BASE_DIR)下的 static 文件夹。
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

(2)关闭DEBUG模式(setting.py)

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

(3)设置允许访问的域名(setting.py)

ALLOWED_HOSTS = ['*']

(4)生成requirements.txt

项目还会依赖一些第三方 Python 库,为了方便在服务器上一次性安装,我们将全部依赖写入一个叫 requirements.txt 的文本文件中。激活本地的虚拟环境(如果你使用了虚拟环境的话),并进入项目的根目录,运行 pip freeze > requirements.txt 命令:

第一步:激活虚拟环境(该操作是在git bash下操作,如果是不同的控制台,需要更换命令,如windows下是输入:activate

Administrator@OG4J4A68F2QGH4A MINGW64 /e/tool/django/mysite/venv1/Scripts (master)

$ source activate

(venv1)

Administrator@OG4J4A68F2QGH4A MINGW64 /e/tool/django/mysite/venv1/Scripts (master)

第二步:在项目根目录下运行pip freeze > requirements.txt命令

(venv1)

Administrator@OG4J4A68F2QGH4A MINGW64 /e/tool/django/mysite (master)

$ pip freeze > ./requirements.txt

这时项目根目录下会生成了一个 requirements.txt 的文本文件,其内容记录了项目的全部依赖。

2.将项目上传到码云(或者github)

略。git的使用参考廖雪峰Git教程

3.设置服务器目录结构

root@iZ6x44ao8frlx0Z:~# mkdir -p ~/sites/demo.sweeneys.com

4.创建虚拟环境:

root@iZ6x44ao8frlx0Z:~/sites/demo.sweeneys.com# python3 -m venv venv

5.从码云(或者github)把项目拉取过来:

root@iZ6x44ao8frlx0Z:~/sites/demo.sweeneys.com#
git clone https://gitee.com/sweeneys/mysite.git

6.安装项目依赖

先激活虚拟环境,再进入到项目根目录,即 requirements.txt 所在的目录,安装项目的全部依赖:

root@iZ6x44ao8frlx0Z:~/sites/demo.sweeneys.com# source venv/bin/activate
(venv) root@iZ6x44ao8frlx0Z:~/sites/demo.sweeneys.com# cd mysite/
(venv) root@iZ6x44ao8frlx0Z:~/sites/demo.sweeneys.com/mysite# pip3 install -r requirements.txt

7.收集静态文件

(venv) root@iZ6x44ao8frlx0Z:~/sites/demo.sweeneys.com/mysite#
python manage.py collectstatic

8.生成数据库

(venv) root@iZ6x44ao8frlx0Z:~/sites/demo.sweeneys.com/mysite# python manage.py migrate

9.创建超级用户

(venv) root@iZ6x44ao8frlx0Z:~/sites/demo.sweeneys.com/mysite#
python manage.py createsuperuser

10.项目启动测试

root@iZ6x44ao8frlx0Z:~/sites/demo.sweeneys.com/mysite# python3 manage.py  runserver

五.配置Nginx

先在服务器的 /etc/nginx/sites-available/ 目录下新建一个配置文件,写上下面的配置内容:

server {
    charset utf-8;
    listen 80;
    server_name demo.sweeneys.com;
    location /static {
		alias   /sites/demo.sweeneys.com/mysite/static;
    }
    location / {
        proxy_set_header Host $host;
        proxy_pass http://unix:/tmp/demo.sweeneys.com.socket;
    }
}

(venv) root@iZ6x44ao8frlx0Z:~/sites/demo.sweeneys.com/mysite# ln -s /etc/nginx/sites-available/demo.sweeneys.com /etc/nginx/sites-enabled/demo.sweeneys.com

六.uwsgi配置

1.安装全局uwsgi

root@iZ6x44ao8frlx0Z:~# apt-get install uwsgi

2.uwsgi配置

在项目的根目录下,也就是有manage.py的目录下,新建一个uwsgi.ini文件。文件名可以随便,但后缀必须是ini。

root@iZ6x44ao8frlx0Z:~/sites/demo.sweeneys.com/mysite#touch uwsgi.ini

打开uwsgi.ini文件

root@iZ6x44ao8frlx0Z:~/sites/demo.sweeneys.com/mysite#vi uwsgi.ini

uwsgi.ini 里面输入下面的配置内容:

#my_uwsgi.ini
socket = :9000
chdir=/sites/demo.sweeneys.com/mysite # 根目录
module=mysite.wsgi # django的wsgi文件
master = true # master设置
processes=2
threads=2
max-requests=2000
chmod-socket=664
vacuum=true

3.运行uwsgi

root@iZ6x44ao8frlx0Z:~/sites/demo.sweeneys.com/mysite# uwsgi --ini my_uwsgi.ini

 

猜你喜欢

转载自blog.csdn.net/cckavin/article/details/83301772
今日推荐