引入

Mall项目的前端发行包已经准备好了,我打算将其部署到云服务器的Nginx服务器上。

大概的思路很清晰,就是将两个项目app与admin目录传输到云服务器的指定位置,并在nginx.conf中进行配置。

传输文件

与对博客的维护一样,使用scp指令将文件从本地传输到云服务器。

在两个项目的父目录下,运行下面的指令,将项目传输到云服务器的/var/www目录下。值得一提的是,本博客项目的目录在为/var/www/html。

1
2
3
scp -r ./admin/* 用户名@云服务器IP:/var/www/admin
scp -r ./app/* 用户名@云服务器IP:/var/www/app

配置Nginx.conf

使用下面的指令打开Nginx.conf配置文件:

1
sudo vim /etc/nginx/sites-available/default

在server中添加两个子路径/admin与/app,分别指定网站的目录。配置文件修改后如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
server {
root /var/www/html;

# 配置管理员项目admin(/admin)
location /admin {
alias /var/www/admin; # 替换为实际的项目静态资源根目录
index index.html;

try_files $uri $uri/ /admin/index.html; # 对于SPA应用,确保所有未匹配到的路由重定向至index.html
}

# 配置移动端项目app(/app)
location /app {
alias /var/www/app; # 替换为实际的项目静态资源根目录
index index.html;

try_files $uri $uri/ /app/index.html; # 对于SPA应用,确保所有未匹配到的路由重定向至index.html
}

listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/aaronwu.fun/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/aaronwu.fun/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

server_name aaronwu.fun admin.mall.aaronwu.fun app.mall.aaronwu.fun;
}

server {
if ($host = aaronwu.fun) {
return 301 https://$host$request_uri;
} # managed by Certbot

listen 80 ;
listen [::]:80 ;
server_name aaronwu.fun;
return 404; # managed by Certbot
}

不过,目前的项目请求,其ip仍然为localhost,这显然在未来部署后端时是不正确的,有待解决。目前可以刚好利用此机制调试本地的后端程序。