• 15-Deployment On Linux
    • Vultr
    • ssh 免密登陆
    • 安装mysql
    • 部署应用
      • Makefile
      • 运行
    • Links

    15-Deployment On Linux

    在本章,我将会把应用部署到Linux服务器, 与上一章相比,这种是比较传统的方式

    本章的GitHub链接为: Source, Diff, Zip

    Vultr

    当提到“传统托管”时,意思是应用是手动或通过原始服务器机器上的脚本安装部署的。 该过程涉及安装应用程序、其依赖项和生产规模的Web服务器,并配置系统以确保其安全。

    当你要部署自己的项目时,要问的第一个问题是在哪找服务器。 目前有很多经济的托管服务。 只需每月2.5 - 5美元,Vultr,Digital Ocean和Linode

    这里我选择的是 Vultr 创建了 CentOS 7 的linux 服务器

    广告: 这里大家可以通过这个地址注册 Vultr,我会得到 10 dollar 的奖励,如果想搞个VPS自己玩玩的同学可以考虑下,还能搭个那啥用(自己体会) 链接: https://www.vultr.com/?ref=7079936

    ssh 免密登陆

    1. $ ssh-keygen -t rsa -C 'your email'
    2. $ scp ~/.ssh/id_rsa.pub username@hostname:~/ # 将公钥文件复制至ssh服务器
    3. $ ssh username@hostname # 使用用户名和密码方式登录至ssh服务器
    4. $ mkdir .ssh # 若.ssh目录已存在,可省略此步
    5. $ cat id_rsa.pub >> .ssh/authorized_keys # 将公钥文件id_rsa.pub文件内容追加到authorized_keys文件

    以后登录ssh 只要输入 ssh username@hostname 即可不用输入密码啦

    安装mysql

    1. $ ssh username@hostname
    2. # Install
    3. $ yum -y install mariadb mariadb-serve
    4. # Start mariadb
    5. $ sudo systemctl start mariadb
    6. $ sudo systemctl enable mariadb
    7. # Securing the MariaDB Server
    8. # Set Password
    9. $ sudo mysql_secure_installation
    10. # crate database
    11. $ mysql -uroot -p
    12. $ MariaDB > create database go-mega;

    部署应用

    与 Python 相比,Go 部署应用还是算比较方便的,因为它可以编译

    Makefile

    为了方便部署,我们这边建一个 Makefile 方便我们部署

    Makefile

    1. .PHONY: clean upload-vps
    2. # Put your server ip or nickname here
    3. host = ny
    4. clean:
    5. @echo "clean..."
    6. @rm -rf app/
    7. @echo "success clean"
    8. build-db:
    9. @echo "run build db..."
    10. @env GOOS=linux go build -o app/db cmd/db_init/main.go
    11. @echo "success build db"
    12. build-server:
    13. @echo "begin build server..."
    14. @env GOOS=linux go build -o app/server main.go
    15. @echo "success build server"
    16. upload-vps: clean build-db build-server
    17. @echo "begin run vps upload..."
    18. @echo "Host: $(host)"
    19. @scp -r app root@$(host):go-mega
    20. @scp config.yml root@$(host):go-mega/
    21. @scp -r templates root@$(host):go-mega/templates
    22. @echo "success vps upload"

    注意 上面的 Host 修改成 你自己的 Host ip address 或者 Host 别名

    然后我们就比较方便了运行

    1. $ make upload-vps

    就可以了,我们可以登录到我们的vps上查看,就多了一个 go-mega 的文件夹了

    这里简要做个说明

    • clean: 清楚上次的编译二进制文件
    • build-db: 编译 cmd/db_init/main.go -> app/db
    • build-server: 编译 main.go -> app/server
    • upload-vps: 将 /app 和 templates 文件夹上传到 vps的 ~/go-mega 里

    运行

    1. $ ssh ssh username@hostname
    2. $ cd go-mega
    3. # 设置环境变量 以及 config.yml
    4. $ vi config.yml # 按照config.yml.sample 设置
    5. $ export PORT=8000
    6. # 初始化数据库
    7. $ ./db
    8. # 启动应用
    9. $ nohup ./server &
    10. # 这个时候服务已经启动了,这个时候如果想要访问应用可以使用 nginx反代到 80端口 或者 防火墙开放你设置的端口
    11. # 最好是使用nginx,不过这里为了演示,我们开放下端口
    12. $ firewall-cmd --zone=public --add-port=8000/tcp

    这个时候我们访问 http://xxx.xxx.xxx.xxx:8000 就可以访问你刚才发布的应用了, 大功告成

    这里暂时不是HTTPS的,如果设置HTTPS,需要你自己申请HTTPS证书和配置nginx,这方面比 Heroku 还是麻烦点

    • 目录
    • 上一节: 14-Deployment-On-Heroku
    • 下一节: 16