18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 建站知识 > Django手把手部署阿里云:外网ip访问,域名访问,HTTPS域名访问

Django手把手部署阿里云:外网ip访问,域名访问,HTTPS域名访问

时间:2023-02-08 00:52:01 | 来源:建站知识

时间:2023-02-08 00:52:01 来源:建站知识

平台:阿里云

涉及的内容:DNS解析,SSL证书验证,域名解析,Nginx代理,Gunicorn服务,supervisor运维。

部署结果:将Django部署在阿里云服务器上,可以通过购买的域名使用https来进行访问。

三种需求:

情况一:只需要在公网访问。该情况只需要买服务器即可,使用服务器ip地址便可以访问。

情况二:需要使用域名访问,但是不需要使用https。该情况需要在情况一下再购买域名和DNS域名解析服务。(注意,如果是国内的服务器,希望使用域名访问,服务器需要备案,需要提交文件以及需要审核时间,如果使用国外服务器,不需要备案)

情况三:需要使用https域名访问服务器。该情况需要在情况二下额外购买ssl证书。

工具:finalshell(推荐,十分好用的免费shell软件,全平台支持,用来连接服务器。SSH工具 客户端)

(由于阿里云经常更新,部分操作界面会有改变,但整体的流程是一样的)

情况一:

  1. 购买:
在阿里云通常购买“云服务器ECS”即可,具体的配置根据你的需求,购买完成后可以在控制台看到你的服务器。

2. 安装finalshell

根据平台安装好finalshell之后,连接服务器,选择ssh连接,输入ip(主机),用户名和密码,名称任意。

连接好服务器之后,安装运行项目所需要的虚拟环境(本文使用的是virtualenv,相关内容可查阅资料),并将项目上传到服务器上。

以下是我的项目结构,在/home目录下包括venv文件夹(虚拟环境)和code文件夹(项目文件目录),其中在code文件夹下,Code文件夹是配置文件夹,apps文件夹是应用文件夹(一个Django项目包含多个应用)。

3. 安装Gunicorn

进入虚拟环境

source /home/venv/bin/activatepip install gunicorn4. 安装Nginx

可以直接使用yum install nginx安装,本文安装目录在/etc/下,配置文件如下,其中/static是存储静态文件,包括css,js,imgs等,/media是存储上传文件等。

假设服务器ip为

192.168.77.58

server{ charset utf-8; listen 80; server_name 192.168.77.58; location /static { alias /home/Code/static; } location /media { alias /home/Code/media; } location /{ proxy_set_header Host $host; proxy_pass http://unix:/tmp/192.168.77.58.socket; } }收集Django项目中的静态文件:

进入项目的环境,输入

python manage.py collectstatic注意将Django项目中settings.py文件中

DEBUG = FalseALLOWED_HOSTS = ['*']以及将STATICFILES_DIRS改成

STATIC_ROOT=os.path.join(BASE_DIR,'static')将urls.py中的STATICFILES_DIRS也改成STATIC_ROOT

5. 安装supervisor

注意,supervisor需要在Python2.7环境下安装,(Python3安装不兼容)

pip install supervisorsupervisor的使用方法:Supervisor使用教程 - 飞鸿影 - 博客园

安装后很可能遇到问题:unix:///tmp/supervisor.sock no such file

解决方法:挽歌:解决unix:///tmp/supervisor.sock no such file的问题

配置方法:在配置文件最后加上

[program:Code]command=/home/venv/bin/gunicorn --bind unix:/tmp/192.168.77.58.socket Code.wsgi:applicationdirectory=/home/Codeautostart=trueautorestart=truestdout_logfile=/home/Code/log/gunicorn.logstderr_logfile=/home/Code/log/gunicorn.err6. 配置阿里云安全组

登陆阿里云——控制台——ECS实例——点击服务器名称

配置规则——入方向——快速添加

7. 启动nginx和supervisor和重新加载配置文件

PS:杀死进程的方法:

ps -ef | grep supervisor(进程名称)kill 进程号启动nginx

nginxnginx重新加载配置文件

nginx -s reload启动supervisor

supervisordsupervisor更新新的配置

supervisorctl updatesupervisor重启所有管理的应用

supervisorctl reload

情况二:

在完成情况一的基础上

  1. 购买
需要购买云解析DNS和域名,域名可以在其它域名服务商进行购买,本文对域名的购买过程不做介绍,云解析DNS在阿里云购买。

a. 免费版云解析DNS:

云解析DNS——域名解析——权威域名——添加域名:

之后选择对应域名的解析设置——添加记录

记录类型:A

记录值:ECS服务器ip地址

b. 付费版云解析DNS:

云解析DNS——域名解析——版本套餐管理

购买套餐后绑定域名,之后到权威域名处,择对应域名的解析设置——添加记录,添加方法同上。

DNS的配置就结束了。之后还需要到对应的域名服务商给对应的域名配置DNS解析服务器,对应的服务器地址为上图圈出来的http://vip1.aliyun.comhttp://vip2.aliyun.com,阿里云下的域名可能可以自动配置,其它域名服务商需要自己修改DNS配置。

阿里云下域名的DNS自动配置结果如下

2. Nginx配置

假设域名为http://www.code.com

server{ charset utf-8; listen 80; server_name www.code.com; location /static { alias /home/Code/static; } location /media { alias /home/Code/media; } location /{ proxy_set_header Host $host; proxy_pass http://unix:/tmp/www.code.com.socket; } }3. supervisor配置

配置方法:在配置文件最后加上

[program:Code]command=/home/venv/bin/gunicorn --bind unix:/tmp/www.code.com.socket Code.wsgi:applicationdirectory=/home/Codeautostart=trueautorestart=truestdout_logfile=/home/Code/log/gunicorn.logstderr_logfile=/home/Code/log/gunicorn.err4. nginx和supervisor重新加载配置文件

情况三:

在情况一和情况二的基础上

  1. 购买
在阿里云购买SSL证书即可,根据需求选择(所有的证书应该都能够开启SSL服务,即使用https进行访问,只不过可以使用的域名数目不一样,以前可以有免费版可以白嫖的,今年找不到了,嘤嘤嘤,如果哪位大佬有白嫖SSL证书的方法,麻烦指点我一下)

购买证书的时候,将证书与域名进行绑定,之后需要进行申请验证,如果域名在阿里云,会出现以下界面

此时不要关闭这个页面,同时打开云解析DNS,选择对应域名的解析设置——添加记录,将上面的解析记录添加上,在进行验证。特别注意,这个验证的记录值是随时更新的,每次打开验证界面,记录值都是不一样的,因此添加解析配置过程和验证过程要同步进行。

验证申请成功后,通过经过十分钟到二十分钟,会现实验证通过,之下下载对应的证书,会得到一个压缩包,里面有两个文件,一个是以.pem结尾,一个是以.key结尾

2. 配置nginx

在nginx下新建文件夹cert,将上面证书下载得到的两个文件上传到/etc/nginx/cert中

server{ charset utf-8; listen 443; server_name www.code.com; ssl on; ssl_certificate /etc/nginx/cert/code.com.pem; ssl_certificate_key /etc/nginx/cert/code.com.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location /static { alias /home/Code/static; } location /media { alias /home/Code/media; } location /{ proxy_set_header Host $host; proxy_pass http://unix:/tmp/www.code.com.socket; } } server{ listen 80; server_name www.code.com; rewrite ^(.*) https://$server_name$request_uri? permanent; }3. 配置阿里云安全组

登陆阿里云——控制台——ECS实例——点击服务器

配置规则——入方向——快速添加

4. nginx和supervisor重新加载配置文件

至此,三种情况的Django部署已经全部介绍完毕。

关键词:访问,把手,部署

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭