为了方便后续管理本次使用的是宝塔面板进行项目的部署,由于是前后端分离的项目因此将分开部署(其实也都差不多)。
准备
安装xshell和xftp
下载免费版够用了,安装好后连接centos7
点击连接后会弹出对话框输入服务器端的用户密码即可连接上,xshell的使用同理。
宝塔面板的使用
安装
- 官网:https://www.bt.cn/new/download.html
- 因为我的服务器是centos7所以选择第一个下载
yum install -y wget && wget -O install.sh [http://download.bt.cn/install/install_6.0.sh](http://download.bt.cn/install/install_6.0.sh) && sh install.sh ed8484bec
- 安装完成后会有以下信息
登录
复制外网地址到浏览器,输入上面的用户名和密码登录。下载需要的服务器,这里我选择的是Apache。
数据库
这里记录一个问题:centos7使用mysql会无法启动,所以建议下载- 添加数据库,信息和之前本地时一致,如果本地数据库有信息可以将本地数据库导入到这里。
- 宝塔面板端口设置
在启动之前需要在安全设置中将mysql的端口打开。
- 阿里云端口设置
这样之后在宝塔面板上直接启动就可以了。
前端部署
前端我使用的是Vue,用npm run build打包后会生成一个dist文件夹。在宝塔面板处新建站点,输入域名后提交。点击进入站点所在文件夹,将打包好的dist文件利用xftp传过来。
比如这里front是打包的前端页面,访问时输入http://8.210.136.253/front
即可访问。
后端部署
后端我使用的是go。用go build main.go
生成打包好的go文件。为了方便管理,我将后端文件和前端都放在了8.210.136.253这一文件夹下。
在宝塔面板上添加go项目,
此时点启动会发现没有权限,这里我们需要利用xshell给main文件权限,命令为chmod +x ./main
,然后再执行就没有问题了。记得要把端口打开。
至此,我们前后端就都部署好了。
http -> https
http升级为https分为两部分,一是前端访问后端接口利用https,二是利用https访问前端页面。
证书生成
下载OpenSSL
官网:https://slproweb.com/products/Win32OpenSSL.html
下载后直接运行程序安装即可。安装完在用户变量的路径中添加上就可以使用啦。
生成证书
- 生成秘钥:
openssl genrsa -out server.key 2048
- 生成证书:
openssl req -new -x509 -key server.key -out server.crt -days 365
- 对应这俩文件
go安装证书
给gin框架添加一个中间件https://github.com/unrolled/secure
添加证书代码如下,复制需要的部分到自己的代码里即可。别忘了前端的request也要改成https的。
package main
import (
"github.com/gin-gonic/gin"
"github.com/unrolled/secure"
)
func main() {
router := gin.Default()
router.Use(TlsHandler())
router.RunTLS(":8080", "ssl.pem", "ssl.key")
}
func TlsHandler() gin.HandlerFunc {
return func(c *gin.Context) {
secureMiddleware := secure.New(secure.Options{
SSLRedirect: true,
SSLHost: "localhost:8080",
})
err := secureMiddleware.Process(c.Writer, c.Request)
// If there was an error, do not continue.
if err != nil {
return
}
c.Next()
}
}
网站安装证书
进入网站的管理页面,点击SSL,把刚生成的.key和.crt文件内容复制进去,保存后重启项目即可。
至此一切就大功告成了!