阿里云上以DevOps实现简单网站搭建
阿里云上以DevOps实现简单网站搭建
今天的主要内容:
- 阿里云简单介绍
- 简单的web Server构建
- 持续构建,部署,监控告警设置
课程要点
阿里云服务简介
认识下阿里云服务页面功能
1、基础介绍
2、云监控服务
能看到服务器的各种基础指标,高级监控功能需要购买升级
在阿里云上以DevOps简单实现网站搭建
从一个简单的Web开始
基本业务代码实现
go install
go fmt
go test 自动测试,统计测试时间,
go get = git clone
管理面代码实现
编写一个webserver
代码托管打包构建
git status
git add .
git commit -m "first page"
git push
部署上线
在阿里云目标目录克隆代码
git clone ...
手动在云上操作,会容易出错,考虑使用代码完成。
> deploy Server开发
# 一共三步,看如何实现
git pull
git push -> git pull
deploy
deploy.sh文件
# 重启服务 shell 脚本,deploy.sh
# 先杀掉服务,以免后面启动失败,导致任务失败;不建议用kill -9 不安全
kill -9 ${pgrep webserver}
# 进入到云上网站目录
cd ~/newweb/
# 拉取最新代码到当前云目录
git pull https://github.com/avenssi/newweb.git
# 进入服务目录
cd webserver/
# 启动webserver,&指后台运行,以免session断掉
./webserver &
// 上述 go 语言实现 deployserver.go
// 重启服务,代码调用重启服务脚本
package main
import (
"io"
"net/http"
"os/exec"
"log"
)
// 调用重启服务shell脚本
func reLaunch(){
cmd := exec.Conmmand("sh"."./deploy.sh")
err := cmd.Start()
// 如果有问题直接退出
if err != nil{
log.Fatal(err)
}
err = cmd.Wait()
}
func firstPage(w http.ResponseWriter,r*http.Request){
io.WriteString(w,"<h1>Hello,this is my deploy server!,</h1>")
reLauch()
}
// 本地编译,提交到Git,
env GOOS=linux GOARCH=amd64 go build
git add .
git commit -m "change the web text"
git push origin master
阿里云端
cd newweb
git pull
~目录下
cp newweb/deployserver/deployserver deployserver
cp newweb/deploy.sh deploy.sh
./deployserver
Github中webhooks配置
提交过程之后,自动被调用,新代码会下来。就是传说中的钩子,改动之后触发拉取。
试一下是否好用:
1、本地改下页面代码,编译,提交到github
2、提交完成之后,刷新下页面,看看页面上显示的是不是最新的代码。是的,则成功了。
设置监控告警
1、进入云监控控制台
站点监控相当于一个拨测工具,隔一段时间就去ping一次。
2、使用站点监控
设置告警规则
网站简单的自动恢复
。。。
课程总结
1、基本业务代码实现(业务面webserver、管理面deployserver)
- 完成了开发 和 运维 的两个重要层面代码的编写
2、代码的编译构建打包以及简单的DevOps自动化
- 实现简单的 运维自动化,实现本地push代码自动部署到阿里云。
- 在GitHub上使用webhooks 的配置实现自动部署功能。
3、利用阿里云完成网站的部署和监控
- 阿里云站点监控、告警规则设置
代码目录结构
- newweb
- deployserver
- deployserver
- main.go
- webserver
- main.go
- webserver
- deploy.sh
- README.md
- deployserver