Nginx+uwsgi部署Django项目

服务器从0到1部署django项目

为了方便新手从0到1开始部署项目

这里的配置说明

阿里云服务器 Ubuntu18.04

Django 2.2

Python 3.7

cmder 软件
这个是用来连接服务器的操作比较方便
当然你也可以直接在阿里云服务器上操作

项目相关

先来看看我的项目吧

1.png

导出项目依赖的虚拟环境安装包

就是一个专门教新手部署的项目 啥也没写

知道怎么生成这个红色的r.text文件嘛??

安装 freeze

pip install freeze

2.png

导出虚拟环境的安装包

接下来

3.png

pip freeze > r.txt
就OK了

这个r.txt文件就是记录了我们虚拟环境所依赖的包的名字和版本

为了方便我们再服务器上直接下载对应的包的名字和版本

配置settings.py文件

再看看setting.py文件 设置允许任意ip访问

4.png

服务器相关

接下来看看我们的服务器吧

https://ecs.console.aliyun.com/?spm=5176.12818093.recent.decs.488716d0tjoVcM#/securityGroup/region/

配置阿里云服务器入口规则

就是开放入方向的80端口

5.png

6.png

连接服务器

我们先进入到服务器

ssh root@47.100.100.10
# 然后输入root用户的密码 因为是连接的root

一般可以通过 ssh命令进入服务器 如果你的window电脑有cmder软件的话

或者你用的是苹果Mac

你可以直接再黑屏终端敲

ssh root@你的服务器外网IP

然后输入密码

ok 第一步算是完成了

接下来 我想把我的项目弄到我的服务器上来

先要下载git

哎 等等

一个全新的服务器 好像需要先update一下

不然很多软件安装的效果都不好 比如mysql 也会有可能出现意想不到的错误

软件更新升级

那就先update一下吧

sudo apt-get update
7.png

ok 所有的软件都升级了一下

安装git

sudo apt-get install git

先进入到/home 目录 我喜欢再home目录下放项目 当然你也可以放在别的目录下

cd /home

安装完之后呢 就把我放在git上的项目clone下来

克隆项目

8.png
git clone https://gitee.com/tokiea/django_project_test.git

然后输入gitee的账户名 和密码

注意

这里我用的是gitee 码云 (因为我网速不好 gitee速度比github稍微快点)

tokiea 是我的git账户

django_project_test 是我的项目名

如果不会git的话,嗯...等过几天再讲git吧

它是一个很神奇很强大的工具,可以多人协作开发你的项目

好了,看一下/home 目录下 有没有down下来

ls
9.png

看来没问题

这个蓝色的就是了

接下来 先cd 到项目根目录

cd django_project_test

看看我的项目结构

ls
10.png

咦 怎么里面也有一个django_project_test 目录???????
再看一下我的项目吧~


11.png

原来是这样
它和我的Pycharm的项目结构是一模一样的
最上面的黑体字 django_project_test是项目根目录

接下来要怎么办呢??

我的pycharm里面是有虚拟环境的

可是我的服务器没有虚拟环境??

我得先创建一个虚拟环境

虚拟环境

在windows电脑上可以直接在pycharm上直接创建虚拟环境

在linux上怎么创建虚拟环境?

这就需要用到 virtualenv 了

可是 这个是python的包 需要先安装更新python3 的 pip

安装python3 pip

那就先安装一下python3 的pip

sudo apt-get install python3-pip

安装 virtualenv

接下来使用pip3安装 virtualenv

pip3 install virtualenv

virtualenv还需要依赖virtualenvwrapper

再来安装下virtualenvwrapper

pip3 install virtualenvwrapper

配置虚拟环境变量

mkdir $HOME/.virtualenvs

编辑 bashrc文件

vim ~/.bashrc

进入编辑状态

按键 i
按住方向键 下  直至到达最底部
按键 Enter

在bashrc文件末尾添加

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV =/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh
12.png

保存退出

按键 Esc
按键 SHIFT + !
按键 wq
按键 Enter

让刚刚编辑的文件生效

source ~/.bashrc

接下来就可以创建虚拟环境了

mkvirtualenv django_env

创建时直接进入了虚拟环境

13.png

(django_env) 代表进入了虚拟环境

在虚拟环境种安装项目依赖的包

接下来就需要安装虚拟环境必要的安装包了

就是刚刚的那个红色 的 r.txt文件

pip install -r r.txt

到这里 准备工作算是做完了

nginx相关

安装nginx了

sudo apt-get install nginx

测试下你的nginx是否启动成功

在浏览器输入你的服务器外网IP

出现以下界面算是nginx配置成功成功

14.png

编辑/etc/nginx/nginx.conf文件

编辑原nginx.conf配置文件

vim /etc/nginx/nginx.conf

找到第62行

在第62行下面添加一行内容

include /home/django_project_test/nginx.conf;
# 指定需要加载的conf文件路径
15.png

编辑项目下的nginx.conf文件

在项目目录下 创建并编辑nginx.conf文件

vim /home/django_project_test/nginx.conf

写入以下内容

# 写入
server {

    listen         80; # nginx 端口号
    server_name    39.100.100.10 
    #server_name:你的服务器外网ip
    charset UTF-8;
    # access_log      /var/log/nginx/my_django_access.log;
    # error_log       /var/log/nginx/my_django_error.log;

    client_max_body_size 75M;

    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8000; # django运行端口
        uwsgi_read_timeout 300;
        uwsgi_send_timeout 300;
        uwsgi_connect_timeout 300;
    }
    location /static {
        # 静态文件配置
        alias /home/django_project_test/static/;
     }
    #location /media {
        # 静态文件配置
        #alias /home/django_project_test/media /;
     #}
 }

重启一下 nginx

service nginx restart

修改nginx配置文件后需要重启或者重加载配置文件 service nginx reload

uwsgi相关

安装uwsgi

在虚拟环境下

pip install uwsgi

创建并配置uwsgi.ini文件

vim uwsgi.ini
# uwsgi.ini 的内容
[uwsgi]

#django 端口号

# 和nginx交互的ip端口
# 注意和项目下的nginx.conf文件中的uwsgi_pass的ip端口一样
socket = 127.0.0.1:8000

#django 目录
chdir = /home/django_project_test/

#Django 项目下 wsgi.py 文件路径
module = django_work.wsgi:application

master = true

#进程数4个的  配置
processes = 4
# 线程数5个
threads = 5
enable-threads = true
listen = 100
harakiri = 60
idle = 500
vacuum = true
# logto = /home/user/log/uwsgi.log
# 测试时不开logo日志,可以直接看到后台的print信息 以及一些错误信息
#上线时取消logoto的注释

启动项目

通过uwsgi配置文件启动项目

在刚刚编辑的 uwsgi.ini文件的同级目录下

uwsgi --ini uwsgi.ini

可以看到

16.png

打开浏览器 输入你的服务器外网IP
出现以下画面

17.png

配置完成!

其他补充

后台启动uwsgi

uwsgi -d -ini uwsgi.ini

关闭后台所有uwsgi进程

sudo pkill -f uwsgi -9

检测uwsgi是否在后台启动

ps -ef | grep uwsgi

执行代码更新

一般在配置数据库迁移命令后

python manage.py makemigrations

python manage.py migrate

:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352

推荐阅读更多精彩内容