腾讯云轻量应用服务器搭建后端服务-基于django,nginx,uwsgi,supervisor
目录
1、防火墙设置
a. 腾讯云服务器网页端防火墙设置
b. ubuntu中使用ufw防火墙设置
2、新建django项目
3、uwsgi的安装与配置
a.安装uwsgi
b.测试使用uwsgi加载django项目
c.配置uwsgi文件
4、nginx安装与配置
a.安装nginx。
b.配置nginx文件
5、supervisor安装与配置
a. supervisor安装
b. 配置supervisor文件
以下举例是根据django默认的8000端口进行举例
首先说明一下为什么会用到这些框架或者组件。简单来说的话就是使用django的话,是为了写后端,使用uwsgi是为了启动django项目,使用nginx是为了对链接进行处理或者是反向代理,使用supervisor是为了让项目比较持续稳定的运行中,让supervisor管理uwsgi,可以在uwsgi发生意外的情况下,会自动地重启。
1、防火墙设置
为什么要先设置防火墙?那当然是因为安全,对服务器的端口进行进出口的限制。比如我们想用所有用户都可以访问8000端口,但是又不想用户访问其他端口,如22端口、3306端口、6379端口等等,这些我们都可以在服务器上进行设置。
a. 腾讯云服务器网页端防火墙设置
因为在腾讯云的服务器设置中含有防火墙的设置,所以我们先讲这个界面的防火墙设置:
点击添加规则,就可以出现以下窗口,左图的含义即是只有IP是“1.2.3.4”的用户才可访问该服务器的“22”端口,右图的含义是对访问“8000”端口的IP不进行限制;
b. ubuntu中使用ufw防火墙设置
现在我们介绍在ubuntu中使用ufw进行防火墙设置(原文参考:Ubuntu系统中防火墙的使用和开放端口_Aaron_Run的博客-CSDN博客_ubuntu开放端口)
此处不介绍ufw防火墙的安装,因为比较简单。那么如何使用ufw做如上的设置呢?答案如下啦
IP“1.2.3.4”才可访问“22”端口 | 访问“8000”端口不做限制 |
sudo ufw allow from 1.2.3.4 to any port 22 | sudo ufw allow 8000 |
如果外界访问某个端口,需要在页面端和ubuntu系统内都设置相同的端口和含义,或者只使用腾讯云网页端防火墙,关闭ubuntu系统内的防火墙。
2、新建django项目
此处不介绍django项目的新建及如何运行,具体内容可参考该链接。
3、uwsgi的安装与配置
a.安装uwsgi
使用pip命令直接安装即可。
pip install uwsgi
b.测试使用uwsgi加载django项目
进入到django项目(即manage.py文件所在目录)下,使用以下命令可以启动项目:
uwsgi --http :8000 --module mywebsite.wsgi ## 已激活虚拟环境且django和uwsgi都使用该环境
uwsgi --http :8000 --module mywebsite.wsgi --virtualenv /home/ubuntu/code_env/python_venv/env36 ## 指定django项目的虚拟环境
/home/ubuntu/code_env/python_venv/env36/bin/uwsgi --http :8000 --module mywebsite.wsgi ## 指定使用哪个虚拟环境下的uwsgi启动项目
/home/ubuntu/code_env/python_venv/env36/bin/uwsgi --http :8000 --module mywebsite.wsgi --virtualenv /home/ubuntu/code_env/python_venv/env36 ## 指定uwsgi的路径以及django的虚拟环境
## 注:如果不指定uwsgi,则会使用当前默认环境中的uwsgi--http :8000 ## 是指定端口号,此处是8000端口
--module mywebsite.wsgi ## 是指定加载的wsgi模组,应该是“Django项目名.wsgi”
--virtualenv /home/ubuntu/code_env/python_venv/env36 ## 是指定django项目的虚拟环境, 不指定的话使用默认的python环境(即PATH中第一个python环境)
启动项目之后,如果能够在浏览器访问到8000端口网页,说明uwsgi可以启动项目了。
c.配置uwsgi文件
在django项目路径下,新建一个ini文件,名字自定义,此处命名为“mywebsite.ini”,然后填写以下代码:
[uwsgi]
# Django项目的路径
chdir = /home/ubuntu/test_backend/mywebsite
# Django的wsgi文件
module = mywebsite.wsgi
# Django项目的Python虚拟环境的路径
home = /home/ubuntu/code_env/python_venv/env36# 进程相关的设置
# 主进程
master = true
# 最大数量的工作进程
processes = 10# http = 0.0.0.0:8000 ## 因为是与nginx链接的,所以不需要指定端口,会自动使用nginx指定的端口。所以该项不需要
# socket文件路径,绝对路径(不用手动创建,和nginx链接后自动创建)
socket = /home/ubuntu/test_backend/mywebsite/mywebite.sock
# 设置socket的权限
chmod-socket = 666
# 退出的时候是否清理环境
vacuum = true
配置完成之后,使用和b点类似的命令启动django项目,如下:
uwsgi --ini mywebsite.ini ## 已进入到django项目路径下
uwsgi --ini /home/ubuntu/test_backend/mywebsite/mywebsite.ini ## 使用绝对路径ini启动项目
/home/ubuntu/code_env/python_venv/env36/bin/uwsgi --ini /home/ubuntu/test_backend/mywebsite/mywebsite.ini ## 如果电脑中存在多个uwsgi,指定uwsgi和指定路径ini来启动对应的django项目
能启动django项目即可,因为我们还没有配置nginx,所以网页端暂时无法访问。
4、nginx安装与配置
a.安装nginx。
直接使用linux命令即可。
sudo apt install nginx ## ubuntu安装命令
sudo yum install nginx ## centos安装命令
## 如果centos无法安装,是因为yum源不提供nginx的安装,可以通过切换yum源的方法获取安装。或者通过压缩包安装,可参考:https://blog.csdn.net/qq_37345604/article/details/90034424
b.配置nginx文件
通常nginx的配置文件都存放在"/etc/nginx/conf.d"文件夹下,所以进入该文件夹,新建一个conf文件,名字自定义,此处命名为“mywebsite.conf”,然后填写以下代码:
# 配置服务器
server {# 监听的端口号listen 8000;# 域名server_name 192.168.3.104;charset utf-8;location /static {alias /home/ubuntu/test_backend/mywebsite/static;}# 请求到django服务器location / {# 注意此处的socket和uwsgi的socket路径一致uwsgi_pass unix:/home/ubuntu/test_backend/mywebsite/mywebsite.sock;# uwsgi_params文件地址include /etc/nginx/uwsgi_params;}
}
注意,此处需要将“/static”的链接引到django的静态文件夹下,虽然django中也有相关设置,但是当django项目settings中的debug改为False,静态文件的链接都无法使用,所以就需要使用nginx来引到django的静态文件夹。要特别注意这一点。
配置完成后,运行以下命令来测试配置文件和重启nginx:
sudo service nginx configtest ## 测试配置文件是否设置成功
service nginx restart ## 重启nginx,配置文件没有问题就可以重启nginx了
重启nginx成功之后,我们就可以在浏览器访问8000端口的网页了。
5、supervisor安装与配置
a. supervisor安装
安装supervisor。直接使用linux命令安装即可。
sudo apt-get install supervisor ## ubuntu安装命令
sudo yum install supervisor ## centos安装命令
b. 配置supervisor文件
通常supervisor的配置文件都存放在"/etc/supervisor/conf.d"文件夹下,所以进入该文件夹,新建一个conf文件,名字自定义,此处命名为“mywebsite.conf”(虽然此处和nginx配置的名称一样,但两文件所在文件夹不一样,含义也不一样),然后填写以下代码(如有错误,请删除注释,supervisor的配置文件含义和常用命令请参考):
[program:mywebsite]
## 请记住上面这个程序名,一会启动该程序需要用到
## 指定uwsgi和指定ini启动指定django项目
command=/home/ubuntu/code_env/python_venv/env36/bin/uwsgi --ini /home/ubuntu/test_backend/mywebsite/mywebsite.ini
## 项目路径
directory=/home/ubuntu/test_backend/mywebsite
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
user=root
## django的虚拟环境
environment=PATH="/home/ubuntu/code_env/python_venv/env36/bin"
## 标准错误日志重定向到标准输出日志文件
redirect_stderr=true
## 标准输出日志文件路径
stdout_logfile=/home/ubuntu/test_backend/mywebsite/log/stdout_log.log
配置完成后就需要启动supervisor的这个程序了。因为现在是使用supervisor来运行uwsgi命令,所以第3步最后运行的uwsgi也需要关闭了(ctrl+C即可)。那现在使用以下命令运行uwsgi来启动django项目:
## 该命令是运行指定程序名,mywebsite就是上面配置文件一开始定义的(该命令不可用时使用下面的命令)
sudo supervisorctl start mywebsite
## 或者使用以下命令根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启:
sudo supervisorctl update
## 或者使用以下命令载入最新的配置文件,停止原有进程并按新的配置启动
sudo supervisorctl reload
运行成功之后,我们就可以在浏览器中访问8000端口的网页了。即使在uwsgi发生意外的情况下,也会自动重启,不用我们自己启动了。
注:本文主要参考文章是“Ubuntu+django+Nginx+uwsgi+supervisor部署”
腾讯云轻量应用服务器搭建后端服务-基于django,nginx,uwsgi,supervisor相关推荐
- 腾讯云轻量应用服务器搭建即时通信 IM系统
我们如果想要搭建一个自己的即时通信系统,实现与好友的单聊或者创建群聊,这里推荐大家使用腾讯云的即时通信IM产品,部署十分简单,并且提供了免费版套餐可供试用.下面为大家介绍如何使用腾讯云轻量应用服务器搭 ...
- 腾讯云轻量应用服务器搭建wordpress之发送注册验证邮件
最近在使用腾讯云轻量应用服务器搭建一个wordpress博客,用户使用注册功能时,需要给用户的邮箱发注册验证邮件. 2021.02.08更新:最后找了很久,用了一个插件能发出去邮件!还能替换原始的登录 ...
- 使用腾讯云轻量应用服务器搭建gitlab服务器
使用腾讯云轻量应用服务器搭建gitlab服务器 前言:代码平台托管安全吗? 之前就有某科集团,在网络上面透露,托管在某云公共代码托管平台的源码发生泄漏,造成至少40多家企业200多个项目代码泄漏.所以 ...
- 使用腾讯云轻量应用服务器搭建dplayer播放器弹幕服务器
说明 Dplayer播放器就不过多介绍了,不知道的可以查看官方项目地址:点击查看,算是目前国内比较火的视频播放器,貌似很多人喜欢用弹幕功能,而官方提供的弹幕api已经挂了,所以我们想使用的话,要么使用 ...
- 使用腾讯云轻量应用服务器搭建网络质量拨测工具 SmokePing
本文原载于 https://www.idc.moe/archives/qcloud-Lighthouse-SmokePing.html 作者:iks SmokePing 是由 RRDtool 的作者 ...
- 【教程】腾讯云轻量应用服务器搭建聊天室
前言 前些日子听朋友说,他们领的腾讯云轻量246还在吃灰,我在萌备聊天室里看见了这个系统 感觉挺不错 那这篇文章就教大家用宝塔来搭建一个聊天室 介绍 Fiora系统非常简洁,而且也有很多功能,基于 n ...
- 如何使用腾讯云轻量应用服务器搭建免费开源企业CMS?
1.背景概述 腾讯云轻量应用服务器是新一代面向中小企业及开发者的云服务器产品,简单易用,一站式融合多款云服务,能帮助用户在云端快速构建网站.博客.电商.论坛等各类应用以及各类开发测试环境. Pboot ...
- 如何搭建一个自己的音乐播放器-使用腾讯云轻量应用服务器搭建YesPlayMusic网易云播放器
项目简介 本文使用的是YesPlayMusic项目,这是一款高颜值的第三方网易云播放器,它完全可以作为网易云官方应用的替代品.而且还拥有一些网易云官方应用没有的功能,比如可以自动签到,支持PWA可以直 ...
- 腾讯云轻量应用服务器搭建跨境电商的方法步骤(非常详细)
独立站火热的背后 对于中国的跨境电商平台卖家而言,2021年绝对是段低气压的时光:亚马逊掀起了一场规模庞大的"封号潮",自4月起至9月,从头部到中小品牌,粗略统计有超过5万家店铺 ...
最新文章
- 死锁的代码产生及必要条件与预防
- CSS中调用JS函数和变量
- MySQL 5.6 dump/load buffer pool实验
- 翻书插件:bookblock.js
- Java-使用字符串修改彩票程序
- NVMe驱动 请求路径学习记录
- mac电脑上简单实用的cad制图软件大全
- magento head.phtml 加载a target=_parent
- 基于预测分析表法的语法分析程序
- scrapy项目:爬取豆瓣畅销书排行榜内容(仅爬取2020年1-3页:无保存)
- 【NLP】计算所汉语词性标记集
- 基于Transformer的时空融合网络地铁客流预测模型
- 大中型 UGC 平台的反垃圾(anti-spam)工作
- 中国联通沃云----弹性云主机使用说明
- android studio使用雷电模拟器详细过程(或其他)
- 什么是ORM框架?常用的orm框架有哪些?能否不用ORM框架直接使用SQL语句创建WebAPI?
- zkSnark教程:从方程到验证
- dw如何制作图片自动切换效果_dw怎么用css做图片轮播
- 赵小楼《天道》《遥远的救世主》深度解析(122)好事、坏事是人性喜好认为,剥离好坏的认知你会更宽广
- 【C】编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。