Go言語で作成したWebアプリケーションをUbuntu 18.04でNginxサーバーを使ってデプロイする方法
Webアプリケーションを公開するために、Go(Golang)で開発したアプリケーションをUbuntu 18.04サーバーにデプロイする方法を説明します。本記事では、Nginxをリバースプロキシとして使用し、GoのWebアプリケーションを安全に公開する手順を完全かつ包括的に解説します。
必要な前提条件
-
Ubuntu 18.04サーバーがインストールされていること
「Link To Share」は、あらゆるマーケティング機能を備えたプラットフォーム。 簡単かつプロフェッショナルに、あなたのコンテンツへユーザーを誘導します。 • モダンで自由度の高いプロフィール(Bio)ページ • 高度な分析機能を備えたリンク短縮 • ブランドを印象付けるインタラクティブQRコード • 静的サイトのホスティングとコード管理 • ビジネスを強化する多彩なウェブツール -
Goがインストールされていること
-
Nginxがインストールされていること
-
サーバーにroot権限またはsudo権限があること
手順
1. Goのインストールと設定
まず、GoをUbuntu 18.04にインストールします。Goのインストールは以下の手順で行います。
-
Goのインストール
bashsudo apt update sudo apt install golang-go
インストール後、Goが正しくインストールされているか確認します。
bashgo version
これでGoのバージョンが表示されれば、インストールは成功です。
2. GoでWebアプリケーションを作成
次に、Goで簡単なWebアプリケーションを作成します。
-
任意のディレクトリを作成します。
bashmkdir ~/mygoapp
cd ~/mygoapp
-
main.go
という名前のファイルを作成し、以下のコードを追加します。
gopackage 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サーバーです。
-
アプリケーションを実行します。
bashgo run main.go
ブラウザでhttp://localhost:8080
にアクセスすると、「Hello, Go Web App!」が表示されるはずです。
3. Nginxのインストールと設定
次に、Nginxをインストールして設定します。
-
Nginxのインストール
bashsudo apt install nginx
-
Nginxの起動と確認
インストール後、Nginxを起動します。
bashsudo systemctl start nginx
sudo systemctl enable nginx
ブラウザでhttp://<サーバーのIPアドレス>
にアクセスし、Nginxのデフォルトページが表示されることを確認します。
4. Goアプリケーションをバックグラウンドで実行する
Goアプリケーションをバックグラウンドで実行するために、systemd
を使用します。systemd
は、サービスを管理するためのツールです。
-
Goアプリケーションのサービスファイルを作成
/etc/systemd/system/mygoapp.service
という名前で新しいサービスファイルを作成します。
bashsudo nano /etc/systemd/system/mygoapp.service
-
以下の内容をサービスファイルに追加します。
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/yourusername
とyourgroup
を実際のユーザー名とグループ名に置き換えてください。
-
サービスのリロードと起動
bashsudo systemctl daemon-reload
sudo systemctl start mygoapp
sudo systemctl enable mygoapp
これでGoアプリケーションがバックグラウンドで実行されるようになります。
5. Nginxのリバースプロキシ設定
NginxをGoアプリケーションのリバースプロキシとして設定します。これにより、外部からのリクエストをNginxが受け取り、Goアプリケーションに転送します。
-
Nginxの設定ファイルを編集
Nginxの設定ファイルを開きます。
bashsudo nano /etc/nginx/sites-available/default
-
以下の内容に変更します。
nginxserver {
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アドレスまたはドメイン名に置き換えてください。
-
Nginxの設定をテスト
設定にエラーがないかテストします。
bashsudo nginx -t
エラーがない場合、Nginxを再起動します。
bashsudo systemctl restart nginx
6. ファイアウォールの設定(必要に応じて)
もしファイアウォールが有効になっている場合、HTTPポート(80番)を開放します。
bashsudo ufw allow 'Nginx Full'
7. 動作確認
ブラウザでサーバーのIPアドレスまたはドメイン名にアクセスします。http://your_domain_or_ip
にアクセスすると、Goで作成したWebアプリケーションが表示されるはずです。
まとめ
これで、Goで作成したWebアプリケーションをUbuntu 18.04サーバーにデプロイし、Nginxをリバースプロキシとして設定する手順は完了です。Nginxが外部からのリクエストを受け取り、Goアプリケーションに転送する形で、安全にWebアプリケーションを公開できるようになりました。
以上の手順に従うことで、Goアプリケーションを簡単にデプロイし、安定的な運用が可能になります。