## 线上部署:
[TOC]
### 一、打包:
*****
林风社交论坛项目linfeng-community部署:
#### 1.后端打包
下面介绍基于IDEA工具对后端backend项目打包的方式。首先确保application-prod.yml中正确配置了数据库账号密码等信息。打开IDEA侧边栏,如下图,对maven先clean再install,找到target下的jar包上传到服务器。



在target目录下,生成了如上图的可执行jar包,就代表后端打包完成。
*****
#### 2.uniapp H5打包
打包前记得utils/config.js下配置你的线上域名

接下来,进行H5端打包操作。如下图,选择**发行**

然后,输入你h5端的访问域名,不要带https前缀,直接输入域名,
比如:h5.xxx.com 。如下图,

输入后选择**发行**按钮。随后等待控制台的提示,如下图:

h5文件夹就是打包后的H5端代码
**注意点1**:目前最新版的HBuilderX 4.15版本打包出来的H5端代码包变成了名称为web的文件夹,名称发生了变化。
**注意点2**:如果你只要普通的H5版本,不需要微信公众号版本,那么你需要查看一下`常见问题`章节的第41条。
*****
#### 3.uniapp 微信小程序打包
首先,同样需要注意的是,打包前记得utils/config.js下配置你的线上域名。
然后,如下图选择发行。


HBuilderX会自动唤起微信开发者工具,然后在微信开发者工具中选择“上传”按钮即可。然后去微信公众平台上传版本审核,审核前需要注意一下一些要素,详情查看本章最下面的“微信小程序审核注意事项”。
*****
#### 4.uniapp app打包
具体参考uniapp官方文档:https://uniapp.dcloud.net.cn/tutorial/run/run-app.html
打包前需要生成对应的证书,运行效果预览可以运行到模拟器上,比如mumu模拟器,雷电模拟器等。uniapp项目mainfest.json下APP基本配置:APP图标配置\APP模块配置里面的map地图和payment支付也需要进行配置。配置都完成后选择“发行”、“原生APP云打包”,然后如下图操作即可打包:

*****
#### 5.后台管理系统打包
在config/index.js中配置你的后端接口地址即可
执行`npm run build`即可打包出dist文件夹。

### 二、部署
#### 1.准备子域名
我们这里以不同子域名的方式部署项目,按你自己的需要来选择:
后端api服务:**api.xxx.com** (这个必须有)
h5端:**h5.xxx.com** (如果你不需要h5用户端或者微信公众号端的话就不用)
后台管理系统: **admin.xxx.com** (这个必须有)
```
提示:如上的子域名前缀你可以自定义,我这里只是为了演示举例,请用你自己域名。
```
**DNS解析子域名**:
把域名和IP做对应解析(凡是你用到的子域名都要做DNS域名解析,在你购买域名的对应的阿里云或腾讯云或其他云服务商的后台管理端找到DNS解析模块去处理)。示例如下图(这里以配置`h5.xxx.com`的DNS解析为例子):

**SSL证书申请**:
SSL证书申请有两种方式,如果你用宝塔部署项目,那就用方法一,如果不是的话就参考方法二。
方法一:如果宝塔安装了,宝塔上直接可以一键申请并部署SSL证书(后面会具体介绍)
方法二:
去云服务厂商(阿里云、腾讯云等)用你们公司(注意:如果你上线微信小程序必须用你公司的域名)已备案的域名申请SSL证书。需要申请的数目按如上要求。申请免费的SSL证书即可。目前免费证书有效期都是3个月。

这里以阿里云SSL证书为例:

申请通过后选择下载,如下图所示:

下载后解压文件夹,这两个类型的文件用于宝塔SSL部署(SSL具体部署请继续往后看)。

#### 2.安装宝塔
用宝塔部署要方便很多(强烈推荐宝塔,方便你快速部署)。这里以宝塔部署为例进行具体说明,您可按照自己习惯的方式部署项目,基本思路都是基本一致的。
首先,服务器基本配置,最低要求2核4G 5M带宽。最好使用4核8G 5M带宽及以上的配置。具体按照自己的用户量评估,另外推荐使用centos9 的服务器(centos7.6或7.9也行),ubantu系统的也行,没有强制的要求哦。文档中我们以centos9为例。
按照宝塔安装手册要求(https://www.bt.cn/bbs/thread-19376-1-1.html) 安装好宝塔面板以后,然后需要在宝塔上一键安装如下软件:`Nginx`,`Redis`,`MySQL5.7`。

这三个软件的安装**版本**参考如下图:

接下来,记得把数据库文件导入数据库。如下图:
部署到Linux上的话,MySQL5.7需要配置大小写。具体查看`常见问题`章节第3条。不然第一次在服务器上启动后端项目会出现qrtz定时任务报错的哦!!!!

*****
接下来,安装java运行环境,由于V3.0.0版本开始升级为jdk17了,故V3.0.0版本以及之后新版本的用户请安装openjdk17,复制如下的语句,打开黑窗口执行yum命令安装。不然jar包跑不起来。这里我们以centos9系统为例安装openjdk8,如果你用其他系统,安装命令需要自己网上找下。如果你服务器已经安装了openjdk8了,那请参考`常见问题`章节**第52条**卸载老的openjdk。
~~~
安装JDK 17(centos系统下) : yum -y install java-17-openjdk
~~~
v1.25.0以及之前老版本的用户,请安装openjdk1.8,如下:
~~~
安装JDK 1.8(centos系统下) : yum -y install java-1.8.0-openjdk
~~~
如何确定java运行环境安装成功,在终端输入 java 回车后若如下图所示,即为安装成功。

然后创建站点:

如上图所示,点击`添加站点`。注意:宝塔这里默认的分区是`PHP项目`,虽然我们的是Java项目,这里为了操作部署便捷,我们直接在默认的`PHP项目`栏目下进行添加站点操作。

接下来,`添加站点`操作如上图所示。重复步骤,分别创建`api.xxx.com`站点,`admin.xxx.com`站点,`h5.xxx.com`站点(需要h5端的话需要创建)。
*****
接着,进行**SSL部署**:
方法一:如下图,宝塔直接申请部署

注意:你这里申请的前提是DNS已经解析了对应的子域名,不然申请会失败的哦。
方法二:
按照上面文档介绍的方法二,打开下载的SSL证书(选择nginx版本下载):

复制证书文件内容,并按下图所示填写:

*****
接下来,将打包好的后端jar文件,用户端web文件夹,管理端dist文件夹,分别上传到宝塔对应站点,具体如下。
*****
**对于后端api服务**,上传的是打包好的jar包,如下图所示:
jar文件上传到该目录下后,然后打开如上图的终端按钮,
后端启动方式有两种,分别是:
方式一:
先上传项目文件夹中的shell文件夹下的start.sh和stop.sh文件至同级目录,如上图所示。
然后在终端执行"./start.sh"可以启动后端服务。
示例如下,表示用shell脚本启动后端java接口服务:

如果要关闭后端服务,那么执行"./stop.sh"可以关闭后端服务。
注意注意:如果你改了jar包的名称,那要修改这两个shell脚本的具体内容才能执行成功。默认不用修改。
方式二:
执行jar包启动命令。
`nohup java -jar linfeng-community-backend.jar --spring.profiles.active=prod > app.log 2>&1 &`
要中断服务的话首先执行:`ps -ef|grep java`查看进程,然后执行kill命令关闭进程。
*****
**对于H5端**,上传的是web文件夹(放到h5.xxx.com目录下)。
如下图是H5端的放置路径:

**对于后台前端**,上传的是dist文件夹(放到admin.xxx.com目录下)。
如下图是后台前端(管理端)的放置路径:

*****
接下来就是配置nginx代理,
对于后端api服务域名`api.xxx.com`,需要配置nginx,直接看如下第(3)步nginx配置。
对于`admin.xxx.com`和`h5.xxx.com`,不用手动修改nginx配置文件,你只需要按如下图指定目录即可(宝塔会自动修改nginx文件配置)。
H5端设置如下图:

管理端前端设置如下图:

#### 3.nginx配置
关于后端api服务域名`api.xxx.com`的nignx配置在如下图所示的地方进行。

**完整版nginx配置请参考如下**
(**注意**:如果你用的是宝塔部署,并且配置好了SSL证书,可以直接复制如下的nginx文件,然后全局搜索`api.linfeng.tech`替换成你的域名即可(ctrl+F快捷键可全局搜索)。请注意一定先配置保存好SSL证书,再复制粘贴替换保存如下的nginx代码,否则无法保存成功哦),当然,你也可以参考如下nginx配置,按照自己项目部署具体情况进行修改:
```
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
server 127.0.0.1:8080; #要改成后端的端口
}
server
{
listen 80;
listen 443 ssl http2;
server_name api.linfeng.tech;
# index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/api.linfeng.tech;
#CERT-APPLY-CHECK--START
# 用于SSL证书申请时的文件验证相关配置 -- 请勿删除
include /www/server/panel/vhost/nginx/well-known/api.linfeng.tech.conf;
#CERT-APPLY-CHECK--END
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END
ssl_certificate /www/server/panel/vhost/cert/api.linfeng.tech/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/api.linfeng.tech/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
#SSL-END
#一键申请SSL证书验证目录相关设置
location ^~ /.well-known {
allow all;
root /www/wwwroot/api.linfeng.tech;
try_files $uri =404;
}
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /socket {
proxy_pass http://websocket/app/socket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
access_log /www/wwwlogs/api.linfeng.tech.log;
error_log /www/wwwlogs/api.linfeng.tech.error.log;
}
```
*****
配置完成后,再次提醒,请记得DNS解析,把域名和IP做对应解析(凡是你用到的子域名都要做DNS域名解析,在你购买域名的对应的阿里云或腾讯云或其他云服务商的后台管理端找到DNS解析模块去处理)。示例如下图(这里以配置`h5.xxx.com`的DNS解析为例子):

DNS配置完了,稍等一会就生效。
后台管理系统访问`https://admin.xxx.com` 出现后台管理系统即代表成功。
H5用户端访问`https://h5.xxx.com` 出先用户端即代表成功。
后端接口服务访问`https://api.xxx.com `
后端接口服务配置好以后,如果访问:https://api.xxx.com 出现如图所示即表示后端接口服务配置成功。
v3.0.0版本起如下:

v1.25.0及之前如下:

**如果无法访问,可能的原因有**:
1. 后端jar包服务未正常启动,可以打开jar包同级目录下的日志文件查看具体日志;
2. Nginx没有正确配置。可以参考文档提供的nginx配置;
3. DNS解析未开启或未正确配置;
4. 不生效也可以尝试清理浏览器缓存,或者换个浏览器访问试试,可能是浏览器缓存导致;
5. DNS解析生效时间没到,稍等一会再尝试。
以上可能原因请逐一排查。
部署后,还要注意一下分享海报功能的字体文件部署,海报的字体文件需要上传到服务器上jar包的同级目录,具体请看:**常见问题 第24条**
*****
### 三、微信小程序审核注意事项
小程序类目选择“社区/论坛”,并根据要求上传公司或个体户备案域名截图,注意一定要公司或个体户的备案域名。这个公司或个体户必须是注册你的微信公众平台账号的主体。
为了能顺利过审,小程序代码提交审核前,请关闭如下的按钮:








另外,如下图所示,V1.15.0版本新增了好友聊天模块的总开关,支持后台开启或关闭该模块。该按钮关闭后,消息页面,不再展示好友栏和私聊入口,用户主页也不再展示加好友的入口。审核的话也可以关闭了。

另外,内容部分不能是测试数据,否则会被驳回的(不要出现“测试”字眼),要保证内容饱满点。
还需要注意,**百度智能云内容审核请开启**,否则会被驳回的。
```
如果您对上架还有疑惑的地方,可以直接咨询我们技术客服哦~
```
### 四、其他注意事项必看!
(1)**当你的项目部署上线运营前,千万记得**,把前端项目里的静态图片资源全部替换成自己的,因为官方演示站点的静态资源随时会切换导致你的静态资源无法访问。
**替换的时候全局搜索demo.linfeng.tech,改成你的地址即可。**
如何改成你的地址:比如放在服务器本地,那就在宝塔上创建一个新的站点,例如叫做`img.xxx.com`,然后配置好你的ssl证书和DNS解析,再把我们提供的压缩包里的静态资源resource文件夹,以及表情包的big文件夹,放在同级目录下(www/wwwroot/img.xxx.com),放过来之后可以访问到具体图片资源即可,如下图所示。

如下图所示,请记得在uniapp项目的utils/config.js中配置你的`imgResource地址`和`emojiUrl地址`,应用上线前必须改成自己的,千万别用官方的!!!

替换的时候全局搜索demo.linfeng.tech,改成你的地址即可。
(2)如果上线微信小程序,还要记得去微信公众平台申请开通地图选择位置wx.chooseLocation(具体位置在侧边栏"开发"——>"开发管理"——>"接口设置")
如下图所示。

(3)uniapp端全局搜索“林风”,就可以找到需要手动替换的内容。
(4)如果使用微信小程序端,微信公众平台上需要设置服务器域名(具体位置在侧边栏"开发"——>"开发管理"——>"开发设置")。

如上图,你的后端域名 api.xxx.com,在这5个打码的地方都填上。
另外,uploadFile和download域名还要填写你的云存储域名,不然上传图片功能没法用的哦。比如:img.xxx.com 。必须设置!!!
(5)更新设置小程序的隐私协议,具体请查看`常见问题`章节的第39条。必须设置!!!
(6)根据微信规定,微信小程序要备案,所以还要记得去备案微信小程序。必须备案!!!
(7)所有采购用户均需登记采购信息(交付时已登记)。上线后记得按标准版压缩包的注意事项文档中的要求,向我们**报备登记项目上线地址**,我们将严格保密你的上线地址。
```
本软件已经申请软著保护(2025SR0586781、 2025SR0731472)。我司已经与北京的律师事务所达成长期合作伙伴关系,专门打击盗版行为。
欢迎举报,举报者我们索赔成功后按比例奖赏。
```
