KUSANAGIでRails+Postgresqlを使ってみよう
以前の連載でRedmineをインストールしてみました。RedmineはRuby on Railsで動作するのですが、DBはMySQLで問題ありませんでした。
今回は、Ruby on RailsでPostgresql を利用するGitLabをどうさせてみたいと思います。前回の連載時から、KUSANAGI for Vagrantも変わっているので、まずはVagrantのおさらいをします。
KUSANAGI for Vagrantを改めて使ってみよう
今のKUSANAGI for Vagrantはイメージが新しくなり、最近のKUSANGI8.4.2がインストールされています。まずは、2019/06/10時点で最新版となる Vagrant2.2.4とVirtualBox 6.0.8をインストールしましょう。VirtualBoxとHyper-Vは同時に動かないため、Hyper-Vを動かしている方は注意して下さい。
以下のように入力すれば最新のKUSANAGI for VagrantのVagrantfile が生成されます。この部分は、KUSANAGIの公式ドキュメンに書いてあるとおりです。
$ vagrant init primestrategy/kusanagi
Vagrantfileは以下のように書けば良いです。
vm.network は、ネットワークアドレスやポートが他とかぶらなければ問題ありません。ssh用のポートは 「, id: “ssh”」と末尾につけておくと、vagrant.exe ssh で使用可能になります。
Vagrant.configure("2") do |config| config.vm.box = "primestrategy/kusanagi" config.vm.network "forwarded_port", guest: 22, host: 8022, id: "ssh" config.vm.network "private_network", ip: "192.168.34.21"
以下の行は、VirtualBoxへのVM設定になります。必須なのは末尾のメモリ設定(vb.memory)になります。GitLabはメモリが4GB程度必要になるので必ず4096以上を指定して下さい。
mofifyvmでは以下の設定を変更しています。Windowsでは特に有用です。
- USB/オーディオ設定をOFF
- NAT先のDNSを使用
- LAN接続をON
config.vm.provider "virtualbox" do |vb| vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"] vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] vb.customize ["modifyvm", :id, "--usb", "off"] vb.customize ["modifyvm", :id, "--usbehci", "off"] vb.customize ["modifyvm", :id, "--audio", "none"] vb.customize ['modifyvm', :id, '--cableconnected1', 'on'] vb.memory = "4096" end
以下は、ファイルをコピーしたり、VM起動時に実行するshellスクリプトの設定になります。個々では、以下のことを実施してます。
- ssh鍵のコピー(筆者はWSL上で実行するため、この設定があると便利です)
- DBやKUSANAGIの設定を生成し、ファイル(~/export.txt)に書き込み
- yum のアップデート
- kusanagi init/kusanagi provision
config.vm.provision "file", source: "/home/s-miyaza/.ssh/id_ecdsa.pub", destination: "/tmp/id_edcsa.pub" config.vm.provision "shell", inline: <<-SHELL cat /tmp/id_edcsa.pub >> /home/vagrant/.ssh/authorized_keys rm /tmp/id_edcsa.pub KUSANAGI_PASSWORD=$(mkpasswd -l 20) DBROOTPASS=$(mkpasswd -s 0 -l 20) SITE_DOMAIN=gitlab.localdomain DBNAME=$(mkpasswd -s 0 -l 10 -C 0) DBUSER=$(mkpasswd -s 0 -l 10 -C 0) DBPASS=$(mkpasswd -s 0 -l 20) cat <<EOF > export.txt export TERM=xterm export KUSANAGO_PASSWORD=\"$KUSANAGI_PASSWORD\" export DBROOTPASS=\"$DBROOTPASS\" export SITE_DOMAIN=$SITE_DOMAIN export DBNAME=$DBNAME export DBUSER=$DBUSER export DBPASS="\$DBPASS\" export EMAILOPTION=--no-email EOF source export.txt sudo yum clean all sudo yum update -y yes 1 | sudo kusanagi init --tz tokyo --lang en --keyboard en --passwd "$KUSANAGI_PASSWORD" --no-phrase --dbrootpass "$DBROOTPASS" --php7 --nginx --ruby24 --dbsystem psql sudo kusanagi provision --rails --fqdn $SITE_DOMAIN $EMAILOPTION --dbname $DBNAME --dbuser $DBUSER --dbpass "$DBPASS" gitlab sudo reboot SHELL end
kusanagi initで –dbsystem psql を指定すると必ず「1」を指定するため、yes コマンドで1を入力しています。
この状態で vagrant.exe up を実行すると、rails+postgresqlのプロビジョニングが終わった状態でKUSANAGI for Vagrantが起動します。
vagrant.exe ssh や、指定したホスト・ポートに対してPoderosaやTeraTermなどのSSHターミナルで接続しましょう。vagrant.exe ssh-configを実行すると、以下の情報が表示されるので、それら情報を使用してssh接続しましょう。
- Host名(HostName)
- ユーザ名(User)
- ポート(Port)
- ssh鍵ファイル名(IdentityFile)
GitLabをインストールしよう
GitLabの設定をするには、公式ドキュメントのとおり、以下のように実行します。今回は、Communication Editionをインストールします。EXTERNAL_INSTALLは適当な「http:// 」で始まるURLを指定して下さい。
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash $ env EXTERNAL_URL=http://gitlab.localdomain/ sudo yum install gitlab-ce Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile epel/x86_64/metalink| 5.4 kB 00:00:00 * base: ftp.tsukuba.wide.ad.jp * epel: mirror2.totbb.net * extras: ftp.tsukuba.wide.ad.jp * updates: ftp.tsukuba.wide.ad.jp (中略) Resolving Dependencies --> Running transaction check ---> Package gitlab-ce.x86_64 0:11.11.2-ce.0.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ============================================================ Package Arch Version Repository Size ============================================================ Installing: gitlab-ce x86_64 11.11.2-ce.0.el7 gitlab_gitlab-ce 627 M Transaction Summary ============================================================ Install 1 Package Total download size: 627 M Installed size: 1.5 G Is this ok [y/d/N]: y Downloading packages: warning: /var/cache/yum/x86_64/7/gitlab_gitlab-ce/packages/gitlab-ce-11.11.2-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEY MB 00:00:00 ETA Public key for gitlab-ce-11.11.2-ce.0.el7.x86_64.rpm is not installed gitlab-ce-11.11.2-ce.0.el7.x86_64.rpm | 627 MB 00:00:43 Retrieving key from https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey Importing GPG key 0xE15E78F4: Userid : "GitLab B.V. (package repository signing key) <packages@gitlab.com>" Fingerprint: 1a4c 919d b987 d435 9396 38b9 1421 9a96 e15e 78f4 From : https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey Is this ok [y/N]: y Retrieving key from https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg Importing GPG key 0xF27EAB47: Userid : "GitLab, Inc. <support@gitlab.com>" Fingerprint: dbef 8977 4ddb 9eb3 7d9f c3a0 3cfc f9ba f27e ab47 From : https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg Is this ok [y/N]: y Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : gitlab-ce-11.11.2-ce.0.el7.x86_64 1/1 gitlab: GitLab now ships with a newer version of PostgreSQL (10.7), but it is not yet gitlab: enabled by default. To upgrade, RUN THE FOLLOWING COMMAND: sudo gitlab-ctl pg-upgrade gitlab: Note: This command does not support Geo instances yet. So we don't gitlab: recommend running this command on Geo nodes. It will be supported gitlab: in GitLab 12.0. gitlab: For more details, please see: gitlab: https://docs.gitlab.com/omnibus/settings/database.html#upgrade-packaged-postgresql-server gitlab: It looks like GitLab has not been configured yet; skipping the upgrade script. *. *. *** *** ***** ***** .****** ******* ******** ******** ,,,,,,,,,***********,,,,,,,,, ,,,,,,,,,,,*********,,,,,,,,,,, .,,,,,,,,,,,*******,,,,,,,,,,,, ,,,,,,,,,*****,,,,,,,,,. ,,,,,,,****,,,,,, .,,,***,,,, ,*,. _______ __ __ __ / ____(_) /_/ / ____ _/ /_ / / __/ / __/ / / __ `/ __ \ / /_/ / / /_/ /___/ /_/ / /_/ / \____/_/\__/_____/\__,_/_.___/ Thank you for installing GitLab! GitLab was unable to detect a valid hostname for your instance. Please configure a URL for your GitLab instance by setting `external_url` configuration in /etc/gitlab/gitlab.rb file. Then, you can start your GitLab instance by running the following command: sudo gitlab-ctl reconfigure For a comprehensive list of configuration options please see the Omnibus GitLab readme https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md Verifying : gitlab-ce-11.11.2-ce.0.el7.x86_64 1/1 Installed: gitlab-ce.x86_64 0:11.11.2-ce.0.el7 Complete!
これで、/opt/gitlabにgitlabがインストールされた状態になります。
次回は、このGitLabの設定を行い、KUSANAGI上で動かそうと思います。お楽しみにお待ち下さい。