此前后端代码只能在本地运行,不能在其他设备,联网访问,而搭建配置服务器后,把项目放在服务器运行,就可以通过服务器来访问我们的项目,如网站,作小程序数据接口等
本文采用的是阿里云ECS服务器,可根据自己的需求购买对应性能和使用场景的服务器
需要考虑的内容主要有,服务器地域,服务器性能(核心,内存),使用的系统,存储盘购买时间等,笔者配置的是一台双核4G内存,1Mbps带宽,CentOS 8.0 64位,40GB云盘的服务器,可以满足轻量web开发和数据接口需求
购买后可以看到服务器的 公网IP ,可以理解为服务器的身份证号,是标识服务器的信息,对部署在服务器的网址或者接口也是要通过此IP来访问
购买完成后要先重制服务器密码,重启后才可正常使用
服务器购买成功后,为了可以方便我们对服务器传输文件,浏览目录,常用一些软件对服务器进行管理,笔者使用的是 FileZilla
官网链接:https://filezilla-project.org
选择对应系统和版本下载
Windows下是安装包,根据提示安装岂可
MacOS下解压得到的是运行文件,不会自动安装初始化,直接使用可能会弹出无法加载队列,无法写入XML文件等,这是因为软件未初始化还没运行目录,文件缺失
这时要在此用户目录下创建filezilla目录,执行
sudo chmod -R 777 .config
cd .config
mkdir filezilla # 建立软件目录
sudo chmod -R 777 filezilla # 赋予写入权限
此时再重启filezilla便可以正常运行了
为能使用软件与服务器进行连接,我们先要给服务器 安全组 配置访问规则,安全组有“入方向”和“出方向”,配置“入方向”让其他设备可以通过此端口访问服务器,配置“出方向”让服务器可以访问外部
首先配置一个22端口提供给filezilla接入
接下来在filezilla配置连接,主机填写公网ip,用户名默认root,服务器密码,端口处为22
连接完成后可以看到服务器目录,并可以在内增删文件目录等
可能需要的知识:Linux常用指令总结及编程操作
在CentOS下常用yum管理程序包和安装删除软件
查询可用jdk版本
yum search java|grep jdk
这里安装的是jdk11,根据需求选择(笔者使用的springboot版本为2.5.3,内置tomcat版本为9,不支持jdk8,故安装等jdk11)
yum -y install java-11-openjdk*
等待安装,检查是否安装成功
java -version
如果已有java,选择java版本
alternatives --config java
安装mysql使用的rpm命令,这也是CentOS下的包管理工具
检测是否已有mysql,若有可删除
rpm -qa|grep mysql
rpm -e --nodeps mysql-libs # 删除
查看可用安装源
yum list installed mysql*
安装mysql源
sudo wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
下载mysql源
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
安装下载好的rpm包
sudo rpm -ivh mysql80-community-release-el7-1.noarch.rpm
安装mysql,安装提示输入“y”继续
sudo yum install mysql-server
检查是否安装成功,成功则得到版本号
mysql -V
运行mysql
service mysqld start
检查是否已经运行
service mysqld status
登陆mysql,此时还没有密码,若有密码可用在mysql目录下的mysqld.log的password查看初始化密码
mysql -u root -p
更改root密码
alter user user() identified by '新密码';
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; # 设置密码永不过期
flush privileges; # 刷新权限
此时可以配置root的host内容,使其可以远程登录管理数据库
mysql的用户都在mysql库的user表内
use mysql; # 切换为mysql库
update user set host = '%' where user = 'root';
flush privileges;
在阿里云服务器控制台配置mysql的3306端口,以供连接访问
现在可以在可视化软件入navicat,或者idea的数据库可视化中连接并登录数据库,此内容在SpringBoot+mysql搭建微信小程序后台(2)连接数据库和后端代码有描述
此前做的访问端口一直都是localhost:8080,localhost即 127.0.0.1 本机地址,而后接的8080为访问端口,我们可以自行配置访问端口以达到隐藏或者便于访问的左右
如可在SpringBoot项目中的resources下的默认配置文件application.properties加入
server.port=80
此时配置了访问端口为80(http),这是可以在访问url是不书写端口号的标志,即可以直接通过localhost货ip访问,在购买 url域名 后可以添加 SSL证书 ,配置443(https)端口以供安全访问
idea右侧Maven框内选择package对项目进行打包
项目目录target下可以得到对应jar包
使用filezilla将jar包导入服务器的home目录,以供服务器运行
进入包所在目录,使用命令
java -jar 包名.jar
当看到springboot程序运行,tomcat服务器运作,端口变成application配置的端口后,程序已经正常运行,若配置的80端口,可在浏览器http://ip地址来访问后端中已写好的接口
注意:配置的端口一定要在服务器安全组中配置出/入方向端口,否则无法接入或访问
若关闭了服务器控制台,运行中的程序也会相应停止,但web或者后台是持久运行的,我们需要这些项目能在服务器端保持运行,CentOS提供了一种方式是 nohup 命令后台运行,这里将nohup命令编写成运行脚本,控制运行和停止,并得到运行日志文件
运行脚本run.sh
echo stop application
source stop.sh # 运行前先检查是否已经有在运行的项目,若有则停止
echo start application
source start.sh
开始脚本start.sh
nohup java -jar 包名.jar --server.port=端口号 &
停止脚本stop.sh
PID=$(ps -ef | grep 包名.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
echo Application is already stopped
else
echo kill $PID
kill $PID
fi
首先赋予脚本的执行权限,否则无法运行
chmod u+x *.sh # 用户创建的.sh后缀文件拥有此权限
然后使用Linux运行命令
./run.sh # 运行项目
./stop.sh # 停止项目
cat nohup.out # 查看项目日志
到此后台项目已经可以在服务器上运行,但是长期使用ip访问服务器可能会导致ip被封(运营商担心有恶意使用或者黑客攻击造成频繁访问ip),而且通过ip访问无法开启https(443)端口,则无法作为小程序接口,所以需要将ip绑定域名,添加SSL证书加入项目,并通过icp备案后,才可开启https(443)端口