인터넷 기술의 급속한 발전으로 다양한 고성능 언어가 속속 등장하고 있습니다. 그중 Golang은 효율적인 동시성 메커니즘과 간결한 구문으로 점점 더 많은 개발자가 선택하는 언어가 되었습니다. 실제 프로덕션 환경에서는 자동 시작, 오류 재시작 등의 기능을 구현하기 위해 Golang 애플리케이션을 데몬 프로세스 형태로 서버에 배포해야 하는 경우가 많습니다. 다음으로 systemd를 사용하여 Golang 애플리케이션을 데몬으로 배포하는 방법을 소개하겠습니다.
2. systemd를 선택하는 이유
3. Golang 애플리케이션 작성
package main import ( "fmt" "net/http" ) func HelloWorld(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello World! ") } func main() { http.HandleFunc("/", HelloWorld) http.ListenAndServe(":8080", nil) }
다음 명령을 실행하여 애플리케이션을 시작합니다.
go run main.go
You http: //localhost:8080에 액세스할 수 있습니다. 효과를 봅니다.
4. Systemd Unit 파일 만들기
myapp.service
라는 데몬 시작 스크립트의 유닛 파일을 생성해야 합니다. [Unit] Description=My App After=network.target [Service] User=root WorkingDirectory=/root/myapp ExecStart=/root/myapp/myapp Restart=always [Install] WantedBy=multi-user.target
각 매개 변수에 대한 설명은 다음과 같습니다. myapp.service
,如下所示:
systemctl daemon-reload # 重载 daemon systemctl start myapp.service # 启动服务 systemctl enable myapp.service # 将服务设为开机启动
各项参数的解释如下:
Description
:服务的描述After
:当在运行 run level 的时候,本 unit 必需在顺序列表的最后。(本文的设置表示必须在网络服务启动后才启动本应用)User
:应用程序运行的用户WorkingDirectory
:应用程序运行的工作目录ExecStart
:应用程序执行的命令Restart
:如果应用程序意外终止,则自动重新启动应用程序WantedBy
:用来指定哪些 target(启动级别)或者多个 target(启动级别)下将会启用该 service。创建 Unit 文件后,将其复制到 /etc/systemd/system/
설명
: 서비스 설명After
: 실행 수준을 실행할 때 이 단위는 시퀀스 목록의 끝에 있어야 합니다. (이 문서의 설정은 네트워크 서비스가 시작된 후 애플리케이션을 시작해야 함을 나타냅니다.)사용자
: 애플리케이션이 실행되는 사용자WorkingDirectory
WorkingDirectory
ExecStart
: 실행되는 명령 애플리케이션다시 시작
: 애플리케이션이 예기치 않게 종료된 경우 애플리케이션이 자동으로 다시 시작됩니다.WantedBy
: 지정하는 데 사용됩니다. 서비스를 활성화할 대상(시작 수준) 또는 여러 대상(시작 수준) /etc/systemd/system/
디렉터리에 복사하세요. 다음으로 다음 명령을 실행하여 데몬 프로세스를 시작합니다. systemctl status myapp.service이 시점에서 Golang 애플리케이션이 데몬 프로세스 형태로 서버에 배포되었습니다. 다음 명령을 통해 서비스 상태를 확인할 수 있습니다.
위 내용은 golang 데몬 배포의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!