Ubuntu服务器上部署第一个golang web应用

开始

这篇文章的最终目标如下:

  1. 不考虑网站内容,网页只显示 hello world
  2. 强制 https 访问
  3. 用 golang 构建并将其部署在以 Nginx 作为反向代理的 Ubuntu 18.04 服务器上
/uploads/2020/02/golang_web_app_00.png

前期需要准备的内容如下:

  1. 一个可用的域名
  2. 一台可用的 Ubuntu 服务器(这里推荐使用 Vultr 的服务器)
  3. 在自己的 PC 上安装 Xshell 和 Xftp

ubuntu 上安装 golang

使用 Xshell 登录到 Ubuntu 服务器,具体使用方法本文不再赘述。登陆完成之后可以使用 Xftp 图形化操作整个服务器目录。若使用 Vultr 主机登录之后,用户身份即为rootGOPATH的位置即为/root

只要在 Xshell 中输入下方代码即可在 ubuntu 上安装 golang:

看一下安装成功没?

查看 GOPATH 位置:

输入上方代码即可查看GOPATH的位置,在该位置下添加、新建文件夹、新建项目,则无需修改环境变量。如果想改变自己项目的位置,则需要修改。

上传 go 文件

  1. 查看完GOPATH的位置后,在该路径下方新建文件夹:~/go/go-web(~代表了GOPATH)。
  2. 在自己的 PC 上创建一个文件,将其命名为main.go,并使用编辑器(这里推荐使用 Visual Studio Code)进行编辑。代码如下:
  1. 保存完上述文件后,将文件使用 Xftp 上传至~/go/go-web
  2. 使用 Xshell 打开该文件夹~/go/go-web
  1. 输入下方代码进行编译:

创建 Systemd Unit 文件

  1. 在自己的 PC 上创建一个文件,将其命名为goweb.service,并使用编辑器(这里推荐使用 Visual Studio Code)进行编辑。代码如下:

注意上方的/root路径应当根据自己的GOPATH进行改变。

  1. 使用 Xftp 在 Ubuntu 服务器中找到/lib/systemd/system路径,将goweb.service放入此处。
  2. 在 Xshell 中回到根目录:
  1. 启动网络服务
  1. 查看服务状态

如果显示状态为Active: active (running),即为启动成功。

安装 Nginx

在 Ubuntu 下安装 Nginx:

域名添加解析

在你的域名提供商处进行域名的解析,域名解析到 Ubuntu 服务器的 ip 地址上。一般来说,域名提供商会提供快速的域名解析操作,比如阿里云的新手引导啊等等。不同的域名提供商操作可能不同,详情可以参阅各个域名提供商的帮助页面。

配置 ssl 证书

搞一个真实的 ssl 证书

一般来说现在的域名提供商处都会提供免费的 ssl 证书申请。这里推荐一个我一直使用的免费 ssl 证书提供商:freessl.cn。在其官网上经过简单的操作即可获得域名的 ssl 证书。

将该网站所提供的证书下载下来备用,具体步骤可以查看这篇文章

/uploads/2020/02/golang_web_app_01.png

一些准备工作

  • 将 ssl 证书进行转换,具体步骤可以查看这篇文章
  • 将转换完成的 ssl 证书(.crt.key文件)分别放置到和main.go同级的目录中(其实放到其他目录也没有关系,只要在下方的配置文件中指明路径即可)

修改 Nginx 配置文件

  1. 在自己的 PC 上创建一个文件,将其命名为你的域名,比如xd.sh.cn,没有后缀名。使用编辑器(这里推荐使用 Visual Studio Code)进行编辑。代码如下(需要根据自己的情况进行更改,如域名),这里展示三种情况:

下方代码仅配置了 http,无法使用 https 访问网站。

下方代码仅配置了 https,无法使用 http 访问网站。

下方代码会将 http 强制跳转至 https,查了有挺多种方法。这里使用了return 301这个方法,$server_name$指代了上方的域名,request_uri意味着域名后方的链接不管怎么变,都会进行跳转 https。

  1. 保存该文件,并上传至/etc/nginx/sites-available文件夹。
  2. 在 Xshell 中,执行以下命令,目的是在/etc/nginx/ sites-enabled中建立一个该文件的快捷方式:
  1. 重新加载 Nginx

大功告成

  1. 打开浏览器,输入你的域名https://your_domain,例如https://xd.sh.cn,即能访问。页面将出现Hello World字样。
  2. 如果输入https://your_domain/greet/your_name。页面将出现Hello your_name字样。
  3. 即使不输入https://,网站也会自动跳转至 https。

参考资料

标签:

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注