标签:rem 安装nginx code 表示 ted school 虚拟环境 location 本地
Django 自带的开发服务器性能太差,用到线上环境不合适。所以线上部署时,我们还要安装 Nginx
和 Gunicorn
,工作流程如下:
举例:去餐馆吃饭,Nginx 就是迎宾服务员,客人如果要酒水、果盘、菜单这些随手就能拿来的东西,迎宾自己就帮忙拿了;而 Gunicorn 是传菜服务员,Django 是厨师,他两一起满足客人对菜品的需求。
先连接到服务器:
在 Windows 环境开发的,推荐用 XShell 来作为远程连接的工具,简单高效。XShell 有学校及家庭版本,可以免费使用。
XShell 怎么使用就不多赘述了,随便一搜就能找到
基本就是把主机 IP、端口号(22)以及登录验证填好就能连接了。
配置ssh密钥可以参考这里
直接连接
ssh root@ip
。(ip
就是主机IP地址)这里默认你已经装好了Python环境,没装好的话装好了再继续。
接下来就是要改一下 Django 的配置文件 settings.py
:
settings.py
# 关闭调试模式
DEBUG = False
# 允许的服务器(*代表全部都允许)
ALLOWED_HOSTS = [‘*‘]
# 静态文件收集目录
STATIC_ROOT = os.path.join(BASE_DIR, ‘collected_static‘)
ALLOWED_HOSTS
指明了允许访问的服务器名称或 IP,星号表示允许所有的请求。实际部署时请改成你的域名或 IP,比如ALLOWED_HOSTS = [‘.dusaiphoto.com‘, ‘127.0.0.1‘]
。STATIC_ROOT
指定的地址了。环境一般是需要在服务器上重新生成的,因此我们需要把开发中用到的库列一个清单,以便在服务器上统一安装。在本地虚拟环境中输入:
pip freeze > requirements.txt
项目中就多了个 requirements.txt
文件,里面记录了项目需要的库的清单。
将项目打包好,传入服务器中:
Windows下,xshell中输入rz
选择文件进行传输(sz可以从服务器中回传)
Mac/Linux下,scp 本地项目路径 用户名@ip:服务器接收路径
scp /Users/aduner/project.zip root@81.70.151.147:/home/lighthouse/
在服务器中解压项目,并进入项目目录
接下来就是安装库、收集静态资源、数据迁移了:
pip install -r requirements.txt
python manage.py collectstatic
python manage.py migrate
代码部署基本就完成了,接下来配置 Nginx
为了防止系统太旧引起的各种麻烦,先升级一下库的版本:
sudo apt-get update
sudo apt-get upgrade
完成之后,接着安装nginx
sudo apt-get install nginx
启动 nginx 服务:
sudo nginx
打开浏览器,输入你的服务器公网 IP 地址
Nginx 欢迎界面出现了,如果是centos系统可能会出现centos界面,但总之会得到一个反馈。
这个默认配置显然是不能用的,所以需要重新写 Nginx 的配置文件。进入 /etc/nginx/sites-available
目录,这里是定义 Nginx 可用配置的地方。输入指令 sudo vi dusaiphoto.com
创建配置文件并打开 vi 编辑器:
centos系统下的nginx可能没有这个目录,具体可以参考这里
cd /etc/nginx/sites-available
sudo vim django_projact
在 django_projact
文件中写入:
server {
charset utf-8;
listen 80;
server_name xxx.xxx.xx.x; # 改成你的 IP
location /static {
alias /home/sites/dusaiphoto.com/django_blog/static; # 根据自己的来
}
location /media {
alias /home/sites/dusaiphoto.com/django_blog/media; # 根据自己的来
}
location / {
proxy_set_header Host $host;
proxy_pass http://unix:/tmp/xxx.xxx.xx.x.socket; # 改成你的 IP
}
}
此配置会监听 80 端口(通常 http 请求的端口),监听的 IP 地址写你自己的服务器公网 IP。
配置中有3个规则:
如果已经申请域名,就把配置中有 IP 的地方都修改为域名
写的只是 Nginx 的可用配置,所以还需要把这个配置文件链接到在用配置上去:
ln -s /etc/nginx/sites-available/dusaiphoto.com /etc/nginx/sites-enabled
至此 Nginx 就配置好了,接下来搞定 Gunicorn
。
先回到项目所在的目录,并且进入虚拟环境,然后输入:
(env) ../django_blog_tutorial$ pip3 install gunicorn
(env) ../django_blog_tutorial$ sudo service nginx reload
(env) ../django_blog_tutorial$ gunicorn --bind unix:/tmp/118.31.35.48.socket my_blog.wsgi:application
这里的三个步骤分别是:
Gunicorn
Nginx
服务Gunicorn
启动 Gunicorn 也是一样,如果你已经有域名了,就把套接字中的 IP 地址换成域名;wsgi 字眼前面是项目的名称。另外
sudo service nginx reload
可替换成sudo service nginx restart
,区别是 reload 只重载配置文件,restart 重启整个服务。
接下来用浏览器访问服务器试一下:
大功告成
标签:rem 安装nginx code 表示 ted school 虚拟环境 location 本地
原文地址:https://www.cnblogs.com/aduner/p/14224872.html