目录
前言
环境和软件
目录结构
项目截图
购买云服务器
宝塔Linux面板(快速搭建)
部署项目到服务器上
安装软件
修改配置文件
生成jar包
上传jar包
打包前端代码
上传dist文件内容
配置nginx服务器
测试前端
运行jar包
导入数据库文件
项目演示
关于远程连接
这是一个不完整的权限管理系统的demo(如果你想改成其他系统的crud也可以,大同小异)
后端使用spring boot:spring boot其实就是善于使用注解和配置文件的spring,是它的简化版,快速高效容易修改配置。
前端vue+elementUI:element-网站快速成型工具,很好的框架。
使用软件是IntelliJ IDEA 2019.3 x64 +HBuilderX
运行环境 jdk1.8+tomcat 9.0+nginx 1.12+mysql 5.6+redis 6.2.4
话不多说,先看一下目录结构。
目录文件不细说,一般展开来后都是这种结构:
如果需要调用一些方法(加密,国际化,换主题等),最好是多创建一个工具类的包来存放。
运行一下项目,项目截图如下:
登录界面
首页
角色管理界面
电脑显示屏尺寸问题,之前在另一台电脑尺寸比较大,大家自行调整。
项目演示完毕,只是一个简单的demo,最初步搭建起来的一个框架,还有很多需要完善的地方,适合新手,同样也提供给我自己记录学习。
接下来是把项目部署到云服务器上,我使用的是阿里云服务器,学生认证的话免费使用两个月,不想认证的话新人1核2G一年也不到一百块,有经济能力的可以考虑。
一般进入阿里云官网,点击云服务器ECS就可以查看自己想要购买的云服务器信息,或者查看自己已经创建了的服务器实例信息。阿里云链接如下:
https://www.aliyun.com/activity/new?utm_content=se_1009238830
一般的云服务器都是使用linux系统(看个人喜好选择版本),centos7版本应该是比较多人用的,慎选centos6版本!下面是我的系统版本描述。
首先我们需要下载一些辅助工具,让后续的操作更加简单快捷方便。
学过linux的一般都知道XShell和Xftp这两个远程连接工具,可以免费下载,链接如下:
https://www.netsarang.com/zh/xshell-download/
远程连接后对命令的发送和文件的传输都非常的方便,尤其是Xftp传输文件对小白非常友好。
接下来还有一个非常重要的推荐,宝塔linux面板
https://www.bt.cn/download/linux.html
Centos安装脚本(进入命令行输入下面命令)
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
安装完后,会在命令行给出你的账户名和密码,还有登录地址,类似这种
username: sd14gfh5
password: 78e2f2a4
外网面板地址: http://xxx.xx.xx.xx:8888/d4hh5t5e
内网面板地址: http://xxx.xx.xx.xx:8888/d4hh5t5e
访问宝塔面板之前,还需要进入云服务器中对应的实例,配置安全组规则。开放8888访问权限(8888是宝塔面板的默认端口,登录之后可以自行修改)其他的端口如果需要也是在安全组规则中开放,才能进行访问。
如果有一些软件开放了端口之后还是无法远程连接或者访问的话,应该是软件的默认配置问题,需要修改相应的配置文件来允许访问,像我遇到的redis,在后面会说到。
接下来根据给定的地址和用户名密码可以进入宝塔Linux面板
可以看出,使用面板可以进行许多一键完成的操作,可以实现管理数据库,安装环境和软件,部署网站,操作命令行等等,功能强大。如果我们想要快速部署,新手建议使用。
在上面我们提到成功运行该项目,需要的环境有:
同样地,部署到云服务器中也需要这些东西。
1.首先是jdk,这是必不可少的,一般看你电脑上的jdk版本和平时常用的jdk版本,使用哪个版本就去云服务器上下载对应的版本,但由于我的云服务器上有自带的 jdk1.8,用java -version可以查看自己已经安装,就没有重新安装。
如果想要自行安装,可以参考下面这篇:
https://blog.csdn.net/qq_21187515/article/details/90295031
2.其他的像tomcat,nginx,mysql,redis都可以直接在宝塔Linux面板中下载使用。
如果没有找到对应的型号或者想要自己安装的话,可以去官网下载对应的压缩安装包(Linux版本)然后上传到Linux的指定文件夹中,如/export/software(仅供参考), cd 进入该安装包的文件夹后,对压缩包进行解压
tar -zxvf 压缩包名称(解压之前先在目录中ls查看文件名称,然后复制过来,防止打错)
解压之后会得到一个同名的文件夹,有些软件直接cd进入文件夹执行运行文件就可以了,有些则需要修改环境变量或者配置文件,可以参考上面那篇centos安装jdk的文件。
现在,安装环境和软件都已经搞定,接下来就是把自己的项目部署到系统中。
首先,修改项目中各个模块的配置文件,主要是数据库和redis的配置。
修改完配置后,确认项目无误,点击右侧的maven按钮,clean之后进行package打包操作,把项目制作成jar包。package之后生成的jar包生成在该项目目录下的target文件夹下
找到jar包后,通过xftp上传到云服务器的Linux中。
接下来先忽略jar包,打包前端代码。
打包代码非常简单,运行npm run build命令之后,会生成一个dist 文件夹。
把dist文件上传到Linux文件夹中
接下来配置nginx服务器,修改nginx目录下的nginx.conf文件
修改nginx的nginx.conf
在server节点中
//root后的路径是你刚才上传了dist内容的文件夹
location / {
root /export/data/html;
index index.html index.htm;
}
然后是配置nginx代理,同样是修改修改nginx目录下的nginx.conf文件
修改nginx的nginx.conf
location /auth {
rewrite ^/auth/(.*) /$1 break;
#保留代理之前的host
proxy_set_header Host $host;
#保留代理之前的真实客户端ip
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#在多级代理的情况下,记录每次代理之前的客户端真实ip
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
#表示客户端真实的协议(http还是https)
proxy_set_header X-Forwarded-Proto $scheme;
#9000是auth服务的端口号
proxy_pass http://127.0.0.1:9000;
}
location /permission {
rewrite ^/permission/(.*) /$1 break;
#保留代理之前的host
proxy_set_header Host $host;
#保留代理之前的真实客户端ip
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#在多级代理的情况下,记录每次代理之前的客户端真实ip
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
#表示客户端真实的协议(http还是https)
proxy_set_header X-Forwarded-Proto $scheme;
#9001是permission服务的端口号
proxy_pass http://127.0.0.1:9001;
}
接下来重启nginx服务器,输入
http://你的公网地址
应该可以看到一个初步的页面
前端部署完成后,利用刚才的jar包运行Java程序
运行java程序
#加上前面的 nobup 和后面的 & 号可以让程序在后台运行
nohup java -jar permission-server-0.0.1-SNAPSHOT.jar &
项目运行之后,查看是否在正在运行
查看运行的java程序
ps -ef|grep java
命令行运行效果如下:
这时候前后端都已经部署完成,别忘了导入数据库文件,使用面板中的数据库管理比较方便。
前端演示的地址:http://120.79.161.120/#/
可以看见本来运行在本地的spring boot项目已经成功在云服务器上运行
最后关于远程连接的问题,如果想要在本地连接云服务器,我使用本地的RedisDesktopManager尝试连接遇到的一个问题就是无法连接,其原因一般是没有开启安全组规则,如果开启安全组规则之后还是无法连接的话,一般是因为 redis 的默认配置文件redis.conf中的
protected-mode 默认设置为yes(即默认开启保护默认)
把 protected-mode 设置为no (也就是关闭保护模式)
同时把bind 设置为 0.0.0.0,也可以把daemonize 设置为yes (后台运行)
以上操作后,本地的RedisDesktopManager就可以连接到云服务器的redis了。
本地连接云redis详情可以参考下面文章:
https://www.cnblogs.com/impyu/p/12613689.html
到此结束,有错误请指正,菜鸟一枚,很多东西深入了都不太会,文章仅供参考。