GitLabの設置

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

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


==============================
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~

では、続きを。

さくら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サーバ証明書を取得しておいてください。

mod_sslが入っていなければ、以下のコマンドでインストール。

yum install mod_ssl


/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( ˘ω˘ )



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

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

では前回の続き。

さくら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

パスを通す。
以下のコマンドで表示される内容をコピー。

cat /opt/remi/php70/enable

以下のコマンドで表示されるファイルの最後に、そのまま追記する。

vi /etc/profile

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~

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}

sudoコマンドの制限を掛ける。

sudo vi /etc/pam.d/su

以下の箇所を変更。

#auth           required        pam_wheel.so use_uid
->auth           required        pam_wheel.so use_uid
sudo vi /etc/pam.d/su


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



鍵を作成する。

ssh-keygen -t rsa

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

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

chmod 700 .ssh

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

cp .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 && メール送信 && 設定

今回は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はダメでした。


以上。