-
以下是本文的部署环境:
-
后端架构django==4.1.7
-
服务器平台:阿里云
-
服务器配置:
- CPU&内存:2核(vCPU)2 GiB
- 操作系统:Ubuntu 22.04LTS 64位
- 实例规格:ecs.t6-c1m1.large(性能约束实例)
- 实例规格族:ecs.t6
- 当前使用带宽:1Mbps
- 硬盘:40GB
- CPU&内存:2核(vCPU)2 GiB
-
-
这里省略连接服务器的步骤,推荐使用vscode的远程连接功能,方便改写文件
一、环境配置
1、安装nginx
-
使用命令行安装nginx
sudo apt update sudo apt install nginx
-
查看是否安装成功
nginx -v # 不同版本查看version的命令可能不同
有如下字样按安装成功
root@<your server name>:/# nginx -v nginx version: nginx/1.18.0 (Ubuntu)
-
启动nginx服务
service nginx start
运行如下命令查看nginx的状态
systemctl status nginx
如下字样说明启动成功
root@<your server name>:/# systemctl status nginx ● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2023-03-30 15:05:33 CST; 13min ago Docs: man:nginx(8) Process: 762 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 986 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 988 (nginx) Tasks: 3 (limit: 1929) Memory: 11.2M CPU: 33ms CGroup: /system.slice/nginx.service ├─988 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" ├─989 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" └─990 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" Mar 30 15:05:32 iZ0jlhcbu4ffvpc5zbtw4kZ systemd[1]: Starting A high performance web server and a reverse proxy server... Mar 30 15:05:33 iZ0jlhcbu4ffvpc5zbtw4kZ systemd[1]: Started A high performance web server and a reverse proxy server.
nginx服务的控制命令
/etc/init.d/nginx start # 启动 /etc/init.d/nginx stop # 停止 /etc/init.d/nginx reload # 重新载入配置文件 /etc/init.d/nginx restart # 重启 service nginx [option] # 这样写也行 # Usage: nginx {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}
-
配置阿里云安全组(其他厂商的服务器可能有不同,后续会有补充)
按照上图在安全组中添加规则
-
在浏览器地址栏输入服务器公网ip,出现下图说明配置成功
2、安装uwsgi
-
通过 pip 命令:
pip install uwsgi
-
源代码安装:
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz tar zxvf uwsgi-latest.tar.gz cd uwsgi-latest make
3、安装mysql
- 如果使用django默认的数据库,跳过这一步
- TODO
二、项目配置
1、配置后端
(1)配置nginx
-
不管用什么方法,将整个后端项目复制到/home目录下
可以使用FileZilla软件
-
进入/etc/nginx/conf.d目录
cd /etc/nginx/conf.d
-
新建一个 xxx.conf 文件,粘贴如下配置:
server { # listen 443 ssl; # server_name smallpic.dludora.xyz; listen 80; # 在云服务器上配置安全组,开放80端口(监听http默认80端口) server_name xxx.xxx.xxx.xxx; # 云服务器的公网IP地址 charset utf-8; # 后端项目媒体文件夹位置 location /media { alias /home/backend/media; } # 后端项目静态文件夹位置 location /static { alias /home/backend/static; } # 此项本质上是一个请求的转发,可配置多个,视后端url前缀种类而定 location /api { # 与后端项目中url的前缀对应 include /etc/nginx/uwsgi_params; uwsgi_pass 127.0.0.1:8000; # 记住这里的端口,要与uwsgi的配置相匹配 } # 以下是前端部署的部分,后面再说 location / { root /home/frontend; index index.html index.htm; try_files $uri $uri/ /index.html; } # 以下是配置域名的,暂时不考虑 # ssl_certificate /etc/nginx/cert/9360524_smallpic.dludora.xyz.pem; # ssl_certificate_key /etc/nginx/cert/9360524_smallpic.dludora.xyz.key; # ssl_session_timeout 5m; # ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; # ssl_prefer_server_ciphers on; }
注意:location 后面是有空格的,必须要有!alias 后面也是有空格的;
tip:也可以采用软链接的方式,在你希望的目录创建xxx.conf文件,然后运行下面的命令(这个方法没有测试,不保证正确)
sudo ln -s /home/backend/nginx.conf /etc/nginx/conf.d
-
重启 nginx 服务
sudo service nginx restart
(2)配置uwsgi
-
在后端项目的根目录下,也就是有 manage.py 文件的目录下,新建一个 uwsgi.ini 文件和一个 run.log 文件
-
编辑 uwsgi.ini 文件:
[uwsgi] # 后端项目位置 chdir = /home/backend # :application前面要换成自己的文件夹名称 module = backend:application # 这里与上面conf文件中的端口要一样! socket = 127.0.0.1:8000 # 项目中的wsgi-file路径 wsgi-file = /home/backend/backend/wsgi.py master = true # 新建一个run.log文件记录信息 daemonize = /home/backend/run.log # 运行uWSGI后,系统会在你填写的路径按照你设置的文件名创建一个.pid文件,并将uwsgi的进程号写入文件 pidfile = /home/backend/uwsgi.pid disable-logging = true # 项目运行所需的虚拟环境,如果使用的是非虚拟环境则不需要这一行 virtualenv = /root/.virtualenvs/venv-TRA
(3) 配置 MySql(若用的是自带数据库,则可跳过)
- TODO
(4) 修改 settings.py 文件
-
打开 settings.py 文件找到下面代码并修改:
DEBUG = False ALLOWED_HOSTS = ['xxx.xxx.xxx.xxx'] # 改成['*']也行,即ALLOWED_HOSTS = ['*']
注意其中的 IP 地址要替换成你自己云服务器公网的 IP
-
在文件末尾添加:
STATIC_ROOT= '/home/backend/static/' # 你的静态文件存放的文件夹
(5) 进入虚拟环境,收集静态文件
-
激活你的项目的虚拟环境后输入指令收集静态文件:
python3 manage.py collectstatic
(6) 运行后端
-
在
uwsgi.ini
目录下运行uwsgi --ini uwsgi.ini
-
如果出现
[uWSGI] getting INI configuration from uwsgi.ini
则说明运行成功,可以通过公网ip访问你的服务
可以输入指令 ps -aux | grep uwsgi
来查看运行的进程
-
uWSGI控制相关终端指令
sudo killall -9 uwsgi #在Linux系统关闭已经在运行的uWSGI进程,用于重启服务 uwsgi --ini uwsgi.ini #启动 uwsgi --stop uwsgi.pid #关闭 uwsgi --reload uwsgi.pid #重启
如果没有uwsgi.pid文件,可以手动创建,并将uwsgi的进程号(PID)写入文件,再次运行命令即可成功
2、配置前端
TODO
标签:web,xxx,nginx,配置,server,etc,服务器,uwsgi,backend From: https://www.cnblogs.com/SuYangBlog/p/17280588.html