プログラミング

Goアプリのデプロイ方法

Go言語で作成したWebアプリケーションをUbuntu 18.04でNginxサーバーを使ってデプロイする方法

Webアプリケーションを公開するために、Go(Golang)で開発したアプリケーションをUbuntu 18.04サーバーにデプロイする方法を説明します。本記事では、Nginxをリバースプロキシとして使用し、GoのWebアプリケーションを安全に公開する手順を完全かつ包括的に解説します。

必要な前提条件

  1. Ubuntu 18.04サーバーがインストールされていること

  2. Goがインストールされていること

  3. Nginxがインストールされていること

  4. サーバーにroot権限またはsudo権限があること

手順

1. Goのインストールと設定

まず、GoをUbuntu 18.04にインストールします。Goのインストールは以下の手順で行います。

  1. Goのインストール

bash
sudo apt update sudo apt install golang-go

インストール後、Goが正しくインストールされているか確認します。

bash
go version

これでGoのバージョンが表示されれば、インストールは成功です。

2. GoでWebアプリケーションを作成

次に、Goで簡単なWebアプリケーションを作成します。

  1. 任意のディレクトリを作成します。

bash
mkdir ~/mygoapp cd ~/mygoapp
  1. main.goという名前のファイルを作成し、以下のコードを追加します。

go
package main import ( "fmt" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, Go Web App!") } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) }

このコードは、/にアクセスすると「Hello, Go Web App!」というメッセージを表示するシンプルなWebサーバーです。

  1. アプリケーションを実行します。

bash
go run main.go

ブラウザでhttp://localhost:8080にアクセスすると、「Hello, Go Web App!」が表示されるはずです。

3. Nginxのインストールと設定

次に、Nginxをインストールして設定します。

  1. Nginxのインストール

bash
sudo apt install nginx
  1. Nginxの起動と確認

インストール後、Nginxを起動します。

bash
sudo systemctl start nginx sudo systemctl enable nginx

ブラウザでhttp://<サーバーのIPアドレス>にアクセスし、Nginxのデフォルトページが表示されることを確認します。

4. Goアプリケーションをバックグラウンドで実行する

Goアプリケーションをバックグラウンドで実行するために、systemdを使用します。systemdは、サービスを管理するためのツールです。

  1. Goアプリケーションのサービスファイルを作成

/etc/systemd/system/mygoapp.serviceという名前で新しいサービスファイルを作成します。

bash
sudo nano /etc/systemd/system/mygoapp.service
  1. 以下の内容をサービスファイルに追加します。

ini
[Unit] Description=Go Web App After=network.target [Service] ExecStart=/usr/local/go/bin/go run /home/yourusername/mygoapp/main.go WorkingDirectory=/home/yourusername/mygoapp Restart=always User=yourusername Group=yourgroup Environment=GOPATH=/home/yourusername/go [Install] WantedBy=multi-user.target

/home/yourusernameyourgroupを実際のユーザー名とグループ名に置き換えてください。

  1. サービスのリロードと起動

bash
sudo systemctl daemon-reload sudo systemctl start mygoapp sudo systemctl enable mygoapp

これでGoアプリケーションがバックグラウンドで実行されるようになります。

5. Nginxのリバースプロキシ設定

NginxをGoアプリケーションのリバースプロキシとして設定します。これにより、外部からのリクエストをNginxが受け取り、Goアプリケーションに転送します。

  1. Nginxの設定ファイルを編集

Nginxの設定ファイルを開きます。

bash
sudo nano /etc/nginx/sites-available/default
  1. 以下の内容に変更します。

nginx
server { listen 80; server_name your_domain_or_ip; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }

your_domain_or_ipを実際のサーバーのIPアドレスまたはドメイン名に置き換えてください。

  1. Nginxの設定をテスト

設定にエラーがないかテストします。

bash
sudo nginx -t

エラーがない場合、Nginxを再起動します。

bash
sudo systemctl restart nginx

6. ファイアウォールの設定(必要に応じて)

もしファイアウォールが有効になっている場合、HTTPポート(80番)を開放します。

bash
sudo ufw allow 'Nginx Full'

7. 動作確認

ブラウザでサーバーのIPアドレスまたはドメイン名にアクセスします。http://your_domain_or_ipにアクセスすると、Goで作成したWebアプリケーションが表示されるはずです。

まとめ

これで、Goで作成したWebアプリケーションをUbuntu 18.04サーバーにデプロイし、Nginxをリバースプロキシとして設定する手順は完了です。Nginxが外部からのリクエストを受け取り、Goアプリケーションに転送する形で、安全にWebアプリケーションを公開できるようになりました。

以上の手順に従うことで、Goアプリケーションを簡単にデプロイし、安定的な運用が可能になります。

Back to top button