L
O
A
D
I
N
G

Vue+Django项目服务器部署踩坑


开一个前后端项目部署的帖子吧,预计后面相关的内容都在这里更新。

2023.12.14

今天在部署Vue和Django的前后端项目时遇到了不少的问题,在这里记录一下,防止忘记。

1.后端

1.1Django项目的配置

首先上传项目,为项目创建虚拟环境(注意这是py2的语法,但是py3也能用):

virtualenv venv

这个命令会创建一个venv虚拟环境,下面的操作要在该虚拟环境中进行:

source venv/bin/activate

安装依赖,最好在本地机器将所需依赖导出:

pip list --freeze > requirements.txt
或
pip freeze > requirements.txt

注意用在conda中用第二种方式会导出很多绝对路径的包,服务器是无法是别的,建议conda中用第一种

之后安装uwsgi,然后在项目根目录加一个uwsgi.ini配置文件,内容类似下面的:

# uwsgi.ini
[uwsgi]
# 指定 Django 项目的目录
chdir=/home/azureuser/BuaaHospital/Back
# 指定 Django 项目的 WSGI 应用模块
module=migrations.wsgi:application
# 指定 uWSGI 运行的 Socket 文件(可以根据需要修改)
socket=127.0.0.1:8624
# 指定进程数
processes=4
# 指定线程数
threads=2
#灵活配置,如果有报错接收到的包太大可以改成更大的值
buffer-size = 32768
#后台运行,指定log的地址
daemonize=/home/azureuser/BuaaHospital/Back/uwsgi.log

然后启动后端:

uwsgi --ini uwsgi.ini

之后我们需要在nginx里面反代一下后端(否则前端请求的时候需要使用服务器ip,可能会暴露你的ip地址):

server {
    listen 80;
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name xxxx;  # 将此替换为你的域名或 IP 地址
    ssl_certificate xxx;
    ssl_certificate_key xxx;
	
    location / {
        root xxx;  #前端Vue项目路径
        index index.html;
        try_files $uri $uri/ /index.html;
    }
    location /api {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:xxx;  #端口要和uwsgi里配置的一样
        uwsgi_param UWSGI_SCRIPT migrations.wsgi;        #wsgi.py所在的目录名+.wsgi
        uwsgi_param UWSGI_CHDIR xxx; #后端项目路径
    }

}

完成之后,我们就可以使用域名加/api的方式来向后端发送请求了。

2.前端

前端的部署相对简单,但是由于我使用的Vite服务器可能还不够成熟,直接在production模式下导出时会出现CSS样式丢失的问题,因此我直接使用development模式进行打包,命令如下:

yarn build --mode development

接下来将打包后的dist目录上传到服务器,将它的地址填在之前的nginx配置中前端的位置即可。(注意修改后端请求的地址,改成域名加/api,尤其注意不要写http://127.0.0.1:xxxx,这个会直接请求你本地机器的端口。。。。)


文章作者: 叁月柒
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 叁月柒 !
评论
  目录