django项目--项目部署

项目部署

一、Django配置

1.settings.py配置

复制全局settings.py配置文件(或者直接修改),创建一个名为deploy_settings.py的副本,修改DEBUG=False。

DEBUG = False
​
# 填写你自己的ip和域名
ALLOWED_HOSTS = ["www.hhxpython.com", "localhost", "127.0.0.1"] 

2.wsgi.py配置

# 修改settings.py同目录下的wsgi.py文件
​
import os
​
from django.core.wsgi import get_wsgi_application
​
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'MyBlog.pro_settings')
​
application = get_wsgi_application()

3.生成requirement.txt文件

# 在xshell中生成requirements.txt文件(将项目中安装的包,存放到requirements.txt文件中)
​
pip freeze > requirements.txt

4.上传代码到服务器

将项目本地目录上传至服务器(各种云服务器,推荐阿里云)注册地址

方法一:

  • 使用xshell连接阿里云,通过rz命令将本地目录压缩为zip后上传至服务器

  • 在云服务器上,使用unzip解压项目压缩文件

方法二:

  • 利用pycharm创建远程项目

  • 同步代码

还有很多方法,大家慢慢研究。

5.安装python3以及虚拟环境

  • 安装python3、virtualwrapper,请查看官方文档,步骤略。

  • 创建虚拟环境

    mkvirtualenv dj_pro
  • 安装项目相关包
   # 进入到虚拟环境
    workon dj_pro
    # 安装包
    pip install -r requirements.txt

6.uwsgi安装测试

# 进入到虚拟环境
workon dj_pro
​
# 安装uwsgi
pip install uwsgi

测试uwsgi是否安装成功:

# 测试py文件
​
# test.py
def application(env, start_response):
 start_response('200 OK', [('Content-Type','text/html')])
 return [b"Hello World"] # python3
 #return ["Hello World"] # python2

运行uwsgi:

uwsgi --http :8000 --wsgi-file test.py

测试uwsgi运行是否正常:

curl 127.0.0.1:8000</pre>

7.uwsgi配置

在项目根目录中创建deploy目录,新建uwsgi_conf.ini文件。

[uwsgi]
# 使用nginx连接时使用,Django程序所在服务器地址
# 选择内网IP和端口
socket=127.0.0.1:8000
​
# 项目根目录
chdir=/home/wcf/code/tztz
​
#项目中wsgi.py文件的相对目录
wsgi-file=tzproject/wsgi.py
​
# 进程数
processes=2
​
# 线程数
threads=2
​
# uwsgi服务器的角色
master=True
​
# 存放进程编号的文件
pidfile=uwsgi.pid
​
# 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。以前的runserver是依赖终端的
daemonize=logs/uwsgi.log
​
# 指定虚拟环境所在目录,不能填相对目录
virtualenv=/home/wcf/.virtualenvs/tzproject
​

8.启动uwsgi

切换到deploy目录中,创建logs文件夹,用于存放日志文件

# 启动uwsgi
uwsgi --ini uwsgi_conf.ini &
​
# 停止uwsgi
uwsgi --stop uwsgi.pid
​

二、在docker下安装并配置redis

1.下载镜像

运行docker pull下载redis镜像,注意选择版本为4.0.9

$ docker pull redis:4.0.9</pre>

2.创建容器

  1. 创建redis配置文件redis.conf

    位置随便,建议放到一起管理,这里放到~/.docker/redis

    # ~/.docker/redis/redis.conf
    # 配置项
    # 端口,其他随意
    port 6378
    # 持久存储
    appendonly yes
  1. 创建数据存放目录

    放到~/.docker/redis/data

  2. 创建容器

    docker run --network host -d -v /home/wcf/.docker/redis/data:/data -v /home/wcf/.docker/redis/redis.conf:/usr/local/etc/redis/redis.conf --name djredis redis:4.0.9 redis-server /usr/local/etc/redis/redis.conf

注意把上面的/home/wcf/.docker/redis/data/home/wcf/.docker/redis/redis.conf分别替换成你的数据目录和配置文件目录,把--name后的djredis改成你想给容器取的名字。

如果创建成功,运行docker ps就会显示刚才创建的redis

三、在docker下安装并配置nginx

1.下载镜像

运行docker pull下载nginx镜像,注意选择版本为1.14.0

$ docker pull nginx:1.14.0

2.创建容器

  1. 创建nginx配置文件default.conf注意名字不能改

    位置随便,建议放到一起管理,这里放到~/.docker/nginx

  # ~/.docker/nginx/defautl.conf
    ​
    upstream MyBlog {
     # 此处为uwsgi运行的ip地址和端口号
     server 127.0.0.1:8000;
    }
    ​
    ​
    server {
     # 监听端口
     listen      80;
    ​
     # 服务器域名或者ip地址 除了这里改成你的域名之外,其他地方都不要动
     server_name localhost hhxpython.com;
    ​
     # 编码
     charset     utf-8;

     # 文件最大上传大小
     client_max_body_size 75M;

     # 媒体文件
     location /media  {
     alias /usr/share/nginx/media;
     }

     # 静态文件
     location /static {
     alias /usr/share/nginx/static/;
     }

     # 主目录
     location / {
     uwsgi_pass  MyBlog;
     include    /etc/nginx/uwsgi_params;
     }
    }
    
  1. 创建容器
    docker run --network host --name djnginx -v /home/wcf/code/tztz/media:/usr/share/nginx/media -v /home/wcf/code/tztz/static:/usr/share/nginx/static -v /home/wcf/.docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro -d nginx:1.14.0

上面的三个 -v参数后面的值需要根据你的目录进行修改

其中/home/wcf/code/tztz/media改成你的媒体文件路径

其中/home/wcf/code/tztz/static改成你的静态文件路径

其中/home/wcf/.docker/nginx/default.conf改成你自定义的配置文件路径

注意,冒号后面的值不要动。

四、直接在云服务上安装nginx

1.Installing Nginx

# 安装nginx
sudo apt-get update 
sudo apt-get install nginx 
# 启动nginx,查看启动状态,如果启动状态未active,则代表启动成功
sudo systemctl start nginx && sudo systemctl status nginx
# 默认开启80端口,可以查看一下是否提供web服务
curl -I 127.0.0.1

2.nginx 管理命令

To stop your web server, type:

sudo systemctl stop nginx

To start the web server when it is stopped, type:

sudo systemctl start nginx

To stop and then start the service again, type:

sudo systemctl restart nginx

If you are simply making configuration changes, Nginx can often reload without dropping connections. To do this, type:

sudo systemctl reload nginx

By default, Nginx is configured to start automatically when the server boots. If this is not what you want, you can disable this behavior by typing:

sudo systemctl disable nginx

To re-enable the service to start up at boot, you can type:

sudo systemctl enable nginx

3.nginx配置

创建/etc/nginx/conf.d/nginx_dj_pro.conf文件:

upstream MyBlog {
 # 此处为uwsgi运行的ip地址和端口号
 server 172.18.168.123:8000;
}
​
server {
 # 监听端口
 listen      80;
​
 # 服务器域名或者ip地址
 server_name 39.108.191.165 ;
​
 # 编码
 charset     utf-8;

 # 文件最大上传大小
 client_max_body_size 75M;

 # 媒体文件
 location /media  {
 alias /home/Conner/MyBlog/media;
 }

 # 静态文件
 location /static {
 alias /home/Conner/MyBlog/static;
 }

 # 主目录
 location / {
 uwsgi_pass  MyBlog;
 include    /etc/nginx/uwsgi_params;
 }
}
​
# 修改sudo vim /etc/nginx/nginx.conf
# 第一行开头修改用户,将www-data改为你当前的用户
​
user username;
# 测试nginx配置文件是否正确,
sudo nginx -t -c /etc/nginx/nginx.conf
# 打印如下内容,则没问题
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
​
# 重新加载配置
sudo nginx -s reload -c /etc/nginx/nginx.conf
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容