文章目录
项目搭建
1. 搭建开发平台
1.1. JDK
jdk-15.0.2。
1.2. Maven
自行安装并进行配置。
1.3. 注册微信开发者账号
注册小程序开发账号。
地址:https://mp.weixin.qq.com/wxopen/waregister?action=step1。
然后找到开发者ID和密钥自己存好,后面要用到,注意,生成密钥时只显示一次,当场就复制下来保存好,否则只能重置。
1.4. 安装开发者工具
不要切换下载路径!
安装好后运行软件,用微信扫码登录,然后打开服务端口。
1.5. Node.js
版本不低于17.3.1
,我用的是18.18.0
。
1.6. cnpm
npm install -g cnpm --registry=https://registry.npmjs.org
或
npm install cnpm -g --registry=https://registry.npm.taobao.org
我这里的版本是9.4.0
。
1.7. HBuilder
安装,然后进行一下设置。
2. 安装Linux
2.1. 安装centos7
内存至少分配6GB,硬盘至少30GB,网络连接为NAT模式。
然后启动虚拟机进行安装。
2.2. 静态ip
这一步很重要(T-T)真的很重要,不然ip会变,每次重启就会改变,就要改配置,太麻烦了。
先查看ip。
然后
cd /etc/sysconfig/network-scripts
找到自己的网卡
进入编辑
vi ifcfg-ens33
重启网络服务
service network restart
查看ip
2.3. 修改转发映射ssh端口
在centos关机的情况下,进行以下操作。
开放以下五个端口,以后会用到。
2.4. 用远程工具连接
2.4.1. 连接
我这里是用MobaXterm
。
连接后,会有一个服务不可用:
MobaXterm里的X11-forwarding-云社区-华为云
2.4.2. 安装X认证包
yum install xorg-x11-xauth
2.4.3. 编辑sshd_config文件
vi /etc/ssh/sshd_config
#AllowAgentForwarding yes
AllowTcpForwarding yes #这里打开
#GatewayPorts no
X11Forwarding yes #这里原本就是打开的
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
同时,解决MobaXterm通过ssh连接虚机慢的问题。
解决SSH连接Linux系统特别慢的问题 - 胖胖123 - 博客园
UseDNS no # 关闭DNS解析
GSSAPIAuthentication no # 关闭GSS认证
2.4.4. 重启sshd服务
service sshd restart
然后重新连接即可。
2.4.5. SCP
MobaXterm左侧没有文件列表,没有SCP,不显示文件夹问题处理。
解决MobaXterm左侧没有文件列表,没有SCP,不显示文件夹_mobaxterm看不到文件夹-CSDN博客
3. 安装Docker
云服务器docker pull mysql报missing signature key错误 - 八艾云
3.1. 更新yum
yum update -y
3.2. 关闭selinux
vi /etc/sysconfig/selinux
SELINUX=disabled
3.3. 重启linux系统
reboot
3.4. 安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3.5. 添加Docker的官方yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.6. 安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io
3.7. 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
3.8. 验证安装
sudo docker --version
3.9. Docker命令别名
给常用Docker命令起别名,方便我们使用。
修改/root/.bashrc
文件。
vi /root/.bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
alias dis='docker images'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
执行命令使别名生效
source /root/.bashrc
验证
4. 安装MySQL
4.1. 查看MySQL版本
docker search mysql
4.2. 拉取MySQL
docker pull mysql
4.3. 创建容器并运行
docker run -it -d --name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=xxxxxx \
mysql
4.4. 查看是否运行
4.5. 进入容器
docker exec -it mysql bash
4.6. 连接Navicat
5. 安装Redis
5.1. 导入镜像文件
导入redis镜像文件并上传。
docker load < Redis.tar.gz
5.2. 添加配置文件
在Linux中创建/root/redis/conf/redis.conf
文件,添加如下内容。
vi /root/redis/conf/redis.conf
bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile ""
databases 4
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
requirepass xxxxxx
添加完成后,确认一下是否保存成功。
5.3. 创建容器
docker run -it -d --name redis -p 6379:6379 \
-v /root/redis/conf:/usr/local/etc/redis \
-e TZ=Asia/Shanghai \
redis:6.0.10 \
redis-server /usr/local/etc/redis/redis.conf
-v /root/redis/conf:/usr/local/etc/redis
将我们创建的配置文件映射到容器中。
redis-server /usr/local/etc/redis/redis.conf
运行redis-server
并加载配置文件。
5.4. 修改后端配置文件
修改两个后端项目中的yml配置文件,将下方红框位置改为localhost
即可。
6. 安装RabbitMQ
由于不管什么数据库,MySQL也好,MongoDB也好,甚至说HBase,我们都无法给保存的记录设置过期时间。在一个对外运营的商业项目中,总是会有很多僵尸用户:他们常年不上线。如果我们发送系统公告消息的时候,要不要给这些人发送消息呢?当然要,但是不必永久保存。我们把公告消息发送到RabbitMQ的消息队列中,给消息设置过期时间。假如在消息过期时间,用户上线了,那么他就可以收到公告消息,并且系统会把他收到的公告消息转存到数据库中,永久保存。那些常年不上线的僵尸用户,发给他们的系统公告消息过了过期时间,会自动从RabbitMQ中删除,也不会转存到数据库中,这样我们就避免了为大量僵尸用户保存系统消息而占用海量存储存空间。
6.1. 导入镜像文件
导入rabbitmq镜像文件并上传。
docker load < RabbitMQ.tar.gz
6.2. 创建容器
docker run -it -d --name rabbitmq \
-p 4369:4369 -p 5671:5671 -p 5672:5672 \
-e TZ=Asia/Shanghai \
rabbitmq:3.8.9
7. 安装Minio
采用Minio来充当私有云存储服务。我之前的一些项目用的是腾讯云对象存储服务,公有云存储也挺好用的。
但是作为医疗类的项目,我们把患者的诊断和处方等文件保存到公有云上面,不太尊重患者的隐私。所以接下来我们要在本地利用Miio搭建一套私有云存储,存放本项目用到医生照片、广告横幅、患者病志和处方等文件。
7.1. 导入镜像文件
docker load < Minio.tar.gz
7.2. 创建文件夹
首先创建/root/minio/data
文件夹,然后给这个文件夹设置权限,否则Minio将无法使用该文件夹保存文件。
chmod -R 777 /root/minio/data/
7.3. 创建容器
docker run -it -d --name minio \
-p 9000:9000 -p 9001:9001 \
-v /root/minio/data:/data \
-e TZ=Asia/Shanghai --privileged=true \
--env MINIO_ROOT_USER="root" \
--env MINIO_ROOT_PASSWORD="xxxxxx" \
bitnami/minio:latest
# 用上面的这个
docker run -it -d --name minio \
-p 9000:9000 -p 9001:9001 \
-v /root/minio/data:/data \
-e TZ=Asia/Shanghai --privileged=true \
--env MINIO_ROOT_USER="root" \
--env MINIO_ROOT_PASSWORD="xxxxxx" \
--console-address ":9001" --address ":9000"
bitnami/minio:latest
-v /root/minio/data:/data
将Linux中创建的这个目录映射到容器的/data
目录上。
--privileged=true
给容器分配最高的读写权限。
7.4. 进入Web管理界面
打开浏览器,访问 http://localhost:9001/login ,填写好上面设置的用户名和密码进入。
7.5. 创建存储桶
创建shanyi
的存储桶,并将存储桶的访问权限设为Public
。
7.6. 批量上传文件
为了批量向存储桶中上传文件,所以我们要借助于FTP软件(MobaXterm不支持上传文件夹,所以要用其他的FTP软件)。大家到网上下载Filezilla
这款软件,然后连接到CentOS的22
端口,就跟SSH连接一样。
刷新浏览器。
8. 设置容器开机自启
# Docker容器开机自启
docker update --restart=always [容器名/容器id]
docker update --restart=always minio
docker update --restart=always rabbitmq
docker update --restart=always redis
docker update --restart=always mysql
9. 数据库
9.1. 新建数据库
9.2. 创建表和索引
执行shanyi.sql
,创建表和索引。(注意:数据库已更新,该文件已过时)
9.3. 增加数据
执行shanyi-data-insert.sql
,插入初始数据。(注意:数据库已更新,该文件已过时)
10. MIS端后端
10.1. 创建项目
这里我更改了创建项目的源。因为使用默认的spring initializr去创建项目,我们选择JDK15,然后Java版本只有17、20、21,我们选择17会要求你要么选择更低的Java版本或者更换更高的SDK版本。因此曲线救国。
Springboot选2.x.x
版本。
初见。
10.2. pom.xml
二话不说我们来到pom.xml
,修改并刷新。
10.3. application.yml
在main
下新建resources
目录,创建application.yml
文件,填写相应配置。
10.4. 启动项目
尝试启动,没报错就是启动成功。
10.5. 构建项目目录结构
10.6. 创建配置类
稍微加点佐料。
10.7. RESTKit工具环境配置
如果有要用到token的地方,到浏览器中复制,然后在该工具中进行配置。
然后在发请求时,就可以在请求头中看到了。
11. 小程序端后端
11.1. 创建项目
Springboot选2.x.x
版本。
11.2. pom.xml
来到pom.xml
,修改并刷新。
11.3. application.yml
在main
下新建resources
目录,创建application.yml
文件,填写相应配置。
11.4. 启动项目
尝试启动,没报错就是启动成功。
11.5. 构建项目目录结构
11.6. 创建配置类
11.7. RESTKit工具环境配置
12. MIS端前端
12.1. 配置项目
打开shanyi-mis
项目,进行修改。
12.2. 初始化项目
cnpm install
或
npm install
12.3. 运行项目
npm run dev
运行成功。
13. 小程序端前端
13.1. 配置项目
打开manifest.json
文件,配置你自己的微信小程序AppID。
插播一条紧急新闻:下面那个baseUrl的暂时先写成localhost吧。不然小程序好像没法登录。
修改完别忘记保存!
对了,注意看一下appid。
13.2. 初始化项目
在shanyi
目录下,打开终端,执行命令。
cnpm install
注意事项:小程序项目和前端vue项目,都不要随便移动在硬盘上的位置。如果移动了位置,必须删除项目中的
node_modules
文件夹,然后重新初始化项目。另外项目最好不要放在中文目录下,否则容易导致项目无法启动。
警告先不用理会,没有报错就行。
13.3. 运行项目
尝试运行项目。注意,如果运行后控制台提示成功但是没有自动打开微信开发者工具,可能是因为之前就打开了微信开发者工具没重启过,只需要关掉,然后重新运行即可。
14. 手机与电脑处于相同网段
注意,我们已经将项目部署到腾讯云服务器上了,因此无需再进行以下配置,看看就好。
在手机上运行小程序,往往出现最多的问题是小程序无法连接电脑上的Java程序。这其中的原因很简单,你的手机和电脑处在不同的网段。比如说在公司环境中,电脑插的是网线,手机连接的是WIFI,恰好有线网络和WIFI网络是两个网段,从而导致手机上的小程序无法调用电脑上的JavaWeb方法。再有就是校园网环境中,即便你的电脑和手机都连接的是图书馆WIFI网络,但是校园网中设备是隔离的。你在电脑上ping不通手机的IP地址,所以手机的小程序也就无法访问电脑的Java程序了。
14.1. 360随身WiFi电脑版
它其实就是利用无线网卡创建WIFI局域网。你让手机连接这个局域网,手机和电脑就能在相同网段了。
这是官网地址,https://wifi.360.cn/easy/pc,没事,已经替大家试过水了,别害怕,没广告(有广告[好在不是弹窗广告,只是在界面里有一条广告,看着不顺眼叉掉就好]),没弹窗(有弹窗[在设置里关掉]),没捆绑,稍微设置一下就行。但是安装过程中甚至没法选择安装路径,这点不好,需要整改。
在学校我不清楚是不是要安装那个校园版的,或者在下面的设置里勾上开启校园网模式
?先试试正常的能不能行吧,不行再试试校园版。
然后把main.js
里的baseUrl
地址改成他给你分配的ip地址就行。
14.2. 用手机热点创建局域网
如果上面的360随身WIF方案对你无效,你可以试试手机热点这种方案。把手机热点共享给笔记本电脑,电脑和手机就处在相同网段了。
也要把main.js
里的baseUrl
地址改成他给你分配的ip地址就行。
无论你用那种方案,都要查询电脑在新创建出来的局域网WIF环境下的IP地址,然后修改baseUrl变量的IP地址,这样小程序才能把Ajax请求发送到电脑上面。
使用Windows的同学,务必把系统防火墙关闭,否则会拦截小程序Ajax请求。
15. 部署到腾讯云
操作和上面都一样,只不过端口转发映射不用管,而是要去控制台,打开防火墙,添加规则,把那几个端口添加上就好了。然后后端改一下配置文件里的ip地址,改成服务器公网ip,前端改一下minio的地址,注意,前端去连后端的地址还是localhost,因为后端还是在我们本地跑。
部署到腾讯云,就不用担心手机与电脑要处于相同网段了。