网上的很多接口或者ui自动化教程的项目都是很不全面的,这时候需要我们自己搭建一个真实的项目到自己的服务器,本文将介绍如何搭建litemall的小商场系统(Gitee 仓库https://gitee.com/linlinjava/litemall.git
)。litemall = Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端 + Vue用户移动端,项目有管理后台前端和小商城前端,对于新手的接口自动化和ui自动化练习来说是一个很完整的项目,
1、环境准备
MySQL(用于数据库初始化);
JDK 1.8+(后端运行环境);
Maven(后端构建工具);
Node.js(前端依赖管理,建议 v14+);
nginx (Web 服务器)
1.1 软件安装
1、安装jdk
# 1. 查看可安装的JDK版本(确认有jdk1.8)
apt search openjdk-8-jdk # Ubuntu
# 2. 安装JDK 8(带开发工具,满足Spring Boot运行)
apt install -y openjdk-8-jdk # Ubuntu
# 3. 验证安装成功(显示java版本即正常)
java -version
javac -version # 若显示版本,说明开发工具也安装成功
2、安装Maven
# 1.更新包的列表,确保安装最新新版
sudo apt update
# 2.安装maven
sudo apt install maven
# 3.验证安装
mvn -version
3、安装nginx
# 安装 Nginx
sudo apt install nginx -y
# 安装完成后,启动 Nginx 并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
# 验证是否安装成功(查看版本)
nginx -v
4、安装mysql数据库
# 安装 mysql
sudo apt install mysql-server -y
# 启动 MySQL 服务
sudo systemctl start mysql
# 设置开机自启
sudo systemctl enable mysql
# 验证服务状态(显示 "active (running)" 即正常)
sudo systemctl status mysql
5、 安装Node.js
# 安装最新版Node.js
sudo apt install nodejs npm -y
# 验证安装
node -v
npm -v
1.2 创建数据库、导入数据库数据
# 登录MySQL后执行,创建数据库(库名建议为litemall,与配置一致)
CREATE DATABASE IF NOT EXISTS litemall CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
#创建用户
mysql -u root -p litemall < /root/litemall/litemall-db/sql/litemall_schema.sql
#导入表结构
mysql -u root -p litemall < /root/litemall/litemall-db/sql/litemall_table.sql
#导入表数据
mysql -u root -p litemall < /root/litemall/litemall-db/sql/litemall_data.sq
1.3 下载源码
git clone https://github.com/linlinjava/litemall.git
2、后端启动
2.1 配置国内 Maven 镜像 为避免 Maven 下载依赖时出现网络问题,建议配置国内镜像:
# 1.查看Maven路径
mvn -v #查看Maven home: /usr/share/maven 信息
# 2.确定settings路径为/usr/share/maven/conf/settings.xml
vim /usr/share/maven/conf/settings.xml
# 3.添加配置文件
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
2.2 后端代码打包与运行
# 打包项目
mvn -U clean install
# 进入target目录,执行jar包(后台运行)
/root/litemall/litemall-all/target
# 启动jar包
nohup java -Dfile.encoding=UTF-8 -jar litemall-all-0.1.0-exec.jar > litemall.log 2>&1 &
测试登录接口,接口返回成功,就说明后端服务启动成功
3、前端启动
推荐使用前端项目打包后的 dist
目录(通常包含静态文件如 HTML、CSS、JS、图片等)配合 Nginx 启动前端服务,核心原理是 通过 Nginx 作为静态资源服务器,直接对外提供 dist
目录中的文件访问,并处理前端路由、跨域等问题。
3.1 获取 dist
目录
前端项目通过打包命令(如 npm run build
)生成 dist
目录,
# 使用 npm 安装依赖
npm install
# 打包(需进入 litemall-admin 和 litemall-vue 目录下执行打包命令)
npm run build
打包成功后,会在项目根目录看到 dist
文件夹,包含:
index.html
(入口页面)css/
、js/
(编译后的样式和脚本)img/
、fonts/
(静态资源)
3.2 配置 Nginx 指向 dist
目录
Nginx 通过配置文件(通常在 /etc/nginx/
目录下)定义如何处理请求,核心是在 server
块中指定 dist
目录路径,并配置路由规则。
1 、将 dist
目录放到服务器指定位置
为便于管理,建议将 dist
目录放在 Nginx 常用的静态资源目录(如 /var/www/
)下,例如:
我的前端商城和后台管理dist文件分别放在 /var/www/mall_dist 和 /var/www/admin_dist目录下
2、创建 / 修改 Nginx 配置文件
nginx的配置文件一般在/etc/nginx/nginx.conf目录下
进入nginx.conf配置文件,将配置内容写入其中
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
# 后端服务地址(统一管理,方便修改)
upstream backend_server {
server 123.123.123.23:8080; # 你的后端服务地址
keepalive 32; # 保持连接复用,提升性能
}
server {
listen 80;
server_name 123.123.123.23; # 服务器IP
# 1. 管理后台静态资源(优先处理静态文件)
location /admin/ {
alias /var/www/admin_dist/dist/; # 管理后台静态资源目录
index index.html;
# 先尝试访问静态资源,不存在则转发API请求
try_files $uri $uri/ @proxy_admin_api;
}
# 管理后台API代理(处理/admin/开头的接口,如/admin/auth/login)
location @proxy_admin_api {
proxy_pass http://backend_server;
proxy_set_header Host $host; # 传递原始主机名
proxy_set_header X-Real-IP $remote_addr; # 传递客户端真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme; # 传递协议(http/https)
proxy_http_version 1.1; # 启用HTTP/1.1,配合keepalive
proxy_set_header Connection ""; # 清除连接头,使用长连接
}
# 2. 商城静态资源(优先处理静态文件)
location /mall/ {
alias /var/www/mall_dist/dist/; # 商城静态资源目录
index index.html;
# 支持Vue路由刷新
try_files $uri $uri/ /mall/index.html;
}
# 3. 商城API代理(处理/wx/开头的接口,如/wx/auth/login)
location /wx/ {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
# 4. 根路径默认行为(可选:重定向到商城首页)
location / {
return 302 /mall/; # 访问IP时自动跳转到商城
}
# 错误页配置
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
3、配置完成后,检测配置文件是否正确,并重启nginx
#检测配置文件是否正确
nginx -t
重启nginx
systemctl restart nginx
4、
配置完成后,可以通过以下地址访问系统:
商城前端:http://服务器IP/mall
后台管理系统:http://服务器IP/admin
后台管理页面