t3.smallでGitLabを運用してみました。
GitLabはメモリを結構くいます。
デフォルトでは、搭載メモリ÷4×3(UnicornのWorkerプロセス数。デフォルトではCPUコア数 + 1)のメモリをくいます。
t3.smallは、CPUコア数が2、メモリが2Gなので、CPUコア数+1(=3)×メモリ÷4(=512M)=1.5Gでギリギリ動作します。
インストール
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash yum install gitlab-ce
vi /etc/gitlab/gitlab.rb
external_url http://ホスト名 gitlab_rails['time_zone'] = 'Asia/Tokyo'
gitlab-ctl reconfigure
あとは、セキュリティグループのインバウンドでポート開放して、external_urlにアクセスすればログイン画面が表示されます。
初期パスワードは、ID・パスワード共にrootです。
初期設定とPush
rootでログインして以下を作成・設定します。
・アカウント作成
・Group作成
・Project作成
・ProjectにMemberをMaintainersロールで追加
GitLabはデフォルトブランチはProtectedがかかる為、MaintainersロールだけがPush/Pullできます。
developerロールでPush/Pullしたい場合は、Maintainersロールで一旦masterにPushしてから、Settings->Repository->Protected Branchesでmasterブランチをunprotectedします。その後、Memberの設定で権限をdeveloperに変更します。
CI設定
デフォルトではCI設定されているので、Push後Pendingになるので、Settings->Ci/CD->Auto DevOps->Default to Auto DevOps pipelineのチェックを外しておきます。
git push でのID/PW省略
pushするアカウントのhomeに.netrcを作成します。
machine GitLabのホスト名 login GitLabログインID password GitLabログインパスワード
メール送信設定
EC2では25番ポートが塞がれており申請が必要で、GitLabからメール送信する場合、587のSMTPを用意するのが手取り早いです。
vi /etc/gitlab/gitlab.rb
gitlab_rails['gitlab_email_enabled'] = true gitlab_rails['gitlab_email_from'] = 'Fromメールアドレス' gitlab_rails['gitlab_email_display_name'] = 'GitLab'
以下はホスティングサービスのSMTPを使う場合
gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = 'SMTPサーバー名' gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = 'SMTPユーザー名' gitlab_rails['smtp_password'] = 'SMTPパスワード' gitlab_rails['smtp_authentication'] = 'login' gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab-ctl reconfigure
あとは、セキュリティグループのインバウンドで587ポートを開放して、ログイン画面のForgot your password?あたりでメール送信を試してみます。
2段階認証
Profile Settings – Account – Two-Factor Authentication
QRコードをGoogle認証で読み取る。
以降、ID/PW入力後、Google認証のワンタイムパスワードを入力するようになります。
push/pullでの2段階認証回避
2段階認証を設定するとpush/pull時もワンタイムパスワードが必要になってしまいますので、以下の回避設定を行います。
Profile Setting – Access Tokens
Nameに何か入力しapiにチェックしcreate
.netrcのpasswordに払い出されたTokenを設定します。
swap作成
t3.smallでGitLabを起動すると、残りのメモリが心許ないのでswapを作成しておきます。
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile sudo free
sudo vi /etc/fstab
+/swapfile swap swap defaults 0 0
サーバ移行
サーバ移行を経験したのでついでに記載します。
ポイントは、GitLabのバージョンを合わせておくことです。
移行元
sudo gitlab-rake gitlab:backup:create sudo chmod 777 -R /var/opt/gitlab/backups
移行先
移行元の/var/opt/gitlab/backupsに作成されたバックファイルを、移行先の/var/opt/gitlab/backupsに移動します。
cd /var/opt/gitlab/backups gitlab-rake gitlab:backup:restore yes yes gitlab-ctl reconfigure gitlab-ctl restart
https化
今回は、Let’s EncryptでSSLしました。
certbot certonly --webroot -w Apache等のhtmlディレクトリ -d GitLabのドメイン名 -m SSLを取得するメールアドレス --agree-tos -n
vi /etc/gitlab/gitlab.rb
external_url 'https://ホスト名' nginx['ssl_certificate'] = "/etc/letsencrypt/live/ホスト名/fullchain.pem" nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/ホスト名/privkey.pem"
gitlab-ctl reconfigure
コメント