sudo ufw status
如果显示status:inactive,则键入如下指令
sudo ufw enable
得到一个与此类似的输出:
the firewall is active and enabled on system startup
如果再次检查服务的状态,则应该得到以下输出:
Status: active
之后我们可以开始使用ufw,使用如下指令打开指定端口:
sudo ufw allow [port]
例如打开HTTP工作的端口80:
sudo ufw allow 80
会得到如下输出
Rule added Rule added (v6)
上面情况表示TCP与UDP的80连接已经建立
用同样的方法再打开443(https)和22(ssh)端口:
sudo ufw allow 443 sudo ufw allow 22
# drf_vue_blog/settings.py ... # 修改项。关闭调试模式 # 关闭后 django 不再处理静态资源 DEBUG = False # 修改项。允许指定IP访问网络服务,*表示全部 ALLOWED_HOSTS = ['10.68.2.44'] # 新增项。静态文件收集目录 STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static') DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'crowdhmt',
'USER': 'debian-sys-maint', //四卡服务器的默认数据库用户名
'PASSWORD': 'NabEZt5kE7V87n54', //四卡服务器的默认数据库密码
'HOST': '127.0.0.1',
'PORT': '3306',
} }
创建虚拟环境(本文使用已有环境mytorch),安装nginx
apt-get install nginx
进入项目目录,安装依赖、收集静态资源并迁移数据库
(mytorch) ../drf_vue_blog$ pip3 install ...
(mytorch) ../drf_vue_blog$ python3 manage.py collectstatic
(mytorch) ../drf_vue_blog$ python3 manage.py migrate
最后启动 nginx:
(mytorch) ~$ service nginx start
在浏览器中访问服务器的公网IP,看看效果
sudo vim /etc/nginx/sites-available/crowdhmt.com
写入如下:
server {
charset utf-8;
listen 80;
server_name 10.68.2.44; # 改成你的 IP # 定义 server 的根路径
# 修改为你的项目的路径
root /data/user8302433/CrowdHMT/drf_vue_blog; # 以下项都是在给静态资源配置转发路径
# 注意路径名称一定要正确
# 特别是中横线 - 和下划线 _ 别弄混了
location /static {
alias /data/user8302433/CrowdHMT/drf_vue_blog/collected_static;
} location /media {
alias /data/user8302433/CrowdHMT/drf_vue_blog/media;
} # 将接口及后台请求转发给 Gunicorn
location ~ (^/api|^/admin) {
proxy_set_header Host $host;
proxy_pass http://unix:/tmp/10.68.2.44.socket; # 改成你的 IP
} # 其他所有请求均直接请求 Vue 打包的 html 文件
location / {
try_files /collected_static/index.html =404;
}
}
此配置会监听 80 端口(通常 http 请求的端口),监听的 IP 地址写你自己的服务器公网 IP。
配置中有3个核心规则:
写好后就退出vim编辑器,回到命令行。因为我们写的只是 Nginx 的可用配置,所以还需要把这个配置文件链接到在用配置上去:
(mytorch) ~$ ln -s /etc/nginx/sites-available/myblog /etc/nginx/sites-enabled
至此 Nginx 就配置好了,接下来搞定 Gunicorn
直接删去default后会遇到问题(很多教程也不说,坑),需要进一步修改,进入/etc/nginx,打开nginx.conf,在60行左右修改代码如下(把原来include .../default给删了):
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/crowdhmt.com;
如果更改了 Nginx 的配置文件,需要重启 Nginx 服务:
service nginx restart
4.Gunicorn及测试
下面的三条命令分别是安装 Gunicorn 、 重启 Nginx 和 启动 Gunicorn
(mytorch) ~$ pip3 install gunicorn (mytorch) ~$ service nginx restart # 将 IP 改为你的公网 IP # .wsgi 前面为 Django 配置文件所在的目录名 (mytorch) user8302433@LW-Super-Server:~/CrowdHMT/drf_vue_blog$ gunicorn --bind unix:/tmp/10.68.2.44.socket drf_vue_blog.wsgi:application
# Gunicorn 成功启动后命令行提示如下 [2022-12-05 00:24:55 +0800] [524047] [INFO] Starting gunicorn 20.1.0 [2022-12-05 00:24:55 +0800] [524047] [INFO] Listening at: unix:/tmp/10.68.2.44.socket (524047) [2022-12-05 00:24:55 +0800] [524047] [INFO] Using worker: sync [2022-12-05 00:24:55 +0800] [524050] [INFO] Booting worker with pid: 524050
Gunicorn 就启动成功了。
接下来用浏览器访问试试:
没有问题!
nohup /data/user8302433/anaconda3/envs/mytorch/bin/gunicorn --chdir /data/user8302433/CrowdHMT/drf_vue_blog --bind unix:/tmp/10.68.2.44.socket drf_vue_blog.wsgi:application &
/data/user8302433/anaconda3/envs/mytorch/bin/gunicorn 表示虚拟环境中的gunicorn文件路径 --chdir表示项目文件所在路径(很多教程都没有这个,坑)
而且我尝试使用systemd来管理进程,但是不成功不知道为什么
注意末尾的&如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!