最近在研究小程序商城的事儿。无意间在github上看到了litemall这个项目,被它第二套主题(Renard)清新简约的风格吸引到了。因此,尝试了git源码编译运行了下,虽然功能还不太完善,但是后台管理和前端做得还是不错得。
安装环境如下: 系统:阿里云服务器 CentOS 7.5.1804 系统面板:宝塔面板(可选),以下安装环境都是基于宝塔面板 项目链接:https://github.com/linlinjava/litemall 一、宝塔环境配置宝塔面板软件管理选择安装:MySQL 5.7.23、Nginx 1.15.5、phpMyAdmin4.8(可视化数据库管理)、PHP7.2.11(phpMyAdmin依赖)、PM2管理器 2.6.1;宝塔安全设置及阿里云控制台放行端口8080。
二、开发环境完善 1、rpm方式安装JDK1.8下载最新的JDK8 rpm安装包jdk-8u192-linux-x64.rpm,可以在这里找到最新安装包,上传到root目录;
赋权 [cce lang="bash"]chmod 755 jdk-8u192-linux-x64.rpm[/cce] 安装 [cce lang="bash"]rpm -ivh jdk-8u192-linux-x64.rpm[/cce] 查看是否正确安装 [cce lang="bash"]java -version[/cce] 如果输出以下内容则代表安装正确 [cce lang="bash"]java version "1.8.0_192" Java(TM) SE Runtime Environment (build 1.8.0_192-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)[/cce] rpm包后续升级命令 [cce lang="bash"]rpm -Uvh 最新JDK包.rpm[/cce] 2、安装maven [cce lang="bash"]yum install maven[/cce] 三、代码测试 源代码获取 [cce lang="bash"]cd /www/wwwroot git clone https://github.com/linlinjava/litemall.git[/cce] 新建数据库litemall,密码:litemall123456 数据库依次导入litemall-db/sql下的数据库文件(顺序一定不能乱) [cce lang="bash"]litemall_schema.sql litemall_table.sql litemall_data.sql[/cce] 启动小商场和管理后台的后台服务 [cce lang="bash"]cd litemall mvn install mvn package cd ./litemall-all mvn spring-boot:run[/cce] 打开浏览器,输入 [cce lang="bash"]http://IP:8080/wx/index/index http://IP:8080/admin/index/index[/cce] 如果出现JSON数据,则litemall-all模块运行正常。 四、部署准备 准备一个域名,我这里用的是litemall.chinaperry.com,用A记录解析到当前云服务器IP; PM2管理器 里面添加模块cnpm;
删除测试的litemall数据库,新建数据库litemall,记住新生成的数据库密码(或者直接更改原数据库密码);
编辑文件[cce lang="bash"]/www/wwwroot/litemall/litemall-db/sqllitemall_schema.sql[/cce]将
[cce lang="sql"]create user 'litemall'@'localhost' identified by 'litemall123456';[/cce]
中的litemall123456更改为你刚新建数据库的密码;
编辑文件
[cce lang="bash"]/www/wwwroot/litemall/litemall-db/mybatis-generator/generatorConfig.xml[/cce]
找到下图位置
将password后面的litemall123456改为你刚新建数据库的密码;
编辑文件
[cce lang="bash"]/www/wwwroot/litemall/litemall-admin/config/dep.env.js[/cce]
将BASE_API更改为:http://ip:8080/admin
编辑文件
[cce lang="bash"]/www/wwwroot/litemall/litemall-admin/config/prod.env.js[/cce]
将BASE_API更改为:https://litemall.chinaperry.com/admin(这里请改为你自己的域名)
五、项目打包
打包项目到deploy文件夹
[cce lang="bash"] cd litemall
cat ./litemall-db/sql/litemall_schema.sql > ./deploy/db/litemall.sql
cat ./litemall-db/sql/litemall_table.sql >> ./deploy/db/litemall.sql
cat ./litemall-db/sql/litemall_data.sql >> ./deploy/db/litemall.sql
cd ./litemall-admin
cnpm install
cnpm run build:prod
cp -rf dist ../deploy
cd ..
mvn clean package
cp -f ./litemall-all/target/litemall-all-*-exec.jar ./deploy/litemall/litemall.jar[/cce]
这里的工作是:
1. 把数据库文件拷贝到deploy/db目录;
2. 编译litemall-admin项目,并把编译得到的静态文件拷贝到deploy目录;
3. 编译litemall-all模块,同时把编译得到的jar文件拷贝到deploy的litemall目录。
修改litemall文件夹下面的*.yml外部配置文件
编辑文件
[cce lang="bash"]/www/wwwroot/litemall/deploy/litemall/application-core.yml[/cce]
app-id和app-secret改为自己注册的微信小程序相关信息,mch-id和mch-key改为与之关联的微信商户相关信息,notify-url改为[cce lang="html"]https://litemall.chinaperry.com/wx/order/pay-notify[/cce](这里请根据前文准备的域名自行修改)
上图address改为 [cce lang="html"]http://localhost:8080/wx/storage/fetch/[/cce]
编辑文件
[cce lang="bash"]/www/wwwroot/litemall/deploy/litemall/application-db.yml[/cce]
将password后面的litemall123456改为你刚新建数据库的密码;
此时deploy部署包结构如下:
1、bin 存放远程主机运行的脚本,包括deploy.sh脚本和reset.sh脚本;
2、db 存放litemall数据库文件;
3、litemall 存放远程主机运行的代码,包括litemall-all二进制可执行包和litemall外部配置文件;
4、util 存放开发主机运行的脚本,包括package.sh脚本和lazy.sh脚本。 由于是本地开发主机运行,因此开发者可以不用上传到远程主机;
5、dist 存放管理后台前端静态文件。
六、项目部署
确保云主机安全组及宝塔面板安全标签已经放行端口8080;
将deploy目录复制到web根目录
[cce lang="bash"]cd /www/wwwroot/litemall
cp -rf deploy ../[/cce]
宝塔面板添加站点:litemall.chinaperry.com
根目录填写
[cce lang="bash"]/www/wwwroot/deploy/dist[/cce]
由于前面已经创建了新的数据库,因此这里不创建数据库
数据库litemall导入以下文件
[cce lang="bash"]/www/wwwroot/deploy/db/litemall.sql[/cce]
修改站点配置文件,添加如下反代理设置
[cce lang="bash"] location ^~ /wx {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ^~ /admin {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}[/cce]
SSL添加加密证书,可以直接在宝塔申请免费证书,也可以是其他地方申请的证书,开启强制HTTPS
浏览器输入以下网址[cce lang="html"]https://litemall.chinaperry.com/#/login[/cce]
一切正常的话,可以看到如下页面:
但是,输入默认的账号密码是无法登陆的,因为此时的后台程序还没有运行。
七、启动脚本部署
进入/etc/systemd/system目录
[cce lang="bash"]cd /etc/systemd/system[/cce]
新建文件litemall.service
[cce lang="bash"]touch litemall.service[/cce]
打开文件
[cce lang="bash"]vi litemall.service[/cce]
按i进入插入模式,插入以下内容
[cce lang="bash"][Unit]
Description=auto run litemallservice or agent
[Service]
Type=simple
ExecStart=/usr/java/jdk1.8.0_192-amd64/bin/java -jar /www/wwwroot/deploy/litemall/litemall.jar
Restart=always
KillMode=process
RestartSec=1
[Install]
WantedBy=multi-user.target[/cce]
ESC退出插入模式,:wq保存并退出文件。
开启后台进程
[cce lang="bash"]systemctl start litemall[/cce]
查看进程运行状况
[cce lang="bash"]systemctl status litemall[/cce]
启用进程开机自启动
[cce lang="bash"]systemctl enable litemall[/cce]
现在可以登陆后台了
八、对接小程序
打开微信开发者工具添加微信小程序项目renard-wx,将AppID改为自己的,点击确定进入开发界面
编辑文件 config/api.js,根据自己的域名更改业务服务器API地址:
[cce lang="JavaScript"] var WxApiRoot = 'https://litemall.chinaperry.com/wx/';[/cce]
点击编译,如果模拟器刷新了商品,则表明小程序前后台对接成功。
九、后记
小程序要正式上传到微信端上线,还需要在小程序官方后台添加业务域名,这里就不详述了。
