部署到云服务器上的原因:
本地开发完一个web项目是可以用本地电脑作为服务器的。
但是本地电脑可能因为电脑的环境、硬件等原因导致电脑处于关机状态。此时部署到本机电脑的项目外界就无法通过网络访问了。
云服务相对于本地电脑来说,可以保证无时无刻都不处于关机状态,用户可以时刻访问做好的web项目查看效果。
项目上线流程:
- 本地开发web项目(这里以go为例)
- 本地环境搭建
- 本地web项目代码实现
- 测试及打包导出及sql脚本
- 迁移到腾讯云/阿里云服务器
- 云服务器环境搭建
- 云服务器部署web项目
- 绑定域名及https
web项目的开发:(以go为例)
- 本地web项目概述(前端页面的编写)
- 本地开发环境准备(go的环境、数据库)
- 创建web项目及包结构
- 创建数据库并导入配置文件
- 编写核心代码
- 整体测试并打包
这里很简单,就是用go+vue打造一个TODO web:
云服务器与数据库的环境:
腾讯云服务器流程:
- 购买或租用云服务器
- 远程登录和上传工具
- 搭建服务器部署环境
- 部署web项目
- 绑定域名
- 绑定https协议服务
云服务器:在腾讯云首页选择相应配置的服务器(这里以centos7.6 64位镜像)
云数据库: 阿里云数据库选择使用MySql5.6/8.x版本数据库,使用流量计费 或 按月计费(学生可学生认证)
腾讯云提供了免费的产品:
1. 云服务器的租用:
第一次使用腾讯云产品会有免费试用:
不想试用也可以直接租用:
这里选择自定义配置:
注意:按量付费需要个人认证:
实例的选择根据具体情况而定。
这里的安全组也可以全部开放,但有一定的风险:
出站和入站暂时不处理:
确认好后开通即可:
弄好后记得ping 公网ip一下。
2. 云mysql的租用:
地区和云服务器最好保持一致。
架构个人开发选用基础版,企业级用高可用版本:
实例规格视具体情况而定:
等会儿会对mysql整个进行配置(地址,内网地址是不行的)
要操作云mysql需要开放出相应的公网地址,然后在本地就可以访问云mysql上的数据了。
确定后大概等1分钟后就行了。
开启外网:
其实只需要等待几秒就行了。。。
复制后打开Navicat工具:
把本地的mysql数据导出sql文件:
这个项目本地用的govueto
右键选择"转储sql文件"->"结构和数据":
将该脚本同步到云mysql中:
右键选择运行sql文件:
此外,还需要更改代码的配置:将本地的mysql配置改为云mysql的配置。
改为:
localhost:改为云mysql的外网地址。
端口3306:改为云mysql的端口。
然后启动项目看是否成功:
Go+Vue的打包:
将项目打包后然后放到云服务器上。
按照常规流程前端应该通过npm/yarn打包并把生成的文件放到后端指定的目录下:
vue的视图文件、静态文件是不能编译的。其他的文件才会编译为可执行文件。
那么如何把静态资源文件打包到应用里?
可以使用脚本:windows用xx.bat,linux用xxx.sh
这里对脚本进行说明:
rd: remove dir即如果存在就删除该文件夹
md: make dir 创建这个文件夹
windows下exe文件会有黑色窗体,可以用这个命令消除黑色窗体:
go build -ldflags "-H windowsgui" -o xxx.exe
copy是指复制文件到哪个文件夹下。
XCOPY: 是把文件下的所有资源都复制到其他地方。
linux平台和windows平台命令差不多,特别的是chomd,
chmod +x 是需要帮我们生成的可执行文件添加可执行的属性.
为了在服务器上的后台运行,还应用nohup运行可执行文件。
windows执行后:
这里测试了windows打包成功了。
linux同理:
windows上安装了git bash的可以执行linux的.sh脚本文件:
把这个文件夹拷贝到服务器上即可。(注意还需要配置golang在服务器上并用nohup运行。可参考我这篇文章:go部署到云服务器)
云服务器上Go的环境搭建:
因为项目是用golang写的,所以服务器上需要配置一下环境。如果是java项目就配jdk等。(当然可以用docker更加方便)
远程登陆服务器和上传服务器的工具:
- Xshell: 可以在windows下访问远端不同系统下的服务器,比较好的达到远程控制终端的目的。
- WinSCP: 可执行所有基本的文件操作,主要功能就是在本地与远程计算机间安全的复制文件。
- SQLyog: 一个快速而简洁的图形化管理mysql数据库的工具,能在任何地点有效的管理我们的数据库。
先连接腾讯云服务器:
新的服务器全是干净的:
然后把打包后的release文件夹通过xftp工具上传到服务器上或者直接拖拽到xshell:
弄完后
尴尬了。没事,弄下权限:
部署web项目:
- 将本地代码打包放到云服务器的对应位置
- 执行sql脚本将数据同步到云mysql
- 使用公网ip:端口/项目名。。。测试项目是否跑通。
绑定域名:
- 购买域名和实名认证:腾讯云或阿里云等
- 解析域名
- 服务器端口配置
- 绑定项目
- 域名解析及修改服务器端口号
- 目名和指定资源省略配置方式
- SSL证书申请及https协议配置
- http协议跳转https安全配置
这里提一下:
域名的购买,国内需要备案,国外不需要。
等待域名审核完成后还需要一下实名认证:
等待审核。
几分钟就好了(审核是真的快比阿里云)
实名认证成功后提示请修改DNS:
在“域名DNS未修改”上面的悬浮框上点击“刷新”:
解析域名成功后启动服务器并通过域名访问:
接下来是https:
- 下载免费https证书
- golang证书启动服务器
- http自动跳转https的安全配置。
手动添加一条解析记录和上图保持一致:
等待系统颁发证书然后下载使用证书。
下载后的文件结构:
并且,golang需要修改代码,使用gin中间件提供TLS支持:
"github/unrolled/secure"
func TLSHandler() gin.HandlerFunc {
return func(c *gin.Context) {
secureMiddleware := secure.New(secure.Options{
SSLRedirect: true,
SSLHost: "yinleilei.club:8080",
})
err := secureMiddleware.Process(c.Writer, c.Request)
if err != nil {
return
}
c.Next()
}
}
key和cerf还可以通过openssl生成。
还要通过nginx添加ssl:
centos安装nginx:
$ sudo yum -y install nginx # 安装 nginx
$ sudo yum remove nginx # 卸载 nginx
使用yum进行Nginx安装时,Nginx配置文件在/etc/nginx
目录下。
配置nginx服务:
$ sudo systemctl enable nginx # 设置开机启动
$ sudo service nginx start # 启动nginx服务
$ sudo service nginx stop # 停止nginx服务
$ sudo service nginx restart # 重启nginx服务
$ sudo service nginx reload # 重新加载配置,一般是在修改过nginx配置文件时使用。
找到腾讯云颁发的nginx需要用到的证书:
其中:
- www.yinleilei.club.csr: CSR文件
- 1_www.yinleilei.club_bundle.crt: 证书文件
- 2_www.yinleilei.club.key: 私钥文件
CSR 文件是申请证书时由您上传或系统在线生成的,提供给 CA 机构。安装时可忽略该文件。
将已获取到的1_www.yinleilei.club_bundle.crt: 证书文件和 2_www.yinleilei.club.key 私钥文件从本地目录拷贝到 Nginx 服务器的 /usr/local/nginx/conf
目录(此处为默认安装目录):
若无
/usr/local/nginx/conf
目录,可通过执行mkdir -p /usr/local/nginx/conf
命令行创建。.
编辑 Nginx 根目录下的 conf/nginx.conf
文件:
Nginx 版本为
nginx/1.15.0
以上请使用listen 443 ssl
代替listen 443
和ssl on
。
上传文件:
测试nginx是否有语法错误:
不加前缀https会默认访问http,这是很不好 的,,所以需要http协议跳转https安全配置:(自动跳转可以查看腾讯云文档说明,这里就不做了)
这样建个人站就成功了,欢迎访问:
https://yinleilei.club:8080/
或
yinleilei
需要注意的是:
对于java开发的应用同样需要先后端跑一个https服务,这样后端的请求才是https的。然后nginx添加ca证书反向代理到后端。
对于golang开发的应用,同样要遵守https网站不能发送http请求的约定,对于golang原生支持了runTLS()将证书和密钥文件名传递到参数中。这样就可以起一个https的服务。发送的网络请求就是https的了。这样网站nginx是https的服务,网站中发送的网络请求也是https的。保证了安全性。
可以看到的是:我这里贴的都是腾讯云试用的服务器和mysql。
等到过期了只需要重新替换租用mysql的公网ip和端口、云服务器的域名重新解析为新租用的服务器的公网ip、证书可能也得重新下发一次。
以上就是本次个人网站部署教程,流程大致都相同,只不过是不同语言的切换罢了。此篇文章仅为各位迷茫的小白提供一个思路。如有不对请指正。
学生或25岁以下的可以购买校园套餐
网址:快速入口
部署到云服务器上的原因:
本地开发完一个web项目是可以用本地电脑作为服务器的。
但是本地电脑可能因为电脑的环境、硬件等原因导致电脑处于关机状态。此时部署到本机电脑的项目外界就无法通过网络访问了。
云服务相对于本地电脑来说,可以保证无时无刻都不处于关机状态,用户可以时刻访问做好的web项目查看效果。
项目上线流程:
- 本地开发web项目(这里以go为例)
- 本地环境搭建
- 本地web项目代码实现
- 测试及打包导出及sql脚本
- 迁移到腾讯云/阿里云服务器
- 云服务器环境搭建
- 云服务器部署web项目
- 绑定域名及https
web项目的开发:(以go为例)
- 本地web项目概述(前端页面的编写)
- 本地开发环境准备(go的环境、数据库)
- 创建web项目及包结构
- 创建数据库并导入配置文件
- 编写核心代码
- 整体测试并打包
这里很简单,就是用go+vue打造一个TODO web:
云服务器与数据库的环境:
腾讯云服务器流程:
- 购买或租用云服务器
- 远程登录和上传工具
- 搭建服务器部署环境
- 部署web项目
- 绑定域名
- 绑定https协议服务
云服务器:在腾讯云首页选择相应配置的服务器(这里以centos7.6 64位镜像)
云数据库: 阿里云数据库选择使用MySql5.6/8.x版本数据库,使用流量计费 或 按月计费(学生可学生认证)
腾讯云提供了免费的产品:
1. 云服务器的租用:
第一次使用腾讯云产品会有免费试用:
不想试用也可以直接租用:
这里选择自定义配置:
注意:按量付费需要个人认证:
实例的选择根据具体情况而定。
这里的安全组也可以全部开放,但有一定的风险:
出站和入站暂时不处理:
确认好后开通即可:
弄好后记得ping 公网ip一下。
2. 云mysql的租用:
地区和云服务器最好保持一致。
架构个人开发选用基础版,企业级用高可用版本:
实例规格视具体情况而定:
等会儿会对mysql整个进行配置(地址,内网地址是不行的)
要操作云mysql需要开放出相应的公网地址,然后在本地就可以访问云mysql上的数据了。
确定后大概等1分钟后就行了。
开启外网:
其实只需要等待几秒就行了。。。
复制后打开Navicat工具:
把本地的mysql数据导出sql文件:
这个项目本地用的govueto
右键选择"转储sql文件"->"结构和数据":
将该脚本同步到云mysql中:
右键选择运行sql文件:
此外,还需要更改代码的配置:将本地的mysql配置改为云mysql的配置。
改为:
localhost:改为云mysql的外网地址。
端口3306:改为云mysql的端口。
然后启动项目看是否成功:
Go+Vue的打包:
将项目打包后然后放到云服务器上。
按照常规流程前端应该通过npm/yarn打包并把生成的文件放到后端指定的目录下:
vue的视图文件、静态文件是不能编译的。其他的文件才会编译为可执行文件。
那么如何把静态资源文件打包到应用里?
可以使用脚本:windows用xx.bat,linux用xxx.sh
这里对脚本进行说明:
rd: remove dir即如果存在就删除该文件夹
md: make dir 创建这个文件夹
windows下exe文件会有黑色窗体,可以用这个命令消除黑色窗体:
go build -ldflags "-H windowsgui" -o xxx.exe
copy是指复制文件到哪个文件夹下。
XCOPY: 是把文件下的所有资源都复制到其他地方。
linux平台和windows平台命令差不多,特别的是chomd,
chmod +x 是需要帮我们生成的可执行文件添加可执行的属性.
为了在服务器上的后台运行,还应用nohup运行可执行文件。
windows执行后:
这里测试了windows打包成功了。
linux同理:
windows上安装了git bash的可以执行linux的.sh脚本文件:
把这个文件夹拷贝到服务器上即可。(注意还需要配置golang在服务器上并用nohup运行。可参考我这篇文章:go部署到云服务器)
云服务器上Go的环境搭建:
因为项目是用golang写的,所以服务器上需要配置一下环境。如果是java项目就配jdk等。(当然可以用docker更加方便)
远程登陆服务器和上传服务器的工具:
- Xshell: 可以在windows下访问远端不同系统下的服务器,比较好的达到远程控制终端的目的。
- WinSCP: 可执行所有基本的文件操作,主要功能就是在本地与远程计算机间安全的复制文件。
- SQLyog: 一个快速而简洁的图形化管理mysql数据库的工具,能在任何地点有效的管理我们的数据库。
先连接腾讯云服务器:
新的服务器全是干净的:
然后把打包后的release文件夹通过xftp工具上传到服务器上或者直接拖拽到xshell:
弄完后
尴尬了。没事,弄下权限:
部署web项目:
- 将本地代码打包放到云服务器的对应位置
- 执行sql脚本将数据同步到云mysql
- 使用公网ip:端口/项目名。。。测试项目是否跑通。
绑定域名:
- 购买域名和实名认证:腾讯云或阿里云等
- 解析域名
- 服务器端口配置
- 绑定项目
- 域名解析及修改服务器端口号
- 目名和指定资源省略配置方式
- SSL证书申请及https协议配置
- http协议跳转https安全配置
这里提一下:
域名的购买,国内需要备案,国外不需要。
等待域名审核完成后还需要一下实名认证:
等待审核。
几分钟就好了(审核是真的快比阿里云)
实名认证成功后提示请修改DNS:
在“域名DNS未修改”上面的悬浮框上点击“刷新”:
解析域名成功后启动服务器并通过域名访问:
接下来是https:
- 下载免费https证书
- golang证书启动服务器
- http自动跳转https的安全配置。
手动添加一条解析记录和上图保持一致:
等待系统颁发证书然后下载使用证书。
下载后的文件结构:
并且,golang需要修改代码,使用gin中间件提供TLS支持:
"github/unrolled/secure"
func TLSHandler() gin.HandlerFunc {
return func(c *gin.Context) {
secureMiddleware := secure.New(secure.Options{
SSLRedirect: true,
SSLHost: "yinleilei.club:8080",
})
err := secureMiddleware.Process(c.Writer, c.Request)
if err != nil {
return
}
c.Next()
}
}
key和cerf还可以通过openssl生成。
还要通过nginx添加ssl:
centos安装nginx:
$ sudo yum -y install nginx # 安装 nginx
$ sudo yum remove nginx # 卸载 nginx
使用yum进行Nginx安装时,Nginx配置文件在/etc/nginx
目录下。
配置nginx服务:
$ sudo systemctl enable nginx # 设置开机启动
$ sudo service nginx start # 启动nginx服务
$ sudo service nginx stop # 停止nginx服务
$ sudo service nginx restart # 重启nginx服务
$ sudo service nginx reload # 重新加载配置,一般是在修改过nginx配置文件时使用。
找到腾讯云颁发的nginx需要用到的证书:
其中:
- www.yinleilei.club.csr: CSR文件
- 1_www.yinleilei.club_bundle.crt: 证书文件
- 2_www.yinleilei.club.key: 私钥文件
CSR 文件是申请证书时由您上传或系统在线生成的,提供给 CA 机构。安装时可忽略该文件。
将已获取到的1_www.yinleilei.club_bundle.crt: 证书文件和 2_www.yinleilei.club.key 私钥文件从本地目录拷贝到 Nginx 服务器的 /usr/local/nginx/conf
目录(此处为默认安装目录):
若无
/usr/local/nginx/conf
目录,可通过执行mkdir -p /usr/local/nginx/conf
命令行创建。.
编辑 Nginx 根目录下的 conf/nginx.conf
文件:
Nginx 版本为
nginx/1.15.0
以上请使用listen 443 ssl
代替listen 443
和ssl on
。
上传文件:
测试nginx是否有语法错误:
不加前缀https会默认访问http,这是很不好 的,,所以需要http协议跳转https安全配置:(自动跳转可以查看腾讯云文档说明,这里就不做了)
这样建个人站就成功了,欢迎访问:
https://yinleilei.club:8080/
或
yinleilei
需要注意的是:
对于java开发的应用同样需要先后端跑一个https服务,这样后端的请求才是https的。然后nginx添加ca证书反向代理到后端。
对于golang开发的应用,同样要遵守https网站不能发送http请求的约定,对于golang原生支持了runTLS()将证书和密钥文件名传递到参数中。这样就可以起一个https的服务。发送的网络请求就是https的了。这样网站nginx是https的服务,网站中发送的网络请求也是https的。保证了安全性。
可以看到的是:我这里贴的都是腾讯云试用的服务器和mysql。
等到过期了只需要重新替换租用mysql的公网ip和端口、云服务器的域名重新解析为新租用的服务器的公网ip、证书可能也得重新下发一次。
以上就是本次个人网站部署教程,流程大致都相同,只不过是不同语言的切换罢了。此篇文章仅为各位迷茫的小白提供一个思路。如有不对请指正。
学生或25岁以下的可以购买校园套餐
网址:快速入口