xshell启动nginx命令_Django项目部署---Nginx&Gunicorn(入门部署)

f71946979403df30ff1d30d0111af7da.png

一.工作流程

客户端发来 http 请求,Nginx 作为直接对外的服务器接口,对 http 请求进行分析
如果是静态资源请求,则由Nginx自己处理(效率极高)
如果是动态资源请求,则把它转发给 Gunicorn
Gunicorn 对请求进行预处理后,转发给 Django,最终完成资源的返回

二.远程连接(百度教程)

用户名:密码:!!

连接成功后,就能在 XShell 窗口中看到阿里云的欢迎字样了:
​
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-151-generic x86_64)
​
 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
​
Welcome to Alibaba Cloud Elastic Compute Service !
​
root@*********:~$ 

三.代码部署

1.升级一下库的版本:

​
~$ sudo apt-get update
~$ sudo apt-get upgrade
完成之后,接着安装需要的几个包:
~$ sudo apt-get install nginx
~$ sudo apt-get install python3
~$ sudo apt-get install python3-pip
~$ sudo apt-get install git
~$ sudo pip3 install virtualenv
分别安装了 nginx、python3、pip、git、virtualenv。其中 python3 和 pip3 的写法是因为阿里云自带了 Python2.7,把它们区分一下。之前开发时虚拟环境用的 python 自带的,为了避免读者的版本不同造成的各类错误,稳妥起见用 virtualenv 库来创建虚拟环境,操作步骤都是差不多的。

2.修改Djang配置文件

testblog/settings.py
​
# 关闭调试模式
DEBUG = False
​
# 允许的服务器
ALLOWED_HOSTS = ['.jeiban.com','IP']  
​
# 静态文件收集目录
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')

3.生成库清单

虚拟环境一般是需要在服务器上重新生成的,因此我们需要把开发中用到的库列一个清单,以便在服务器上统一安装。在本地虚拟环境**中输入:

pip freeze > requirements.txt

项目中就多了个 requirements.txt 文件,里面记录了项目需要的库的清单。然后将项目上传到 GitHub。

4.为项目创建目录(xshell命令)

给项目代码创建目录并进入此目录:
~$ mkdir -p /home/sites/blogproject
~$ cd /home/sites/blogproject

5.从 GitHub 中拉取项目代码:

../blogproject$ git clone https://github.com/StarsSkys/testblog.git

完成之后可以输入 ls 指令,看看代码文件夹是否正常生成了。

6.在服务器生成虚拟环境:

../blogproject$ virtualenv --python=python3.5 env
../blogproject$ source env/bin/activate
(env) ../blogproject$ 

7.安装库、收集静态资源、数据迁移:

(env) ../blogproject$ cd testblog
(env) ../testblog$ pip3 install -r requirements.txt
(env) ../testblog$ python3 manage.py collectstatic
(env) ../testblog$ python3 manage.py migrate

四.配置Nginx

前面我们安装了 Nginx ,先来试试安装是否正常。启动 nginx 服务:

(env) ~$ sudo service nginx start

打开浏览器,输入你的服务器公网 IP 地址

1.配置

(env) ~$ cd /etc/nginx/sites-available
(env) /etc/nginx/sites-available$ 
(env) /etc/nginx/sites-available$ sudo vi jeiban.com

2.注意(VI使用)

使用i或者a命令进入可编辑状态
按Esc退回vi命令模式
输入英文的:转换到末行模式
输入wq保存
回车

回到正题,用 vi 在 jeiban.com 文件中写入:

server {
  charset utf-8;
  listen 80;
  server_name www.jeiban.com;
​
  location /static {
    alias /home/sites/blogproject/testblog/collected_static;
  }
​
  location /media {
    alias /home/sites/blogproject/testblog/media;
  }
​
  location / {
    proxy_set_header Host $host;
    proxy_pass http://unix:/tmp/www.jeiban.com.socket;
  }
}

此配置会监听 80 端口(通常 http 请求的端口),监听的 IP 地址写你自己的服务器公网 IP

配置中有3个规则:

  • 如果请求 static 路径则由 Nginx 转发到目录中寻找静态资源
  • 如果请求 media 路径则由 Nginx 转发到目录中寻找媒体资源
  • 其他请求则交给 Django 处理
  • 写好后就退出 vi 编辑器,回到命令行。因为我们写的只是 Nginx 的可用配置,所以还需要把这个配置文件链接到在用配置上去:
    (env) ../sites-available$ sudo ln -s /etc/nginx/sites-available/http://jeiban.com /etc/nginx/sites-enabled
    至此 Nginx 就配置好了,接下来搞定 Gunicorn
    若怎么配置都只能看到 Nginx 欢迎页面,有可能是 sites-enabled 目录中的 default 文件覆盖了你写的配置。将 default 文件删掉就可以正常代理自己的配置文件了。

五.Gunicorn

回到项目所在的目录,并且进入虚拟环境,然后输入:

             $ cd /home/sites/blogproject
(env) ../testblog$ pip3 install gunicorn
(env) ../testblog$ sudo service nginx reload   #重启 Nginx 服务
(env) ../testblog$ gunicorn --bind unix:/tmp/www.jeiban.com.socket testblog.wsgi:application             #启动 Gunicorn
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值