Golang(15)Deployment
1. Installtion
>git clone https://github.com/Supervisor/supervisor
Right now the version is 4.0-dev, so
>mv supervisor supervisor-4.0.0-dev
try to install that from command as follow
>python ./setup.py install
Traceback (most recent call last): File "./setup.py", line 35, in <module> from setuptools import setup, find_packages ImportError: No module named setuptools
Solution:
https://pypi.python.org/pypi/setuptools#files
>curl https://bootstrap.pypa.io/ez_setup.py -o - | python
>python ./setup.py install
2. Command Arguments in go main
https://gobyexample.com/command-line-arguments
http://golang.org/pkg/os/
First of all, we need to import the os package.
import (
"encoding/json"
"fmt"
"github.com/gorilla/mux"
"io/ioutil"
"net/http"
"os"
)
argsWithProg := os.Args
var port = "8088"
if len(argsWithProg) > 1 {
port = argsWithProg[1]
}
fmt.Println("Start the server on port " + port)
http.ListenAndServe(":"+port, nil)
We get and parse the port number in command line, it both works in go run and bin
>go run src/com/sillycat/easygoapp/restjsonserver.go 8088
>bin/easygoapp 8089
3. Configure the CONF file
http://supervisord.org/configuration.html
My configuration file will be as follow /etc/supervisord.conf
[unix_http_server]
file = /var/run/supervisord.sock
chmod = 0777
#chown= root:root
[inet_http_server]
# Web管理界面设定
port=9001
username=admin
password=admin
[supervisorctl]
; 必须和'unix_http_server'里面的设定匹配 serverurl=unix:///var/run/supervisord.sock
;serverurl=http://127.0.0.1:9001
;username=admin
;password=admin
[supervisord]
logfile=/var/log/supervisord/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=true ; (start in foreground if true;default false)
minfds=1024 ; (min. avail startup file descriptors;default 1024)
minprocs=200 ; (min. avail process descriptors;default 200)
user=root ; (default is current user, required if root)
childlogdir=/var/log/supervisord/ ; ('AUTO' child log dir, default $TEMP)
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface ; 管理的单个进程的配置,可以添加多个program
[program:bugrest]
command=/Users/carl/work/easy/easygo/bin/easygoapp 8089
autostart = true
startsecs = 5
user = root
redirect_stderr = true
stdout_logfile = /var/log/supervisord/bugrest.log
Start the Server
>sudo supervisord
Error Message
ImportError: No module named mock
Solution:
>easy_install ipython
>sudo easy_install setuptools
>sudo easy_install mock
>sudo mkdir /var/log/supervisord
Check the Status of my app
>sudo supervisorctl status
bugrest RUNNING pid 67103, uptime 0:03:08
Then I can use these commands
start bugrest, restart bugrest, stop all, reload, stop bugrest.
The most useful command is this.
>sudo supervisorctl help
default commands (type help <topic>): ===================================== add clear fg open quit remove restart start stop update avail exit maintail pid reload reread shutdown status tail version
>sudo supervisorctl version
4.0.0-dev
References:
https://github.com/astaxie/build-web-application-with-golang/blob/master/ebook/12.3.md
https://github.com/Supervisor/supervisor
http://supervisord.org/
http://ddbean.wordpress.com/2011/09/16/supervisor-python%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7/
https://pypi.python.org/pypi/setuptools#files
https://gobyexample.com/command-line-arguments
相关推荐
基于golang+client-go+k8s,实现deployment管理系统 Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和...
标题 "Go-满足要求Kubernetes的应用程序模板Golang" 指的是使用Golang语言编写的、专为在Kubernetes集群上运行的应用程序设计的模板。这个模板旨在帮助开发者快速搭建符合Kubernetes标准的Go应用,确保应用能够无缝...
基于golang+client-go+k8s,实现简易版deployment管理系统全部资料+详细文档.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok...
在Golang中,GoKubernetes包管理器是一个用于简化Kubernetes应用开发和部署的工具。它使得Go开发者能够更高效地利用Kubernetes API,并提供了一种结构化的方式来组织和管理Kubernetes相关的代码。本文将深入探讨...
因此,当您为AWS ECS编写自己的部署脚本时,可以将deploy程序包嵌入golang源代码中并自定义部署配方。 请检查 。安装从github获取二进制文件: $ wget ...
Golang-微服务。 A simple microservice written in Go with sweetness of Docker Containers & Kubernetes Orchestration. 一个周末的小练习,供个人练习。 包括: 创建一个简单的go微服务。 - Implementing a ...
对于基于golang的应用程序尤其如此,该应用程序通常包含一个二进制文件,一个配置文件和一个init文件,以确保可以控制服务。 如果您想使部署配方保持自动化和可重复性,那么使用这种工具编写脚本是理想的选择。 ...
1. **Go开发**: Go(也称为Golang)是一种静态类型的、编译型的、并发的、垃圾回收的编程语言。Go以其简洁的语法、高效的性能以及对并发支持的良好设计而受到欢迎,特别适合构建分布式系统如Kubernetes工具。 2. **...
理解K8s的核心概念(如Pod、Service、Deployment)和工作流程是现代云原生架构中的必备技能。 9. **消息队列**:如RabbitMQ、Kafka等,它们在分布式系统中起到解耦、异步处理和流量削峰的作用。理解消息队列的工作...
GoFrGoFr: An Opinionated Microservice Development Framework Listed in the CNCF Landscape GoalGoFr is designed to simplify microservice development, with key focuses on Kubernetes deployment and out-of...
Kubernetes操作员是一种模式,它扩展了Kubernetes的能力,使得我们可以管理复杂的应用程序,如Minecraft服务器,就像管理单一的Pod或Deployment一样简单。操作员通过定义Custom Resources(自定义资源)和...
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: ...
Golang测试TeamCity转换器 将go test输出转换为TeamCity格式 支持运行,跳过,通过,失败 安装 go get github.com/2tvenom/go-test-teamcity 使用方法 go test -v ./... | go-test-teamcity 码头工人 go test -v ./....
tweetor:这个项目是一个简单的教程,介绍如何将golang应用程序部署到Kubernetes
本练习假设已经安装了minikube,kubernetes,docker,helm和GoLang。 Ubuntu 16.04上的Minikube v1.7.3 Docker引擎v19.03.6 Kubernetes v1.17.3 头盔v3.1.1 GoLang go1.13.6 准备好环境 首先,使用以下命令启动...
首轮: kubectl create -f deployment.yaml 让豆荚启动并运行: kubectl get pods -l app=nodeapp 然后运行: kubectl create -f service.yaml 该服务在端口6000上运行 检索服务IP地址和端口: export SERVICE_IP...
It integrates multiple open-source machine learning frameworks, has the multi tenant management capability of machine learning compute cluster, and provides full stack container deployment and ...
Go(也称为Golang)是由Google开发的一种静态类型的、编译式的、并发的、垃圾回收的、类型安全的、面向对象的编程语言。它旨在提高开发者的生产力和软件运行时的效率。Go语言以其简洁的语法、高效的性能以及对并发...