最近在研究小程序商城的事儿。无意间在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] 点击编译,如果模拟器刷新了商品,则表明小程序前后台对接成功。 九、后记 小程序要正式上传到微信端上线,还需要在小程序官方后台添加业务域名,这里就不详述了。