GitLabの設置

今年も残すところ、あと3ヵ月。
季節も変わって、ようやく暑さも抜けましたね。

これから少しずつ、空気が冷たくなっていく感覚は嫌いじゃないです。


『バイクでも持ってたら、心地よい季節だろうなぁ…』

『いや、既に少し寒いか??』

『まぁとりあえず、落ち着いたら買うだけ買っておくかなぁ…』


ということで。
近いうちにバイクを購入することを決めた、今日この頃です。



さて。

今回はタイトルに書いてある通り。

『GitLab』というソース管理ツールをインストールした時のメモ。


そもそも、なぜ『GitHub』とか『Bitbucket』じゃなくて『GitLab』を選んだのか??

→『やっぱり、お金は大切だよね』というところに尽きます。


当時も今も。
東京ロケットは開発チームの規模や体制が変わっていきます。

その状態で、メンバー毎に月額のコストを発生させるのは嫌だなと考えました。

実際、インストールもそこまで手間じゃないですし。運用も問題なく行えています。


例えば、社内/外のメンバー含めて10人のプロジェクトだとして。

7ドル × 10人 × 12ヵ月 = 約84,000円


『このお金があったら、サーバーのスペックをガッと上げたいなぁ…』とか思うんです。


この決断が将来的にも最適かと問われると…『それは分かりません』と答えると思いますが。

急成長を続けなければスタートアップである意味がないのだから、状況はコロコロ変わって当然なんですよね。


柔軟に変化して後からやり直せばいい。

そして『やっぱり、お金は大切だよね』と考える方にとっては、参考になるかと思います。


==============================
Condition
==============================
CentOS 7
Apache 2.4
==============================
Step
==============================
①必要なソフトウェアをインストール
②GitLab packageのダウンロードとインストール
③GitLab設定ファイルの変更
Apache側の諸設定
⑤GitLab再構成やアップデート時の対応

==============================
Procedure
==============================

GitLab Installation
基本的にはこちらの公式ドキュメントに沿って進めていく。

まずは必要なソフトウェアをまとめてインストールし、有効化。
SSH, Firewall, Postfix等、既に終わっている設定があれば飛ばしてOK。

SSH & Firewall

sudo yum install -y curl policycoreutils openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld

Postfix

sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix



GitLab packageのダウンロードとインストール。

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install -y gitlab-ce



独自ドメインを使用し、HTTPSでアクセスできるようにしたいので。
GitLab設定ファイルの該当箇所を変更する。

sudo vi /etc/gitlab/gitlab.rb

以下、変更箇所。

external_url 'http://{ドメイン}:{ポート番号}'
gitlab_rails['time_zone'] = 'Asia/Tokyo'



続いて、Apache側。
gitlab用の設定ファイルを作成。

sudo vi /etc/httpd/conf.d/gitlab.conf

Apache 2.4以降とそれ以前で、リバースプロキシの記載方法が少し異なるので注意。
尚、今回はApache 2.4で設定している。
SSL証明書はあらかじめ取得しておいてくださいませ。

設定ファイル記載内容の例。

# gitlab
<VirtualHost *:80>
  ServerName {domain}
  Redirect / https://{domain}/
</VirtualHost>
<VirtualHost *:443>
  ServerName {domain}
  DocumentRoot "/var/www/html"
  <Directory "/var/www/html">
    Require all granted
    AllowOverride All
  </Directory>
    ProxyRequests Off
    ProxyPass / https://localhost:{ポート番号}/
    ProxyPassReverse / https://localhost:{ポート番号}/
    SSLEngine on
    SSLProxyEngine on
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off
    SSLHonorCipherOrder on
    SSLCertificateFile ./conf/ssl/{SSL証明書}
    SSLCertificateChainFile ./conf/ssl/{中間証明書}
    SSLCertificateKeyFile ./conf/ssl/{秘密鍵}
</VirtualHost>

GitLabを再構成する。

sudo gitlab-ctl reconfigure



上のコマンドでGitLabを再構成したり、またGitLabをアップデートしたりすると『gitlab.yml』というファイルが都度作成される。

こちらで一箇所だけ不要な記述があるので、それは都度コメントアウトしてあげてください。

sudo vi /var/opt/gitlab/gitlab-rails/etc/gitlab.yml

ポート番号をコメントアウト

port: {ポート番号}
->#port: {ポート番号}

そしたらGitLabを再起動して…

sudo gitlab-ctl restart


https://{domain}/users/sign_in

こんなURLを叩いて、ログインページが表示されれば…コスト削減成功ですっ^^

広告を非表示にする

さくらVPS && LAMP && Windows10 ~おまけ~

さて。
前回までで、基本的なLAMP設定はやりました。

…が、もう1つおまけ。


phpMyAdminをもう少しセキュアにしてあげたいと思います。


phpMyAdminはとても便利な反面、けっこう攻撃の対象になります。

実際にapacheaccess_logを見ると、「phpmyadmin」やら「pma」にアタックしてきているのが見て取れると思います。


対策はいくつかあって。

そもそも予想されやすいディレクトphpMyAdminを置かないとか。
上の様に攻撃されやすい名前ではなく、何か他のものにするとか。
認証を掛けて、phpMyAdminにアクセスできなくするとか。


中でもスタンダードなのは、最後の1つ。
Basic認証やDigest認証を掛けるというもの。


Basic認証でも十分と言う人もいますが。
せっかくなので今回は、パスワードがハッシュ化されていてよりセキュアなDigest認証を設定する方法について書いていこうと思います。



これまで…


さくらVPS && LAMP && Windows10 ~その1~

さくらVPS && LAMP && Windows10 ~その2~

さくらVPS && LAMP && Windows10 ~その3~


==============================
Condition
==============================
・さくらVPS
・Windows10
・ターミナルはTera Term使用
LAMPは比較的新しめ

Linux (CentOS7)
Apache 2.4
MySQL 5.6
PHP 7.1


==============================
Step
==============================
(雑ですが…色々とやります)
CentOSをインストール
②一般ユーザーの設定
③鍵認証の設定

================
④ファイヤーウォールの設定
Apacheのインストール
PHPのインストール
MySQLのインストール
phpMyAdminのインストール

================
postfixでメールの設定
⑩任意ドメインの設定
サブドメインの設定
HTTPS

================
⑬Digest認証の設定



==============================
Procedure
==============================

パスワードファイルを作成する。
場所は任意でいいが、ドキュメントルートよりは上が良い。
※今回は「/var/www」とする。

cd /var/www/

htdigest -c .htdigest {領域名} {ユーザー名}

※領域名/ユーザー名共に任意で良い。
今回はphpmyadminに対してなので、「phpmyadmin」とかでもOK。

上のコマンドを実行するとパスワードを聞かれるので、今後認証に使用するパスワードを入力する。


phpMyAdminディレクトリー内に「.htaccess」ファイルを作成し、Digest認証を要求する記載をする。

vi /var/www/html/phpmyadmin/.htaccess

以下を記載。

AuthType Digest
AuthName {領域名}
AuthUserFile /var/www/.htdigest
require valid-user

これだけで、完了。


ちなみにこのままだと、Digest認証でユーザー名/パスワードを聞かれ。
更にphpMyAdminのログインでもユーザー名/パスワードを聞かれ…ちょっと面倒なことになる。

その為よくやるのが、phpMyAdminの方は認証をスキップしてやるということ。

phpMyAdminディレクトリ内を見ると「config.sample.inc.php」みたいなのがある。
(はず…無ければ自作。でも書くことはそんなにないので、安心してください。)

ひとまず、オリジナルファイルから複製。

cd /var/www/html/phpmyadmin
cp config.sample.inc.php config.inc.php

中身で以下の箇所を追記、または変更。

$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
$cfg['Servers'][$i]['user'] = '{MySQLのユーザー名}';
$cfg['Servers'][$i]['password'] = '{MySQLのパスワード}';

さくらVPS && LAMP && Windows10 ~その2~の⑧を参照。



おしまい( ˘ω˘ )

さくらVPS && LAMP && Windows10 ~その3~

徹夜明けでの勤務となった、2017年9月1日の金曜日。

この日は他のメンバーが朝から客先に直行しており、オフィスにはキャンプ用ベッドから起きて歯磨きをしている私一人。


予定している助太刀くんのPCβ版リリースまで、残すところ一ヶ月。

気が張っているせいか、2時間半程度しか眠っていない割に気怠さはなかった。



9時半頃から作業を始めると、お昼過ぎ頃に電話が鳴った。


『はい、東京ロケットです。』

いつも通りに社名を名乗ると、電話の相手は不思議な反応をした。


『はぁ?? 何だ?? ロケット??』


再度、社名を名乗る。


『株式会社東京ロケットです。 東京ロケットという会社です。』


まぁ、間違い電話かな??
きっと誰もがそう思うであろう。


しかし、相手はこう続けた。


『何だかよく分からないけどさ。
あの…職人が職種で仕事を探すやつのところじゃないの??』


っ!! その話!?


『あ、はい!そうです、そうです!!
そのサービスを作っているのが、私達です!
【助太刀くん】という、職種と居住地から現場を探すことがサービスです。』


『あぁ、たぶんそれだな。
何かなぁ…仕事を探す方法は他にもあるけど、そういうアプリみたいのがあったら…
便利になりそうですよね。

あれは9月からと書いてあったけど、もう明日から使えるんですか??』



喋っている感じから…

電話の相手がおそらく地方(東北??)の方であること。

高齢(60代??)であること。

自分も現場に行っている方であり、仕事と言うよりは人手不足が課題になっていることが伝わってきた。



『9月末にパソコンでベータ…いや…えーと。
お試し版みたいなものを出します。

その後、携帯電話のアプリが使えるようになるのは11月末になります。』


『あぁ、そうですか。分かりました。
あれはあれ…日本全国でも使えるんですか??』


『いえ。最初はですね、首都圏や関東地方から始めるつもりです。
その後、徐々に日本全国に広げていきます。

私が開発の責任者をやってます!
なるべく早く日本全国のみなさんに使って頂けるよう、全力で作っています!!』


『あぁ、そうか。
はい、よろしくね。お願いね。またその時に聞くからね。』


『はい、よろしくお願いします!!』



バイアスのない、真っ白な意見。

確実に待っててくれる人が居るって、やっぱり嬉しい。





では、続きを。

さくらVPS && LAMP && Windows10 ~その1~

さくらVPS && LAMP && Windows10 ~その2~


==============================
Condition
==============================
・さくらVPS
・Windows10
・ターミナルはTera Term使用
LAMPは比較的新しめ

Linux (CentOS7)
Apache 2.4
MySQL 5.6
PHP 7.1


==============================
Step
==============================
(雑ですが…色々とやります)
CentOSをインストール
②一般ユーザーの設定
③鍵認証の設定

================
④ファイヤーウォールの設定
Apacheのインストール
PHPのインストール
MySQLのインストール
phpMyAdminのインストール

================
postfixでメールの設定
⑩任意ドメインの設定
サブドメインの設定
HTTPS


==============================
Procedure
==============================

postfixは(おそらく)インストール済である為、起動。

systemctl start postfix

sendmailコマンドで、メールが送れるかどうか確認。

sendmail receiver@example.com
From: sender@example.com
To: receiver@example.com
Subject: テストメール送信

テストメールの本文。
ちゃんと届きましたか??

.



使用しているDNSサービスのコントロールパネルで、対象のipアドレスを登録する。
種別は『A』を選択。



使用しているDNSサービスのコントロールパネルで、対象のipアドレスを登録する。
サブドメインには任意の文字列(今回は『sub』)、種別は『A』を選択。


ターミナルに戻り、登録したサブドメインをVirtualHostで紐付ける。
設定ファイルを以下のように作成。

vi /etc/httpd/conf.d/vhosts.conf

※ファイル名は任意で良い

中身の例

<VirtualHost *:80>
  ServerName sub.{domain}
  DocumentRoot "/var/www/html/sub"
  <Directory "/var/www/html/sub">
    Require all granted
    AllowOverride All
  </Directory>
</VirtualHost>

Apacheを再起動し、有効化。

systemctl restart httpd


適当なファイルを対象のディレクトリに置いてみて、実際にサブドメインでアクセスできるかを確認。

mkdir /var/www/html/sub
vi /var/www/html/sub/index.html


http://sub.{domain}

こちらにアクセスできればOK( ˘ω˘ )



ひとまず、SSLサーバ証明書を取得しておいてください。

/etc/httpd/conf/httpd.confに以下を追記。

Listen 443

/etc/httpd/conf.d/ssl.confに以下を編集(コメントアウトのみ)。

#Listen 443 https

/etc/httpd/conf.d/vhosts.confの中身を、以下の様に書き換える。

中身の例

# default
<VirtualHost *:80>
  ServerName {domain}
  Redirect / https://{domain}/
</VirtualHost>
<VirtualHost *:443>
  ServerName {domain}
  DocumentRoot "/var/www/html"
  <Directory "/var/www/html">
    Require all granted
    AllowOverride All
  </Directory>
    SSLEngine on
    SSLCertificateFile ./conf/ssl/{SSL証明書}
    SSLCertificateChainFile ./conf/ssl/{中間証明書}
    SSLCertificateKeyFile ./conf/ssl/{秘密鍵}
</VirtualHost>


証明書類を、指定したパスに配置。
※上記の場合であれば、『/etc/httpd/conf/sslディレクトリを作成してその下に配置。


設定を反映させる。

systemctl restart httpd


https://{domain}


こちらにアクセスできればOK( ˘ω˘ )


※そもそもmod_sslが入っていなければ、以下のコマンドでインストール。
その後、再度Apacheを再起動して設定を反映させてみて下さい。

yum install mod_ssl

以上で、基本的なVPSの設定は終了です。

さくらVPS && LAMP && Windows10 ~その2~

【 2017年 8月 21日 (月) 】


本格的にお盆休みも空けて、先週まで空いていた電車にも人が戻ってきていた。

気怠さが顔に出ている人もちらほら。


一方…


バッチリ早起きしていたのは、東京ロケットメンバー達。


連絡用に使っているアプリから、3人とも早朝からこれを監視していることが分かる。

直接会っていた訳ではないが、ソワソワしているのであろうことは伝わってきた。



8時 00分
 ・
 ・
 ・
『ん、来ない…??』
 ・
 ・
 ・
8時 03分
 ・
 ・
 ・
『少し遅れるみたいだ。30分程度だろうか??』
 ・
 ・
 ・
8時 30分
 ・
 ・
 ・
『まだ来ない。。』
 ・
 ・
 ・

8時 40分

おー、出たぞーっっ!!!

jp.techcrunch.com



早速SNSへシェア。


…ザワザワ @ SNS



9時 41分

The Bridgeも出たーっっ!!!

thebridge.jp



『…あれ…??

真ん中の方が。。。』



資金調達とかの記事はたくさん見たことがあるが…

ここまで表情の固い奴は見たことがない。



そんな、少し変わった月曜日でした。




では前回の続き。

さくらVPS && LAMP && Windows10 ~その1~



==============================
Condition
==============================
・さくらVPS
・Windows10
・ターミナルはTera Term使用
LAMPは比較的新しめ

Linux (CentOS7)
Apache 2.4
MySQL 5.6
PHP 7.1


==============================
Step
==============================
(雑ですが…色々とやります)
CentOSをインストール
②一般ユーザーの設定
③鍵認証の設定

================
④ファイヤーウォールの設定
Apacheのインストール
PHPのインストール
MySQLのインストール
phpMyAdminのインストール

================
postfixでメールの設定
⑩任意ドメインの設定
サブドメインの設定
HTTPS


==============================
Procedure
==============================

firewalldをインストールして起動 + 自動起動設定。

yum install firewalld

systemctl start firewalld
systemctl enable firewalld

必要なポート(今回はHTTP、HTTPS)の開放。

firewall-cmd --add-service=http --zone=public --permanent
firewall-cmd --add-service=https --zone=public --permanent


※もしくは設定ファイルに、直接書き加えてもOK。

vi /etc/firewalld/zones/public.xml
<service name="http"/>
<service name="https"/>


リロードして、ステータスを確認。

firewall-cmd --reload
firewall-cmd --list-all


( ゚Д゚):『servicesのところ、良さげかな??


※今回は割愛するが、ホスト単位で更に締め上げたい場合は以下のファイルを編集。

vi /etc/hosts.deny
vi /etc/hosts.allow



yumをアップデート。

yum update

Apacheをインストールして起動 + 自動起動設定。

yum -y install httpd

systemctl restart httpd
systemctl enable httpd



先に必要なリポジトリを用意。

yum install epel-release
wget https://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm

PHPと拡張モジュールをインストール
php-pearは、無ければ不要。

yum install php71

yum install php71-php-gd php71-php-intl php71-php-mbstring php71-php-mcrypt php71-php-pdo php71-php-pear php71-php-pecl-zip php71-php-xml php71-php php71-php-pecl-uuid php71-php-mysqlnd

Apacheを再起動し、PHPを有効化。

systemctl restart httpd



デフォルトではMariaDBが入っているが、これはMySQLと競合する可能性があるので削除。

yum -y remove mariadb-libs

必要なリポジトリを用意。

wget https://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -Uvh mysql-community-release-el7-5.noarch.rpm

MySQLをインストールして起動 + 自動起動設定。

yum install mysql-community-server mysql-community-client

systemctl start mysqld
systemctl enable mysqld

インストール後の初期設定を行う。
基本全て『Y』でOK。
※ここで設定するパスワードは、絶対に忘れないように。

mysql_secure_installation

一旦、exitして。

exit

設定ファイルに以下を追記しておく。

vi /etc/my.cnf
max_allowed_packet=16MB
character-set-server=utf8

MySQLを再起動して、設定を有効化。

systemctl restart mysqld



まずはインストールするディレクトリに移動。
※今回は以下の通り。

cd /var/www

(なるべく最新の)phpMyAdminをダウンロードして、解凍。

wget https://files.phpmyadmin.net/phpMyAdmin/4.7.3/phpMyAdmin-4.7.3-all-languages.zip
unzip phpMyAdmin-4.7.3-all-languages.zip

元のzipファイルは不要なので、削除。

rm phpMyAdmin-4.7.3-all-languages.zip

必要ならば、分かり易い名前にリネーム。

mv phpMyAdmin-4.7.3-all-languages /var/www/html/phpmyadmin

『http://{IPアドレス}/phpmyadmin』にアクセスし、

ユーザー名:root
パスワード:{MySQL初期設定で作ったパスワード}


( ゚Д゚):『ちゃんとログインできただろうか??



問題なければ、今日はここまで。

さくらVPS && LAMP && Windows10 ~その1~

『助太刀くんをリリースするにあたって、サーバーはどうしようか??』


『まぁ、クラウドにするかVPSか分からないけど。
VPSなら後々コーポレートサイトとか、他の静的ページとかも入れておけるし。
1つ作っておきましょうか?』



・・・そして1ヶ月が過ぎ・・・



『やっぱり、最初からクラウドで行こうじゃないか!!』


時代に乗ることにしました。



本当にコーポレートサイトを入れておくだけなってしまいそうなVPS先輩。


今回のテーマは、そんなVPSLAMP環境を作った時のメモです。



==============================
Condition
==============================
・さくらVPS
・Windows10
・ターミナルはTera Term使用
LAMPは比較的新しめ

Linux (CentOS7)
Apache 2.4
MySQL 5.6
PHP 7.1


==============================
Step
==============================
(雑ですが…色々とやります)
CentOSをインストール
②一般ユーザーの設定
③鍵認証の設定

================
④ファイヤーウォールの設定
Apacheのインストール
PHPのインストール
MySQLのインストール
phpMyAdminのインストール

================
postfixでメールの設定
⑩任意ドメインの設定
サブドメインの設定
HTTPS


==============================
Procedure
==============================

さくらVPSのコントロールパネル→

対象のサーバーを選択→

各種設定→

OSインストール→

標準OSインストール→

CentOS7



サーバーを起動させてから、Tera Termでrootログイン後、一般ユーザーを作成しパスワードを設定。

useradd {user}
passwd {user}

「sudo」を利用できるようにするため、(ひとまず)wheelグループに追加。

usermod -g wheel {user}


不要であれば、ユーザーの元のグループを削除。

groupdel {user}


ログアウトし、作成したユーザーでログインしてみる。



鍵を作成する。

ssh-keygen -t rsa

パスフレーズが不要なら、そのままEnterで進む。必要なら設定する。

公開鍵を保存するディレクトリの権限を変更。

chmod 700 .ssh

公開鍵を設置し、元の鍵を削除。

cat .ssh/id_rsa.pub > .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
rm .ssh/id_rsa.pub

秘密鍵を設置する。
Tera Termのファイル→SSH SCP→

下の枠に以下を入力し「Recieve」をクリック。


From: /home/{user}/.ssh/id_rsa
To: ローカルで保管する場所


Tera Termで別ウインドウを開き、ダウンロードした鍵でログインできることを必ず確認する。


ユーザー名: {user}
パスワード: ※設定していなければ空

鍵を使うのラジオを選択し、ダウンロードした秘密鍵を選択


( ゚Д゚):『ちゃんとログインできただろうか??


出来ていれば、サーバー側の秘密鍵を削除。

rm .ssh/id_rsa

rootログインとパスワードログインを禁止する。

sudo -s
vi /etc/ssh/sshd_config

以下の箇所を変更。

#PermitRootLogin yes
->PermitRootLogin no

PasswordAuthentication yes
->PasswordAuthentication no

sshdを再起動して、設定を有効化する。
systemctl restart sshd


一旦、ここまで。

XAMPP && メール送信 && 設定

渋谷に引っ越してからというもの、オフィスへの来客も増えてきた東京ロケット。


『これは、いい流れなのではないか??』と、メンバーは嬉々としている。


そんな折。
新しくサーバーを立てて、持っていたドメインを全てそちらに移管した。


『絶好の波(?)が来ている時に、お問い合わせフォームに問題が起きて、チャンスをミスするわけにはいかない。』


…とまぁ、いいタイミングなので。
お問い合わせフォームに問題が発生しないかを再確認していたのが、先週の木曜日のこと。

何度も何度もフォーム入力しては、メールを確認する。
変な個所があれば、修正してサーバーに上げて確認する。


『テスト太郎』という者から、やたらと問合せメールが飛んでくる。

渋い作業である。


そんな時、CEOが言った。


『てかさ…XAMPPからメール送信ができないのってけっこう不便だな。』


ということで、今回はXAMPPでメール送信の設定を行うこと。


==============================
Condition
==============================
・XAMPPはC直下にインストールされている。
outlook.comを使用する。
※未だにgmailじゃないことに驚かれ、いじられる。

==============================
Step
==============================
php.iniを修正
sendmail.iniを修正
apacheを再起動
④テストメール送信

※設定ファイルを触る際は、念の為バックアップを取っておいた方が良い。

==============================
Procedure
==============================

『C:\xampp\php\php.ini』を開き、以下を追記/修正。

sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"



『C:\xampp\sendmail\sendmail.ini』を開き、以下を追記/修正。

smtp_server=smtp-mail.outlook.com
smtp_port=587
auth_username={Account Name}@outlook.com
auth_password={Password}
force_sender={Account Name}@outlook.com



apacheを再起動。



sendmail.php』といファイルを作成して、以下を記載。webから叩いてみる。

<?php
if (mb_send_mail('{送信先のメールアドレス}', 'テストタイトル', 'テスト本文', 'From: {Account Name}@outlook.com')) {
  echo '送信成功';
} else {
  echo '送信失敗';
}


もし何かエラーが出ていれば、以下を確認。
『C:\xampp\sendmail


尚、Gmailを差出人としての送信は出来ないと読んだことがあります。
私もやってみたけど、Gmailはダメでした。


以上。

ご挨拶

初めまして。

東京ロケットCTOの金田です。
これからCTOのお仕事を通して、面白い記事を書いていきますのでよろしくお願いします。

広告を非表示にする