技術屋見習いのメモ帳

技術屋見習いのメモ帳です。

CentOS8でNginx+MariaDB環境を構築する。

 nodeアプリを実行するサーバーを用意したいので新しく構築してみる。

リバースプロキシとしてnginx、DBはMariaDBを導入します。

KAGOYA VPSインスタンス作成

f:id:takashun_0704:20200617041111p:plain

 今回は2コア/2GB/30GBを選択しときます。

 

構築作業

 CentOS8からはyumではなくdnfというパッケージ管理システムが用いられている...が、基本的にyumを置き換えるだけで動く。(というかエイリアスが設定されてるので置き換えなくても動く)

# dnf update -y #いつもの
 Nginxを公式リポジトリからインストールする。

 Nginxはバージョンが奇数だと開発版、偶数だと安定版ということになっています。

CentOS8.2のAppStreamからインストールされるのは1.14.1ですが、今回は公式リポジトリから1.18.xをインストールします。

# vi /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
dnf --disablerepo=AppStream install -y nginx
 Nginx起動・確認
# systemctl start nginx
# systemctl enable nginx #自動起動設定
# nginx -v nginx version: nginx/1.18.0
# dnf info nginx Last metadata expiration check: 0:03:54 ago on Thu Jun 18 17:11:00 2020. Installed Packages Name : nginx Epoch : 1 Version : 1.18.0 Release : 1.el8.ngx Architecture : x86_64 Size : 3.6 M Source : nginx-1.18.0-1.el8.ngx.src.rpm Repository : @System From repo : nginx-stable Summary : High performance web server URL : http://nginx.org/ License : 2-clause BSD-like license Description : nginx [engine x] is an HTTP and reverse proxy server, as well as : a mail proxy server.
 MariaDBを公式リポジトリからインストール

Nginxと同様こちらも公式リポジトリからインストールしてみます。

# vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos8-amd64
module_hotfixes=1
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
dnf install -y MariaDB-server
 MariaDB起動・確認
# systemctl start mariadb
# systemctl enable mariadb #自動起動設定
# rpm -qa | grep -i mariadb MariaDB-common-10.4.13-1.el8.x86_64 MariaDB-shared-10.4.13-1.el8.x86_64 MariaDB-client-10.4.13-1.el8.x86_64 MariaDB-server-10.4.13-1.el8.x86_64
# dnf info MariaDB-server Installed Packages Name : MariaDB-server Version : 10.4.13 Release : 1.el8 Architecture : x86_64 Size : 124 M Source : MariaDB-server-10.4.13-1.el8.src.rpm Repository : @System From repo : mariadb Summary : MariaDB: a very fast and robust SQL database server URL : http://mariadb.org License : GPLv2 Description : MariaDB: a very fast and robust SQL database server : : It is GPL v2 licensed, which means you can use the it free of : charge under the conditions of the GNU General Public License : Version 2 (http://www.gnu.org/licenses/). : : MariaDB documentation can be found at https://mariadb.com/kb : MariaDB bug reports should be submitted through : https://jira.mariadb.org
 MariaDBの文字セットをutf8mb4に設定する

記事冒頭で書いたnodeアプリはTwitterのツイートを表示する機能があるのですが、文字セットの設定を適切に行わないと絵文字の表現に失敗して情報が欠落してしまうので対処します。(寿司ビール問題とか言われているらしい)

# vi /etc/my.cnf.d/server.cnf
[mariadb]
character-set-server = utf8mb4
[client-mariadb]
default-character-set = utf8mb4

上記のように設定して保存します。
※10.4.13インストール時点では[mariadb]項には何も書かれておらず、[client-mariadb]項はそもそも存在しなかったので追加しました。

# systemctl restart mariadb
# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.4.13-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.002 sec)

MariaDB [(none)]>  show variables like 'coll%';
+----------------------+--------------------+
| Variable_name        | Value              |
+----------------------+--------------------+
| collation_connection | utf8mb4_general_ci |
| collation_database   | utf8mb4_general_ci |
| collation_server     | utf8mb4_general_ci |
+----------------------+--------------------+
3 rows in set (0.001 sec)

MariaDB [(none)]> exit;
Bye

動作確認OK

まとめ

設定ファイルを書き換えるときはバックアップを取ってからの方が事故が防げて良いかも。

次回はドメインとLet's Encryptの設定を行う予定です。