一.版本说明
- 系统:Ubuntu16.04(阿里云)
- Python:Python3.7
- Django:Django2
- 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