记一次前后端分离的开发部署实践

本项目为个人实践项目,按实验室老师要求将项目部署上云服务器,主要实现基本的网站结构和api交互,使用nginx进行反向代理,提供web服务,后端使用spring架构。

开发环境如下,

云服务器 Ubuntu

本地 vscode,MacOS,idea

版本 Nginx Open Source

官方文档 https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/

一键安装

1
sudo apt install -y nginx

手动安装方法(https://blog.csdn.net/lsygood/article/details/)(不推荐)

大致说下做法

先安装依赖

1
apt install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

到这下一个nginx压缩包 http://nginx.org/

解压之后进入该文件夹

然后

1
2
3
4
5
6
7
8
# 执行命令
./configure
# 执行make命令
make
# 执行make install命令
make install
#进入nginx启动目录启动
./nginx

查看版本

1
sudo nginx -v
1
2
out:
nginx version: nginx/1.20.1

修改/etc/nginx 下的nginx.conf文件,手动安装的在conf文件夹下面

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
    server {
        listen       9000; # 改为你想要的端口号
        listen       [::]:9000; # 改为你想要的端口号
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

重启nginx

1
sudo nginx -s reload

打开浏览器访问http://浏览器ip:9000(你设置的端口号)

/full_stack_development/MD_img/image-20220723142255227.png

不是无法访问就行,这个页面对应配置文件里root变量对应文件夹下的哪个index.html里的内容。

其他命令(调试使用)

1
2
3
4
5
6
# 干掉所有的nginx进程
killall -9 nginx
# 查看所有监听端口的进程
netstat -nltp
# 查看所有进程
ps -aux

注:如果本地已有vite项目,请在vite项目环境下直接创建dist即可。

具体操作如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11

# 第一步
## 删除node_modules文件夹和package-lock.json文件

# 第二步
## 安装依赖(需要安装nodejs)
npm install --unsafe-perm --registry=https://registry.npm.taobao.org

# 第三步
## 启动项目(需要知道可执行的东西有哪些,在package.json里有声明serve)
npm run serve

使用vue编写前端页面

创建vite项目

1
npm init vite

一路回车并按如下选择

image-20220723144748215

创建成功

进入vite项目中安装依赖

1
2
cd my_vite_project/
npm install
image-20220723145025621

安装完成……

启动vite项目

1
npm run dev
image-20220723145330214

点击链接

image-20220723145654171

出现如上页面,证明访问成功

创建dist

1
npm run build
image-20220723150447269

创建成功之后在my_vite_project 目录下会产生一个dist目录,

image-20220723150628009

后续我们将nginx的root路径指向这个目录即可。

修改/etc/nginx 下的nginx.conf文件,手动安装的在conf文件夹下面

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
……
# 更改nginx的user为有权限访问vite项目的用户
user lighthouse; # 改为你的用户名
……
# server部分
server {
        listen       9000;
        listen       [::]:9000;
        server_name  _;
        root         /home/lighthouse/vue_project/my_vite_project/dist; # 修改这个路径为你项目地址的dist目录
        try_files $uri $uri/ /index.html # 加上这句便可以在网址后面接目录

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
……

重启nginx

1
sudo nginx -s reload

如果没有mysql,到官网下载https://www.mysql.com/,然后按说明安装即可

如果有mysql(云服务器一般自带mysql),不知道密码的话,按照以下步骤

到mysql的安装目录下,找到my.cnf文件,一般是/etc/mysql,可以用whereis mysql命令查找,添加如下配置

1
2
[mysqld]
skip-grant-tables

重启mysql服务

1
sudo service mysql restart

进入mysql,输入以下指令回车即可,以root登录

1
mysql -uroot -p

修改root密码为 kkk_123

1
2
3
4
mysql> USE mysql;
mysql> UPDATE user SET authentication_string=password('Kkk_123') WHERE User='root';
mysql> flush privileges;
mysql> quit

重启mysql服务

1
sudo service mysql restart

此处有坑,host搞清楚,是’localhost’还是’%’,查user表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
mysql> select User,Host from user;
+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| root             | %         |
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

首先置空密码

1
2
mysql> USE mysql;
mysql> UPDATE user SET authentication_string='' where USE='root';

然后到mysql的安装目录下,找到my.cnf文件,一般是/etc/mysql,可以用whereis mysql命令查找,将刚刚指定的跳过验证注释掉

1
2
#[mysqld]
#skip-grant-tables

重启mysql服务

1
sudo service mysql restart

由于密码时空,所以也可以直接进入mysql

1
sudo mysql -uroot

重置密码为Kkk_123

1
mysql> alter user 'root'@'%' identified by 'Kkk_123';

重启mysql服务

1
sudo service mysql restart

用刚刚的密码登录mysql

1
sudo mysql -uroot -pKkk_123

成功。

使用idea将写好的项目打一个jar包

image-20220726142927539

在项目文件的target文件夹中找到生成的jar包,并运行。

配置完成。