さくらVPSにgitlabとApache2.4、PHP7.2、MySQL8を入れてみた

タイトルの通り、サーバの再構築を行い、gitlabとApache2.4、PHP7.2、MySQL8を入れてみた。
以下、その大まかな手順。なお、今回は1から構築している。

1.OSの再インストール(gitlabはここで一緒に入れる)
さくらVPSのサーバ設定からサーバ選択、各種設定(右上の方にある)から「OS再インストール」を選択。

・OSは標準OSで「CentOS7_x86_64」を選択。(最初の構築時でgitlabを入れるにはこの組み合わせにする必要があるっぽい)
・管理者パスワードはお好みで。スタートアップスクリプトに「[public] CentOS_gitlab」を選択する。
 (どうやら1つしか選択できないので、LAMPなどの別のものは一緒に入れられないっぽい)

これで、設定内容を確認するボタンを押して、あとは画面に従って進めればOK。

OSインストールが完了すると、サーバが稼働中になるので、コンソール立ち上げて残りのソフトをインストール。

gitlab設定変更

vi /etc/gitlab/gitlab.rb
external_urlが書いてある行を以下のように変更。これをやらないとApacheと併用できない。

external_url ‘http://[ドメイン]:10080’

※このURLがgitlabのURLになる。なお、右側の10080はポートなので、ここで設定したポートはファイアフォール設定で開放しておくこと。
(なお、通常のhttpで使用する80ポートは最初から設定済みだった)

設定変更後、gitlabを再設定処理+再起動

gitlab-ctl reconfigure

追加のリポジトリインストール(epel,remi,ius)
yum -y install epel-release
yum install “http://rpms.famillecollet.com/enterprise/remi-release-7.rpm”
yum install “https://centos7.iuscommunity.org/ius-release.rpm”

※以降の各種ソフトインストールで使う。

リポジトリ設定変更
cd /etc/yum.repos.d/
vi epel.repo
vi ius.repo
※いずれも、enabled=0に変更する

yum –enablerepo=epel -y install nghttp2
yum -y install mailcap
※最新のApache入れるのに必要っぽい?nghttp2はhttp2使わなければいらないかも?

Apache(httpd)のインストール
yum –disablerepo=base,extras,updates –enablerepo=ius install httpd

httpd-develとmod_sslのインストール
yum -y install openldap-devel expat-devel
yum -y install libdb-devel
yum –disablerepo=base,extras,updates –enablerepo=ius -y install httpd-devel mod_ssl

※httpd-develを入れるためにopenldap-devel、expat-devel、libdb-develが必要っぽい

Apache設定は状況に応じて変わるので省略。

PHPのインストール
yum install –enablerepo=remi-php72,epel php php-devel php-common php-cli php-pdo php-mcrypt php-mbstring php-gd php-mysqlnd php-pear php-soap php-xml php-xmlrpc php-pecl-apc

php.iniの設定
※最小限の範囲の変更。他の設定はお好みで。

expose_php = On
 ↓
expose_php = Off

memory_limit = 128M
 ↓
memory_limit = 512M

error_log = php_errors.log
 ↓
error_log = “/var/log/php/php_errors.log”

post_max_size = 8M
 ↓
post_max_size = 16M

upload_max_filesize = 2M
 ↓
upload_max_filesize = 8M

date.timezone =
 ↓
date.timezone = ‘Asia/Tokyo’

;mbstring.language = Japanese
 ↓
mbstring.language = Japanese

;mbstring.detect_order = auto
 ↓
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII

;mbstring.encoding_translation = Off
 ↓
mbstring.encoding_translation = Off

phpの設定完了後にApache起動。

systemctl enable httpd.service
systemctl start httpd.service

MySQLのインストール

MySQL8は追加したリポジトリにもないので、MySQL公式から専用のリポジトリを落とす。
rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

yum install mysql-community-devel
yum install mysql-community-server

MySQLの設定(my.cnf)
最小限の範囲で、my.cnfに以下追加。

default_authentication_plugin=mysql_native_password
log_timestamps=SYSTEM
skip-character-set-client-handshake

特に1行目の「default_authentication_plugin=mysql_native_password」はwordpressを使う場合は必須。
(パスワード認証方式がデフォルトの状態では変わっているため、この設定を入れないとログインできない)

MySQLの設定(データベース内の設定)
必要に応じて、以下のコマンドを順次入れる。

パスワード設定条件の緩和(文字数下限6、記号や英数字などの必須条件解除)
SET GLOBAL validate_password.length=6;
SET GLOBAL validate_password.mixed_case_count=0;
SET GLOBAL validate_password.number_count=0;
SET GLOBAL validate_password.special_char_count=0;
SET GLOBAL validate_password.policy=LOW;

SET GLOBAL validate_password_length=6;
SET GLOBAL validate_password_mixed_case_count=0;
SET GLOBAL validate_password_number_count=0;
SET GLOBAL validate_password_special_char_count=0;
SET GLOBAL validate_password_policy=LOW;

rootユーザのパスワード変更
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘パスワード’;

wordpress用のユーザ設定(ユーザ名blog)
CREATE USER ‘blog’@’localhost’ IDENTIFIED WITH mysql_native_password by ‘パスワード’;
GRANT ALL ON blog.* to ‘blog’@’localhost’;

wordpress用のDB作成(DB名blog)
CREATE DATABASE blog;

MySQLサーバを起動。
systemctl enable mysqld
systemctl start mysqld

こんな感じで、一通りの設定が完了。
これで開発中のゲームをgitで保存できる………

参考サイト
gitlabのhttpポート変更
https://ez-net.jp/article/42/LMtSMqNF/76wV8fNmgSLz/

Apache HTTP/2+PHP7.2+MySQL5.7 インストールメモ
https://blog.apar.jp/linux/9411/

CentOS7系 + Apache2.4最新版yumインストール
https://qiita.com/edward999th/items/d1542294c66e647c608c

MySQL 8.0 を yum でインストール&設定メモ
https://blog.apar.jp/linux/9868/