反向代理
我个人是使用习惯是使用阿里云自带的 负载均衡SLB
服务,完成 反向代理
,负责均衡
,SSL证书
,域名解析
等操作,同时也推荐在Pord环境中使用,这样在后期在跟新的过程中更加灵活。
而在开发测试环境中,单机部署宝塔面板,可通过Ngix
的配置完成以上配置。
基本配置
eg.以java项目为例,我们部署的到服务器上确保指定端口可访问,如 SERVER_IP:8080
但实际情况是,我们希望 api.xxx.com
这种域名的情况的下去访问该网站或者接口时,具体操作步骤如下。
域名解析,将
api.xxx.com
cname 指向到 SERVER_IP 上,注意这里在没有配置端口号的情况下默认端口为80,通过ping api.xxx.com
验证是否解析成功。在宝塔面包中创建一个静态网站,如下图所示。
因为我们是java工程,只需要宝塔给我们做一个反向代理的功能,所以并不关注其他的有关php的配置,选择静态部署。
- 反向代理
配置反向代理将服务请求转发至 SERVER_IP:8080
好,截止到目前为止,即可通过 api.xxx.com
访问到 SERVER_IP:8080
网站,反向代理的主要功能就是如此,说白了就是做了个端口映射。在此解决一台服务器通过不同的域名解决同一端口的地址映射关系。
解决跨域问题
如果是API服务,并且工程中并没有处理跨域的问题时,又不想通过代码的方式去解决,此时可以通过配置ngix解决此问题。
1 | #解决跨域问题 |
应用管理器
这个是宝塔官方出的一个管理工具,具体功能类似的pm2提供守护进程确保服务的稳定性,这也是我最近才开始用的。我使用其的目的主要是为了解决应用程序跟随服务器自启动。
- 应用管理器中首先在
环境池
中创建想要的启动命令,比如下面的java命令
- 然后再在
应用列表
中添加应用
最终其完整的启动命令如下:/usr/bin/java -jar /home/fanfq/apps/x.jar --server.port=8180 --downloadPath=/macshare
注意 中文乱码问题
/usr/bin/java -Dfile.encoding=UTF-8 -jar /home/fanfq/apps/x.jar --server.port=8180 --downloadPath=/macshare
如果启用了进程守护
那么此时可以通过各种方式停止服务,然后再观察该服务是否正常重启。这就是进程守护
的意义,btw我们经常所见的mysqld实际上就是mysql服务的守护进程,通常用后缀d命名。
webhook
这个功能也是常规用的比较多的应用,我的应用场景是当git仓库有新的push时会发送一个http请求给服务器,此时服务器会自动pull到最新版本,并自动完成编译,重启等操作。
此功能是比较简易话的完成自动构建的操作,在开发测试环境中特别适用。
- 创建webhook,编辑执行脚本
1 | source /etc/profile |
- 通过查看秘钥获取请求的地址
后续只要接口地址获取到请求,即触发脚本执行。
注意
- 请求接口要求外网可访问,所以说这台服务器要有公网ip,确保可访问。
- 脚本执行的权限问题,通过日志的方式查看脚本的执行是否成功。如果出现日志不如预期则可能是执行过程中出现权限等问题。需要自己测试排查如权限,环境变量等。