とーますメモ

Ruby on Rails / Goなどの学習メモ

【さくらVPS】Nginx + Goのインストール・設定

前回、NginxとGoをそれぞれインストールした。

thoames.hatenadiary.jp
thoames.hatenadiary.jp

ここでは以下の前提で設定する。

Goは「127.0.0.1:5050」で既に動作しているという前提で
話をすすめる。

$ ./app &


nginxの設定を以下のようにすれば動作する。

設定

default.conf

server {
    listen              80;
    server_name  localhost;

    location / {
        proxy_pass  http://127.0.0.1:5050;
    }
}

GoでFastCGIを使用するため
"net/http/fcgi"パッケージを使用する場合は、
以下のように設定できるっぽい。

server {
    listen              80;
    server_name  localhost;

    location / {
        fastcgi_pass  127.0.0.1:5050;
        include       fastcgi_params;
    }
}

再起動

$ sudo service nginx restart

【Go】Goアプリをデーモン化(常駐化)させてみた。

Supervisorという「プロセス管理/デーモン化」ツールが便利そう。
色んなサイトで紹介されていたので、使用してみる。

インストール

$ sudo yum install supervisor

設定ファイル編集

$vi /etc/supervisord.conf

一番下にGoアプリの設定を以下のように追記。
アプリ名:sample
アプリのディレクトリ:/home/xxxxx/go_deploy/
アプリ実行ファイル名:app
ユーザ名:YYYYY

[program:sample]
command=/home/xxxxx/go_deploy/app
autostart=true
autorestart=true
stopsignal=TERM
stdout_logfile=/var/log/supervisor/%(program_name).stdout.log
stderr_logfile=/var/log/supervisor/%(program_name).stderr.log
user=YYYYY

起動

$ sudo service supervisord start

autostartがtrueになっているので、自動でスタート。
細かいプロセス管理は以下の「supervisorctl」コマンドを使用する。
www.task-notes.com

動作中の全プロセス確認

$ sudo supervisorctl status

指定したアプリのみ起動

$ sudo supervisorctl start sample

指定したアプリのステータス確認

$ sudo supervisorctl status sample

指定したアプリのみ停止

$ sudo supervisorctl start stop

ログファイルの場所

/var/log/supervisor/supervisord.log

注意:テンプレートなどをGo内で使用している場合は(つまり一つのバイナリファイル内にすべてのデータが無い場合)
go-bindataなどを使用して、テンプレートやアセット系のファイルを一つのバイナリにしてあげないとsupervisorでは動作しないっぽい。。
(自分はできなかったが、他に方法をご存じの方がいれば、ご指摘いただけるとありがたいです)

[参考]
SupervisorでGolangで書かれたアプリケーションのデーモン化をした話 - こんちゃんブログ
Supervisorで簡単にデーモン化 - Qiita
適当なスクリプトをデーモン化するのにSupervisorが便利 - id:anatooのブログ

【さくらVPS】Nginxインストール・設定

yumに入っているものは古いため、
リポジトリを登録してインストール

Nginx用のリポジトリを作成

$ vim /etc/yum.repo.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/
gpgcheck=0
enabled=1

インストール

$ sudo yum install -y nginx

起動設定

起動しているhttpdをまずは止めてから設定

$ chkconfig httpd off
$ service httpd stop
$ chkconfig nginx on
$ service nginx start
$ systemctl status nginx

サーバのIPアドレスにアクセスすると
以下の画面が表示されます。

f:id:Thoames1212:20180112103938p:plain


[参考]
umegusa.hatenablog.jp

【Go】CentOS(さくらVPS)に最新のGoをインストールする方法

yum経由でもインストールは可能であるが

$ yum install golang

古いバージョンが入るので、
新しいバージョンを入れたいときは以下のようにする。

取得

$ cd /usr/local/src
$ sudo wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz

解凍

$ sudo tar -xzf go1.9.linux-amd64.tar.gz -C /usr/local

GOROOT及びGOPATHなどの設定

$ vim ~/.bash_profile
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

適用

$ source ~/.bash_profile

確認

go version

※yumでインストールしているgoがある場合は削除が必要

$ sudo yum remove golang


[公式]
ask.xmodulo.com

【さくらVPS】gitの古いバージョン(1.7.x)を新しいバージョンに変更する方法

自分のVPSのgitのバージョンは1.7.1だった。
それを現時点で最新の2.15.1にする。

古いバージョンを削除

$ yum remove git

新しいバージョンをダウンロード

$ cd /usr/src
$ sudo wget https://www.kernel.org/pub/software/scm/git/git-2.15.1.tar.gz
tar xzf git-2.15.1.tar.gz

必要なライブラリを先にインストール

$ sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker

Gitのインストール

/usr/local/gitにインストール

cd /usr/src/git-2.15.1
make prefix=/usr/local/git all
make prefix=/usr/local/git install

パスを通す

$ vim ~/.bash_profile

以下を保存

export PATH=$PATH:/usr/local/git/bin

反映

source ~/.bash_profile

動作確認

$ git --version