CentOS 8 インストール [09]

いよいよ、WordPress の引っ越しにかかるわけですが、だいたいの道筋を

あらかじめ調べて、一気に実行!と思ったのですが、最初の分かれ道までを

調べて、次に、その次の分かれ道までを調べた時点で、最初に調べた部分が

薄ぼんやりとしてくることがわかりました。さらに、その次の道筋なんぞを

調べようものなら、最初の部分は、完全に脳内から消滅してしまいます。

「間違えたときのためのクローン作成じゃないか」

と自分を励まして?やはり、一段ずつ階段を登ることにしました。

最初に、WordPress が格納されたディレクトリを FTP で丸ごとダウンロードして

CentOS 8 機の同じ場所にアップロードしました。このプロセスは、

まず、引っ越し先に WordPress をインストールしておいて、そこに、

上書きの形でアップロードするほうがいいという書き方をしてるサイトの

ほうが、多かったのですが、「いやいや、インストールなんてしなくて

いいのだ。単にディレクトリごとアップロードすればいい」

というサイトも、あったので、とりあえず、まんまでアップロードしました。

次に、データベースの移行ですが、MySQL のバージョンが

# mysql –version
mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (i386) using readline 5.1

だったので、phpMyAdmin-4.0.10.9-all-languages.zip をダウンロードして

インストールしました。そして、WordPress の Database をエクスポート

しました。サイズは、9.14 MB と思ったより小さかったので、CentOS 8 機にも

phpMyAdmin-4.9.2-all-languages をインストールしようとしたのですが、

参考ページからのコピペを書き換えるのを忘れて、実際にインストールしたのは

phpMyAdmin-4.9.1-all-languagesでした。

さっそく、phpMyAdmin にアクセスしてみると……これが、ウンともスンとも、

ページは真っ白なまま。

やはり、CentOS 6 に phpMyAdmin-4.0.10.9-all-languages をインストールするのとは、

違うようで、じゃあ、CentOS8機に直接インストールしてみようと思ったわけです。

# wget https://files.phpmyadmin.net/phpMyAdmin/4.9.1/phpMyAdmin-4.9.1-all-languages.tar.gz

公式ページからパッケージをダウンロードしました。

# tar -zxvf phpMyAdmin-4.9.1-all-languages.tar.gz

↑↑↑ phpMyAdminをインストール

# mv phpMyAdmin-4.9.1-all-languages /usr/dokolife_w/phpMyAdmin

↑↑↑ phpMyAdminセットアップを目的の場所に移動……なんですが、

/usr/dokolife_w/phpMyAdmin/phpMyAdmin-4.9.1-all-languages

ディレクトリ内にセットアップした形になってしまい、FTP を使って

本来の目的の場所に再移動するハメになりました。

# mv phpMyAdmin-4.9.1-all-languages /usr/dokolife_w

で移動して、ディレクトリの名前を好きなように変更したほうがラクでした。

phpMyAdminを構成する

サンプル構成ファイルをコピーします。

# cp -pr /usr/dokolife_w/phpMyAdmin/config.sample.inc.php /usr/dokolife_w/phpMyAdmin/config.inc.php

構成ファイルを編集して、blowfish_secret を追加します。

$cfg[‘blowfish_secret’] = ‘jinSEirakuaRYa‘; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

phpMyAdminのtmpディレクトリを作成し、権限を変更します。

# mkdir /usr/dokolife_w/phpMyAdmin/tmp
# chmod 777 /usr/dokolife_w/phpMyAdmin/tmp

phpMyAdminの所有権を設定します。

# chown -R dokolife_w:dokolife_w /usr/dokolife_w/phpMyAdmin

さて、http://192.168.1.19/phpMyAdmin/ に接続してみると、

phpMyAdmin – Error
The json extension is
missing. Please check your PHP configuration.

エラーが出てしまいました。
いろいろ、検索しまくって、↓↓↓ のパッケージをインストール。
# dnf install -y php-json.x86_64

phpMyAdmin – Error
Error during session
start; please check your PHP and/or webserver log file and
configure your PHP installation properly. Also ensure that
cookies are enabled in your browser.
session_start():
open(SESSION_FILE, O_RDWR) failed: Permission denied (13)
session_start(): Failed
to read session data: files (path: /var/lib/php/session)

今度は、↑↑↑ のエラー。またまた、検索しまくって、

# chmod 777 /var/lib/php/session

やっと、ログイン画面が表示されました。WordPress の Database をインポートして、

http://192.168.1.19/wordpress/

に、接続してみると、

データベース接続確立エラー

がーん。

CentOS 8 インストール [08]

さあ、今夜も頭蓋骨内に蟹味噌を製造するゾーっ!

5-1. php-fpmの起動と起動後の確認

# systemctl start php-fpm
# systemctl status php-fpm
php-fpm.service – The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor pr>
Active: active (running) since Mon 2019-12-09 17:22:15 JST; 2min 12s ago
Main PID: 839 (php-fpm)
Status: “Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/s>
Tasks: 3 (limit: 26213)
Memory: 25.1M
CGroup: /system.slice/php-fpm.service
tq 839 php-fpm: master process (/etc/php-fpm.conf)
tq1137 php-fpm: pool www
mq1138 php-fpm: pool www

12月 09 17:22:13 localhost.localdomain systemd[1]: Starting The PHP FastCGI Pro>
12月 09 17:22:15 localhost.localdomain php-fpm[839]: [09-Dec-2019 17:22:15] WAR>
12月 09 17:22:15 localhost.localdomain php-fpm[839]: [09-Dec-2019 17:22:15] WAR>
12月 09 17:22:15 localhost.localdomain systemd[1]: Started The PHP FastCGI Proc>
lines 1-16/16 (END)


5-2. php-fpmの自動起動設定

# systemctl enable php-fpm
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

# systemctl is-enabled php-fpm
enabled

6-1. php.iniの変更

# cp -p /etc/php.ini /etc/php.ini.org
# vi /etc/php.ini

6-1-1. PHPのセキュリティ設定

expose_php = Off      (PHPのバージョンを非表示)

6-1-2. アップロードサイズの変更

post_max_size = 20M

upload_max_filesize = 20M

6-1-3. タイムゾーンの設定

date.timezone = “Asia/Tokyo” (コメントアウトを外して追記)

6-1-4. マルチバイト対応(日本語対応)設定

mbstring.language = Japanese (コメントアウトを外した)

mbstring.internal_encoding = UTF-8 (コメントアウトを外して追記)

mbstring.http_input = UTF-8 (コメントアウトを外して追記)

mbstring.http_output = pass (コメントアウトを外して追記)

mbstring.encoding_translation = On (コメントアウトを外して変更)

mbstring.detect_order = auto (コメントアウトを外した)

mbstring.substitute_character = none (コメントアウトを外した)

7. php.ini設定ファイルの反映とhttpdの確認

# systemctl restart php-fpm
# systemctl status php-fpm
php-fpm.service – The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor pre>
Active: active (running) since Mon 2019-12-09 18:05:56 JST; 13s ago
Main PID: 2014 (php-fpm)
Status: “Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/s>
Tasks: 3 (limit: 26213)
Memory: 12.5M
CGroup: /system.slice/php-fpm.service
tq2014 php-fpm: master process (/etc/php-fpm.conf)
tq2017 php-fpm: pool www
mq2018 php-fpm: pool www

12月 09 18:05:56 localhost.localdomain systemd[1]: Starting The PHP FastCGI Pro>
12月 09 18:05:56 localhost.localdomain php-fpm[2014]: [09-Dec-2019 18:05:56] WA>
12月 09 18:05:56 localhost.localdomain php-fpm[2014]: [09-Dec-2019 18:05:56] WA>
12月 09 18:05:56 localhost.localdomain systemd[1]: Started The PHP FastCGI Proc>
lines 1-16/16 (END)

 

# systemctl restart httpd
[root@localhost ~]# systemctl status httpd
httpd.service – The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor prese>
Drop-In: /usr/lib/systemd/system/httpd.service.d
mqphp-fpm.conf
Active: active (running) since Mon 2019-12-09 18:10:21 JST; 11s ago
Docs: man:httpd.service(8)
Main PID: 2029 (httpd)
Status: “Running, listening on: port 80”
Tasks: 213 (limit: 26213)
Memory: 51.3M
CGroup: /system.slice/httpd.service
tq2029 /usr/sbin/httpd -DFOREGROUND
tq2031 /usr/sbin/httpd -DFOREGROUND
tq2032 /usr/sbin/httpd -DFOREGROUND
tq2033 /usr/sbin/httpd -DFOREGROUND
mq2034 /usr/sbin/httpd -DFOREGROUND

12月 09 18:10:21 localhost.localdomain systemd[1]: Starting The Apache HTTP Ser>
12月 09 18:10:21 localhost.localdomain httpd[2029]: Server configured, listenin>
12月 09 18:10:21 localhost.localdomain systemd[1]: Started The Apache HTTP Serv>
lines 1-20/20 (END)

8. 動作確認

見事に動作しているのでしょう。

今夜は、盛りだくさん!続いて

CentOS 8にMySQL互換のデータベース MariaDB 10をインストールする

今回も、参考というよりも丸写しすると思われるページは、ここ


3-2. MariaDBのインストール

# dnf install -y mariadb-server mariadb mariadb-devel

自動的にインストールされて、「完了しました!」と表示されたら、

# dnf list installed | grep mariadb
mariadb.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed @AppStream
mariadb-backup.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed @AppStream
mariadb-common.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed @AppStream
mariadb-connector-c.x86_64 3.0.7-1.el8 @AppStream
mariadb-connector-c-config.noarch 3.0.7-1.el8 @AppStream
mariadb-connector-c-devel.x86_64 3.0.7-1.el8 @AppStream
mariadb-devel.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed @AppStream
mariadb-errmsg.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed @AppStream
mariadb-gssapi-server.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed @AppStream
mariadb-server.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed @AppStream
mariadb-server-utils.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed @AppStream

3-4. MariaDB起動の確認

# systemctl start mariadb
# systemctl status mariadb
mariadb.service – MariaDB 10.3 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor pr>
mariadb.service – MariaDB 10.3 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor pr>
mariadb.service – MariaDB 10.3 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor pr>
mariadb.service – MariaDB 10.3 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor pr>
Active: active (running) since Mon 2019-12-09 18:40:22 JST; 14s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Process: 6605 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, st>
Process: 6471 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service >
Process: 6446 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, stat>
Main PID: 6574 (mysqld)
Status: “Taking your SQL requests now…”
Tasks: 30 (limit: 26213)
Memory: 86.3M
CGroup: /system.slice/mariadb.service
mq6574 /usr/libexec/mysqld –basedir=/usr

12月 09 18:40:22 localhost.localdomain mysql-prepare-db-dir[6471]: Please report any problems at http://mariadb.org/jira
12月 09 18:40:22 localhost.localdomain mysql-prepare-db-dir[6471]: The latest information about MariaDB is available at http://mariadb.org/.
12月 09 18:40:22 localhost.localdomain mysql-prepare-db-dir[6471]: You can find additional information about the MySQL part at:
12月 09 18:40:22 localhost.localdomain mysql-prepare-db-dir[6471]: http://dev.mysql.com
12月 09 18:40:22 localhost.localdomain mysql-prepare-db-dir[6471]: Consider joining MariaDB’s strong and vibrant community:
12月 09 18:40:22 localhost.localdomain mysql-prepare-db-dir[6471]: https://mariadb.org/get-involved/
12月 09 18:40:22 localhost.localdomain mysqld[6574]: 2019-12-09 18:40:22 0 [Note] /usr/libexec/mysqld (mysqld 10.3.11-MariaDB) starting as process 6574 …
12月 09 18:40:22 localhost.localdomain mysqld[6574]: 2019-12-09 18:40:22 0 [Warning] Could not increase number of max_open_files to more than 1024 (request: 4186)
12月 09 18:40:22 localhost.localdomain mysqld[6574]: 2019-12-09 18:40:22 0 [Warning] Changed limits: max_open_files: 1024 max_connections: 151 (was 151) table_cache: 421 (was 2000)
12月 09 18:40:22 localhost.localdomain systemd[1]: Started MariaDB 10.3 database server.
lines 1-25/25 (END)

 

3-5. MariaDB自動起動の設定

# systemctl enable mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

# systemctl is-enabled mariadb
enabled

4-1. mysql_secure_installationの実行

# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we’ll need the current
password for the root user. If you’ve just installed MariaDB, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
… Success!

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
… Success!

Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
… Success!

By default, MariaDB comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
… Success!

Cleaning up…

All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

5-1. server.cnfの変更

# cp -p /etc/my.cnf.d/mariadb-server.cnf /etc/my.cnf.d/mariadb-server.cnf.org
# vi /etc/my.cnf.d/mariadb-server.cnf

# this is read by the standalone daemon and embedded servers
[server]
character-set-server=utf8 (行を挿入して追記)

6. mariadb-server.cnf設定ファイルの反映とMariaDBの動作確認

# systemctl restart mariadb
# systemctl status mariadb
mariadb.service – MariaDB 10.3 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-12-09 19:14:51 JST; 11s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Process: 6821 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
Process: 6752 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=exited, status=0/>
Process: 6725 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
Main PID: 6790 (mysqld)
Status: “Taking your SQL requests now…”
Tasks: 30 (limit: 26213)
Memory: 74.7M
CGroup: /system.slice/mariadb.service
mq6790 /usr/libexec/mysqld –basedir=/usr

12月 09 19:14:50 localhost.localdomain systemd[1]: Starting MariaDB 10.3 database server…
12月 09 19:14:50 localhost.localdomain mysql-prepare-db-dir[6752]: Database MariaDB is probably initia>
12月 09 19:14:50 localhost.localdomain mysql-prepare-db-dir[6752]: If this is not the case, make sure >
12月 09 19:14:51 localhost.localdomain mysqld[6790]: 2019-12-09 19:14:51 0 [Note] /usr/libexec/mysqld >
12月 09 19:14:51 localhost.localdomain mysqld[6790]: 2019-12-09 19:14:51 0 [Warning] Could not increas>
12月 09 19:14:51 localhost.localdomain mysqld[6790]: 2019-12-09 19:14:51 0 [Warning] Changed limits: m>
12月 09 19:14:51 localhost.localdomain systemd[1]: Started MariaDB 10.3 database server.
lines 1-22/22 (END)

7. 動作確認

# mysql -uroot -p************************
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.3.11-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)]> create database test_db;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| test_db |
+——————–+
4 rows in set (0.000 sec)

MariaDB [(none)]> use test_db;
Database changed
MariaDB [test_db]> show variables like “chara%”;
+————————–+——————————+
| Variable_name | Value |
+————————–+——————————+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mariadb/charsets/ |
+————————–+——————————+
8 rows in set (0.001 sec)

MariaDB [test_db]> drop database test_db;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
+——————–+
3 rows in set (0.000 sec)

MariaDB [(none)]> quit
Bye

動作確認は完了しました。以上で、基本的なLAMP環境が完成したので、

クローンを作成しておきます。

 

CentOS 8 インストール [07]

今夜も、このページを参考にしながら、PHP をインストールします。

CentOS と Apache httpd のバージョンを確認します。

# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)
# httpd -V | head -n 1
Server version: Apache/2.4.37 (centos)

3-1. PHPパッケージの情報確認

# dnf info php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-mysqlnd
メタデータの期限切れの最終確認: 0:06:55 時間前の 2019年12月08日 20時45分19秒 に 実施しました。
利用可能なパッケージ
名前 : php
バージョン : 7.2.11
リリース : 1.module_el8.0.0+56+d1ca79aa
アーキテクチ : x86_64
サイズ : 1.5 M
ソース : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.src.rpm
Repo : AppStream
概要 : PHP scripting language for creating dynamic web sites
URL : http://www.php.net/
ライセンス : PHP and Zend and BSD and MIT and ASL 1.0
説明 : PHP is an HTML-embedded scripting language. PHP attempts to make
: it easy for developers to write dynamically generated web pages.
: PHP also offers built-in database integration for several
: commercial and non-commercial database management systems, so
: writing a database-enabled webpage with PHP is fairly simple. The
: most common use of PHP coding is probably as a replacement for
: CGI scripts.
:
: The php package contains the module (often referred to as
: mod_php) which adds support for the PHP language to Apache HTTP
: Server.

名前 : php-gd
バージョン : 7.2.11
リリース : 1.module_el8.0.0+56+d1ca79aa
アーキテクチ : x86_64
サイズ : 83 k
ソース : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.src.rpm
Repo : AppStream
概要 : A module for PHP applications for using the gd graphics library
URL : http://www.php.net/
ライセンス : PHP
説明 : The php-gd package contains a dynamic shared object that will add
: support for using the gd graphics library to PHP.

名前 : php-mbstring
バージョン : 7.2.11
リリース : 1.module_el8.0.0+56+d1ca79aa
アーキテクチ : x86_64
サイズ : 580 k
ソース : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.src.rpm
Repo : AppStream
概要 : A module for PHP applications which need multi-byte string
: handling
URL : http://www.php.net/
ライセンス : PHP and LGPLv2 and OpenLDAP
説明 : The php-mbstring package contains a dynamic shared object that
: will add support for multi-byte string handling to PHP.

名前 : php-mysqlnd
バージョン : 7.2.11
リリース : 1.module_el8.0.0+56+d1ca79aa
アーキテクチ : x86_64
サイズ : 190 k
ソース : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.src.rpm
Repo : AppStream
概要 : A module for PHP applications that use MySQL databases
URL : http://www.php.net/
ライセンス : PHP
説明 : The php-mysqlnd package contains a dynamic shared object that
: will add MySQL database support to PHP. MySQL is an
: object-relational database management system. PHP is an
: HTML-embeddable scripting language. If you need MySQL support for
: PHP applications, you will need to install this package and the
: php package.
:
: This package use the MySQL Native Driver

名前 : php-pdo
バージョン : 7.2.11
リリース : 1.module_el8.0.0+56+d1ca79aa
アーキテクチ : x86_64
サイズ : 122 k
ソース : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.src.rpm
Repo : AppStream
概要 : A database access abstraction module for PHP applications
URL : http://www.php.net/
ライセンス : PHP
説明 : The php-pdo package contains a dynamic shared object that will
: add a database access abstraction layer to PHP. This module
: provides a common interface for accessing MySQL, PostgreSQL or
: other databases.

名前 : php-xml
バージョン : 7.2.11
リリース : 1.module_el8.0.0+56+d1ca79aa
アーキテクチ : x86_64
サイズ : 188 k
ソース : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.src.rpm
Repo : AppStream
概要 : A module for PHP applications which use XML
URL : http://www.php.net/
ライセンス : PHP
説明 : The php-xml package contains dynamic shared objects which add
: support to PHP for manipulating XML documents using the DOM tree,
: and performing XSL transformations on XML documents.

名前 : php-xmlrpc
バージョン : 7.2.11
リリース : 1.module_el8.0.0+56+d1ca79aa
アーキテクチ : x86_64
サイズ : 89 k
ソース : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.src.rpm
Repo : AppStream
概要 : A module for PHP applications which use the XML-RPC protocol
URL : http://www.php.net/
ライセンス : PHP and BSD
説明 : The php-xmlrpc package contains a dynamic shared object that will
: add support for the XML-RPC protocol to PHP.

3-2. PHPのインストール

# dnf install -y php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-mysqlnd
メタデータの期限切れの最終確認: 0:12:55 時間前の 2019年12月08日 20時45分19秒 に 実施しました。
依存関係が解決しました。
================================================================================
パッケージ アーキテクチャー
バージョン リポジトリ
サイズ
================================================================================
Installing:
php x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 1.5 M
php-gd x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 83 k
php-mbstring x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 580 k
php-mysqlnd x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 190 k
php-pdo x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 122 k
php-xml x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 188 k
php-xmlrpc x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 89 k
依存関係をインストール中:
nginx-filesystem noarch 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream 24 k
php-cli x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 3.1 M
php-common x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 653 k
弱い依存関係をインストール中:
php-fpm x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 1.6 M
Enabling module streams:
nginx 1.14
php 7.2

トランザクションの概要
================================================================================
インストール 11 パッケージ

ダウンロードサイズの合計: 8.1 M
インストール済みのサイズ: 29 M
パッケージのダウンロード中です:
(1/11): nginx-filesystem-1.14.1-9.module_el8.0. 21 kB/s | 24 kB 00:01
(2/11): php-common-7.2.11-1.module_el8.0.0+56+d 291 kB/s | 653 kB 00:02
(3/11): php-7.2.11-1.module_el8.0.0+56+d1ca79aa 186 kB/s | 1.5 MB 00:08
(4/11): php-gd-7.2.11-1.module_el8.0.0+56+d1ca7 75 kB/s | 83 kB 00:01
(5/11): php-mbstring-7.2.11-1.module_el8.0.0+56 155 kB/s | 580 kB 00:03
(6/11): php-fpm-7.2.11-1.module_el8.0.0+56+d1ca 159 kB/s | 1.6 MB 00:10
(7/11): php-pdo-7.2.11-1.module_el8.0.0+56+d1ca 147 kB/s | 122 kB 00:00
(8/11): php-mysqlnd-7.2.11-1.module_el8.0.0+56+ 138 kB/s | 190 kB 00:01
(9/11): php-xmlrpc-7.2.11-1.module_el8.0.0+56+d 172 kB/s | 89 kB 00:00
(10/11): php-xml-7.2.11-1.module_el8.0.0+56+d1c 208 kB/s | 188 kB 00:00
(11/11): php-cli-7.2.11-1.module_el8.0.0+56+d1c 198 kB/s | 3.1 MB 00:16
——————————————————————————–
合計 472 kB/s | 8.1 MB 00:17
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
準備 : 1/1
Installing : php-common-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86 1/11
Installing : php-cli-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 2/11
Installing : php-pdo-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 3/11
Installing : php-xml-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 4/11
scriptletの実行中: nginx-filesystem-1:1.14.1-9.module_el8.0.0+184+e34 5/11
Installing : nginx-filesystem-1:1.14.1-9.module_el8.0.0+184+e34 5/11
Installing : php-fpm-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 6/11
scriptletの実行中: php-fpm-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 6/11
Installing : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 7/11
Installing : php-xmlrpc-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86 8/11
Installing : php-mysqlnd-7.2.11-1.module_el8.0.0+56+d1ca79aa.x8 9/11
Installing : php-gd-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 10/11
Installing : php-mbstring-7.2.11-1.module_el8.0.0+56+d1ca79aa.x 11/11
scriptletの実行中: php-mbstring-7.2.11-1.module_el8.0.0+56+d1ca79aa.x 11/11
scriptletの実行中: php-fpm-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 11/11
検証 : nginx-filesystem-1:1.14.1-9.module_el8.0.0+184+e34 1/11
検証 : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 2/11
検証 : php-cli-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 3/11
検証 : php-common-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86 4/11
検証 : php-fpm-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 5/11
検証 : php-gd-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 6/11
検証 : php-mbstring-7.2.11-1.module_el8.0.0+56+d1ca79aa.x 7/11
検証 : php-mysqlnd-7.2.11-1.module_el8.0.0+56+d1ca79aa.x8 8/11
検証 : php-pdo-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 9/11
検証 : php-xml-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 10/11
検証 : php-xmlrpc-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86 11/11

インストール済み:
php-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64
php-gd-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64
php-mbstring-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64
php-mysqlnd-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64
php-pdo-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64
php-xml-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64
php-xmlrpc-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64
php-fpm-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64
nginx-filesystem-1:1.14.1-9.module_el8.0.0+184+e34fea82.noarch
php-cli-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64
php-common-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64

完了しました!

3-3. インストールされたPHPパッケージの確認

# dnf list installed | grep php
php.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream
php-cli.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream
php-common.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream
php-fpm.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream
php-gd.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream
php-mbstring.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream
php-mysqlnd.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream
php-pdo.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream
php-xml.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream
php-xmlrpc.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream

3-4. php72 cliの動作確認

# php -v
PHP 7.2.11 (cli) (built: Oct 9 2018 15:09:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

4-1. インストールされたphp-fpmパッケージの確認

# dnf list installed | grep php-fpm
php-fpm.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream

4-2-1. php-fpm設定ファイルのバックアップ

# cp -p /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.org
# vi /etc/php-fpm.d/www.conf

4-3-1. php-fpmを動作させるユーザー、グループの設定変更

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user’s group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = dokolife_w
; RPM: Keep a group allowed to write in log dir.
group = dokolife_w

4-3-2. ソケット接続用の設定

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server.
; Default Values: user and group are set as the running user
; mode is set to 0660
listen.owner = dokolife_w
listen.group = dokolife_w
listen.mode = 0666
(3行ともコメントアウトを外す)

4-3-3. pm.max_パラメーターの変更

このあたりから、どのような設定にするか、悩ましいところです。

かなりの数のページを読みましたが、ハッキリ言ってよくわかりません。

私の CentOS8機の CPU は 2コアで、メモリは、8GB です。

CPU がボトルネックになるので、

pm.max_children = 2

としようと考えました。(コア数の2倍程度に設定するのがいいよという記事もありました)

pm = dynamic とした場合、各数値には以下のようなルールがあるとのことなので、

・pm.start_serversはpm.max_children,pm.max_spare_serversを超えてはならない
・pm.min_spare_serversはpm.max_children,pm.start_servers,pm.max_spare_serversを超えてはならない
・pm.max_spare_serversはpm.max_childrenを超えてはならない

すべて、2以下の数値でなければならないことになります。

意味ないじゃん?

だから、pm = static 決定!

しかし、その場合、設定不要となる pm.start_servers 、

pm.min_spare_servers 、pm.max_spare_servers を

コメントアウトしておけと書いてるページが見つからなかったんだよね。

こういうとき、基本的な知識に欠けてると大いに悩むことに

なるんですが、今回は、コメントアウトしてみました。

; Choose how the process manager will control the number of child processes.
; Possible Values:
; static – a fixed number (pm.max_children) of child processes;
; dynamic – the number of child processes are set dynamically based on the
; following directives. With this process management, there will be
; always at least 1 children.
; pm.max_children – the maximum number of children that can
; be alive at the same time.
; pm.start_servers – the number of children created on startup.
; pm.min_spare_servers – the minimum number of children in ‘idle’
; state (waiting to process). If the number
; of ‘idle’ processes is less than this
; number then some children will be created.
; pm.max_spare_servers – the maximum number of children in ‘idle’
; state (waiting to process). If the number
; of ‘idle’ processes is greater than this
; number then some children will be killed.
; ondemand – no children are created at startup. Children will be forked when
; new requests will connect. The following parameter are used:
; pm.max_children – the maximum number of children that
; can be alive at the same time.
; pm.process_idle_timeout – The number of seconds after which
; an idle process will be killed.
; Note: This value is mandatory.
pm = static

; The number of child processes to be created when pm is set to ‘static’ and the
; maximum number of child processes when pm is set to ‘dynamic’ or ‘ondemand’.
; This value sets the limit on the number of simultaneous requests that will be
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
; CGI. The below defaults are based on a server without much resources. Don’t
; forget to tweak pm.* to fit your needs.
; Note: Used when pm is set to ‘static’, ‘dynamic’ or ‘ondemand’
; Note: This value is mandatory.
pm.max_children = 2

; The number of child processes created on startup.
; Note: Used only when pm is set to ‘dynamic’
; Default Value: min_spare_servers + (max_spare_servers – min_spare_servers) / 2
; pm.start_servers = 5 (コメントアウト)

; The desired minimum number of idle server processes.
; Note: Used only when pm is set to ‘dynamic’
; Note: Mandatory when pm is set to ‘dynamic’
; pm.min_spare_servers = 5 (コメントアウト)

; The desired maximum number of idle server processes.
; Note: Used only when pm is set to ‘dynamic’
; Note: Mandatory when pm is set to ‘dynamic’
; pm.max_spare_servers = 35 (コメントアウト)

; The number of seconds after which an idle process will be killed.
; Note: Used only when pm is set to ‘ondemand’
; Default Value: 10s
;pm.process_idle_timeout = 10s;

; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify ‘0’. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
pm.max_requests = 500 (コメントアウトを外した)

今夜は、ここまで。

明晩は、「5. php-fpmの起動と自動起動設定」以降に取り組みます。

CentOS 8 インストール [06]

インストール [05] までの状態で、インストールした HDD を丸ごと

コピーしました。つまり、クローンを作って、今日からは、

そのクローンに対して構築していきます。つまり、保険ですね。

この先、どんな間違いをしても、インストール [05]  までは

保存されているということです。これからも、要所要所でクローンを

作成して、万一に備えます。

インストール [09]  のクローンを作って入れ替え、インストール [12]  の

クローンを作って入れ替え。まあ、「万一」なら、そこまでの保険を

かけなくてもいいのですが、私の場合、「万一」じゃなくて

「百一」とか、もっと低い確率で迷路に迷い込んで出られなく

なってしまうので、迷子になったとき、振り出しからではなく

少なくとも、何日か前の状態に戻るだけで済むというのは、

何とも心強いのです。

さて次は、ウェブサーバーの構築。このページを参考にします。

冒頭の「1. Apache用ユーザーの追加とパスワードの設定」の

ところで、Apache用ユーザーの追加することで得られる

セキュリティ上の利点の大きさと、次々とユーザーが増えることで

httpd の運用が、どの程度まで煩瑣なものになるのかが、

よくわからなかったので、あちこち読んでたら、一晩かかりました。

SSH や、FTP も危険だけど、ローカルだけで使用するなどの

制限をかけることができますが、ウェブサーバーは、外に繋がなければ

意味がありません。そのぶん、セキュリティについては、できることは

やっておくという基本的な考え方でいないとダメな気がしてきました。

というわけで、ひと晩悩んだけれど、Apache 専用のユーザーを

作成します。

# useradd -s /sbin/nologin dokolife_w
# passwd dokolife_w
ユーザー dokolife_w のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

作成したユーザーの確認です。

# cat /etc/passwd | grep dokolife_w
dokolife_w:x:1001:1001::/home/dokolife_w:/sbin/nologin
# id dokolife_w
uid=1001(dokolife_w) gid=1001(dokolife_w) groups=1001(dokolife_w)

3. Apache httpdパッケージのインストール
(参考にしたページの見出し;以下同じ)

httpd.x86_64:httpdウェブサーバー本体
httpd-devel.x86_64:httpd開発ツール、モジュールなど
httpd-manual.noarch:httpdのマニュアル
httpd-tools.x86_64:httpdに関連するツール群

以上の4つのパッケージをインストールします。

# dnf -y install httpd httpd-tools httpd-devel httpd-manual

↑↑↑ を実行。インストールを確認します。

# dnf list installed | grep httpd
centos-logos-httpd.noarch 80.5-2.el8 @AppStream
httpd.x86_64 2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
httpd-devel.x86_64 2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
httpd-filesystem.noarch 2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
httpd-manual.noarch 2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
httpd-tools.x86_64 2.4.37-12.module_el8.0.0+185+5908b0db @AppStream

# which httpd
/usr/sbin/httpd

3-3. httpd起動の確認

# systemctl start httpd

# systemctl status httpd
● httpd.service – The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor pres>
Active: active (running) since Sat 2019-12-07 20:02:40 JST; 44s ago
Docs: man:httpd.service(8)
Main PID: 3329 (httpd)
Status: “Running, listening on: port 80”
Tasks: 213 (limit: 26213)
Memory: 44.3M
CGroup: /system.slice/httpd.service
tq3329 /usr/sbin/httpd -DFOREGROUND
tq3330 /usr/sbin/httpd -DFOREGROUND
tq3331 /usr/sbin/httpd -DFOREGROUND
tq3332 /usr/sbin/httpd -DFOREGROUND
mq3333 /usr/sbin/httpd -DFOREGROUND

12月 07 20:02:40 localhost.localdomain systemd[1]: Starting The Apache HTTP Ser>
12月 07 20:02:40 localhost.localdomain httpd[3329]: AH00558: httpd: Could not r>
12月 07 20:02:40 localhost.localdomain httpd[3329]: Server configured, listenin>
12月 07 20:02:40 localhost.localdomain systemd[1]: Started The Apache HTTP Serv>
lines 1-19/19 (END)

3-4. httpd自動起動の設定

# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

確認
# systemctl is-enabled httpd
enabled

4. firewallの許可設定

80番ポートを開ける
# firewall-cmd –add-service=http –permanent
success

設定を反映
# firewall-cmd –reload
success

設定の確認
# firewall-cmd –list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp3s0
sources:
services: cockpit dhcpv6-client ftp http
ports: 21000-21010/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

6-1. httpd.confの変更

httpd.conf をバックアップ
# cd /etc/httpd/conf
# cp -p httpd.conf httpd.conf.org

# vi httpd.conf

6-1-1. 動作ユーザー・グループの変更
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User dokolife_w
Group dokolife_w

 

6-1-2. サーバー管理者のメールアドレス変更

#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
ServerAdmin dokolife@nanjamonja.com

6-1-3. サーバーのホスト名変更

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn’t have a registered DNS name, enter its IP address here.
#
ServerName dokolife.net:80

 

6-3. 不要な設定ファイルの移動

# cd /etc/httpd/conf.d
# ls
README autoindex.conf manual.conf userdir.conf welcome.conf
# mv autoindex.conf autoindex.conf.org
# mv welcome.conf welcome.conf.org

6-4. 設定ファイル 変更点の反映

# systemctl restart httpd

確認
# systemctl status httpd
httpd.service – The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor prese>
Active: active (running) since Sat 2019-12-07 21:10:20 JST; 15s ago
Docs: man:httpd.service(8)
Main PID: 3978 (httpd)
Status: “Running, listening on: port 80”
Tasks: 213 (limit: 26213)
Memory: 45.0M
CGroup: /system.slice/httpd.service
tq3978 /usr/sbin/httpd -DFOREGROUND
tq3981 /usr/sbin/httpd -DFOREGROUND
tq3982 /usr/sbin/httpd -DFOREGROUND
tq3983 /usr/sbin/httpd -DFOREGROUND
mq3984 /usr/sbin/httpd -DFOREGROUND

ここまでで、ウェブサーバーの構築は、一応完了で

http://192.168.1.19/

に接続すると、

index.html が表示されました。トップページを「Object Moved」に

するのは、何らかの対策で始めたことですが、今となっては、

何のためだったか、少々調べたところでわかりません。

まあ、私のクセなのだろうくらいに思ってください。

続いて、Apache HTTPサーバの基本的なセキュリティ設定を

して行きます。

ディレクトリ内容一覧表示機能を無効にする

httpd.confを編集します。

# Further relax access to the default document root:
<Directory “/var/www/html”>
#
# Possible values for the Options directive are “None”, “All”,
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that “MultiViews” must be named *explicitly* — “Options All”
# doesn’t give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options FollowSymLinks ← Options Indexes FollowSymLinks

 

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None

 

これをしておかないと、うっかり、index.html を置き忘れた

ディレクトリにアクセスされるとファイルの一覧が表示されて

しまいます。

HTTP TRACEメソッドへの対応

httpd.confを編集します。

一番下に

## HTTP TRACE off
TraceEnable off

を追加します。

設定変更後にApacheの再起動を実行して、設定を有効にします。

クリックジャッキング攻撃への対応

# vi /etc/httpd/conf.modules.d/00-base.conf

で、00-base.conf を開いて、

LoadModule headers_module modules/mod_headers.so

↑↑↑ という行があることを確認します。

もし、コメントアウトされていたら外します。

httpd.confを編集します。

一番下に

# X-Frame-Options Setting
Header append X-FRAME-OPTIONS "DENY"

を追加します。

設定変更後にApacheの再起動を実行して、設定を有効にします。

apacheのバージョン情報を取得できないようにする

httpd.confを編集します。

一番下に

ServerTokens ProductOnly
ServerSignature off

を追加します。

設定変更後にApacheの再起動を実行して、設定を有効にします。

今夜は、このくらいですかね。PHPをインストールしたら、

PHP バージョン表示の無効化も必要ですね。

その次は、MariaDB 10のインストールという順番でしょうか。

CentOS 8 インストール [05]

昨夜までで、基本的な設定は完了したので、いよいよ、今夜からは

現サーバーと同じ働きができるように設定していくという段階に

入ります。

最初に、FTP ですね。インストール時のアドオンの選択で

Vsftpd は、インストールできてるはずですから、

# vi /etc/vsftpd/vsftpd.conf

# 12行目:NO になっているか確認 (匿名ログイン禁止)

anonymous_enable=NO
# 83,84行目:コメント解除 ( アスキーモードでの転送を許可 )

ascii_upload_enable=YES
ascii_download_enable=YES
# 101,102行目:コメント解除 ( chroot 有効 )

chroot_local_user=YES
chroot_list_enable=YES
# 104行目:コメント解除 ( chroot リストファイル指定 )

chroot_list_file=/etc/vsftpd/chroot_list
# 110行目:コメント解除 ( ディレクトリごと一括での転送有効 )

ls_recurse_enable=YES
# 115行目:変更 ( IPv4 のみをリスンする場合 )

# IPv4 と IPv6 の両方をリスンする場合は NO で OK

listen=YES
# 124行目:変更 ( もし不要なら IPv6 はリスンしない )

# IPv4 と IPv6 の両方をリスンする場合は YES

listen_ipv6=NO
# 最終行へ追記

# ルートディレクトリ指定 ( 未指定の場合はホームディレクトリがルートディレクトリとなる )

local_root=public_html
# ローカルタイムを使用する

use_localtime=YES
# seccomp filter をオフにする ( ログインに失敗する場合はオフにする )

seccomp_sandbox=NO

続いて、

# vi /etc/vsftpd/chroot_list
# chroot を適用しない (上層への cd を許可する) ユーザーを追加

dokolife

次に

# systemctl enable –now vsftpd
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.

Firewalld を有効にしている場合は、FTP サービスの許可が必要です。

# vi /etc/vsftpd/vsftpd.conf

# PASV ポートを固定 (必要に応じて任意の範囲)

pasv_enable=YES
pasv_min_port=21000
pasv_max_port=21010

vsftpd.conf の最終行に PASV ポートを固定するための

追記を終えたら、

# systemctl restart vsftpd
# firewall-cmd –add-service=ftp –permanent
success
# firewall-cmd –add-port=21000-21010/tcp –permanent
success
# firewall-cmd –reload
success

以上で、FTP 接続できるようになったハズですよね?

ハイ!できました。(喜ばしいことではあるのですが)

なんだか、あっけなかったですね。

local_root=public_html の指定は、どこに行ったの?

という謎はありますが、何事もなく繋がるなら

それに越したことはありません。

CentOS 8 インストール [04]

さあ、今夜も元気に CentOS8機の構築です。

不要なサービスの無効化ですが、

smartd.service と mdmonitor.service の二つだけ、無効にしました。

auditd.service と abrt-vmcore.service については、判断できるだけの

知識が不足してるので、今回は、手をつけずにおきます。

# systemctl disable smartd.service
Removed /etc/systemd/system/multi-user.target.wants/smartd.service.
# systemctl disable mdmonitor.service
Removed /etc/systemd/system/multi-user.target.wants/mdmonitor.service.

今夜の作業が終わったら シャットダウンするので、ここでは、わざわざ

再起動はしません。

次は、重要項目のサーバーの時刻同期の設定。

# vi /etc/chrony.conf

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
pool 2.centos.pool.ntp.org iburst

↓ ↓ ↓

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# pool 2.centos.pool.ntp.org iburst
pool ntp.jst.mfeed.ad.jp iburst

/etc/chrony.conf を書き換えて、タイムサーバーを変更します。

# systemctl restart chronyd

↑↑↑ chronydサービスを再起動

設定した内容が正常に反映されたかどうかを確認します。

# chronyc tracking
Reference ID : D2ADA01B (ntp1.jst.mfeed.ad.jp)
Stratum : 3
Ref time (UTC) : Wed Dec 04 12:00:09 2019
System time : 0.000000652 seconds slow of NTP time
Last offset : +0.000134692 seconds
RMS offset : 0.000134692 seconds
Frequency : 18.812 ppm fast
Residual freq : +42.560 ppm
Skew : 1.274 ppm
Root delay : 0.077115275 seconds
Root dispersion : 0.042542141 seconds
Update interval : 1.9 seconds
Leap status : Normal

あれぇ?時間が違います。タイムゾーンを確認してみると

# timedatectl
Local time: 水 2019-12-04 07:03:11 EST
Universal time: 水 2019-12-04 12:03:11 UTC
RTC time: 水 2019-12-04 12:03:11
Time zone: America/New_York (EST, -0500)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

タイムゾーンが、EST/米国東部標準時になってます。

# timedatectl set-timezone Asia/Tokyo

タイムゾーンを変更

# systemctl restart chronyd

chronydサービスを再起動

# chronyc tracking
Reference ID : D2ADA01B (ntp1.jst.mfeed.ad.jp)
Stratum : 3
Ref time (UTC) : Wed Dec 04 12:18:38 2019
System time : 0.000049007 seconds slow of NTP time
Last offset : -0.000173467 seconds
RMS offset : 0.001871769 seconds
Frequency : 17.631 ppm fast
Residual freq : -0.031 ppm
Skew : 3.122 ppm
Root delay : 0.073843412 seconds
Root dispersion : 0.042838268 seconds
Update interval : 64.6 seconds
Leap status : Normal

ありゃりゃ!そうか。chronyc tracking では、UTC/協定世界時しか

表示されませんね。タームゾーンが違ってることに気づけたのは

けがの功名でした。

# timedatectl
Local time: 水 2019-12-04 21:05:41 JST
Universal time: 水 2019-12-04 12:05:41 UTC
RTC time: 水 2019-12-04 12:05:42
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: no
NTP service: active
RTC in local TZ: no

OKです。

昨夜同様、このページに従って設定してます。

次の SSHサービスのセキュリティ設定については、

CentOS 8 インストール [03] で、メイン機からしか SSH 接続

できないように設定したので、OKかと。ONU のポートも

開かないし。

一般ユーザーの作成とグループ wheel への追加も完了してます。

# vi /etc/pam.d/su

#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the “wheel” group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the “wheel” group.
auth required pam_wheel.so use_uid
auth substack system-auth
auth include postlogin
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session include postlogin
session optional pam_xauth.so

↓↓↓ をコメントアウトしました。
auth required pam_wheel.so use_uid

これで、wheelグループ以外のユーザーは、su コマンドを実行することが

できなくなりました。

どうせ、参考と言いながら、ほぼ、丸写しで設定しているので

見出しを引用しますね。


10. locateコマンドを利用できるようにする

mlocateパッケージをインストールします。

# dnf -y install mlocate
CentOS-8 – AppStream 1.8 kB/s | 4.3 kB 00:02
CentOS-8 – Base 1.4 kB/s | 3.9 kB 00:02
CentOS-8 – Extras 652 B/s | 1.5 kB 00:02
Package mlocate-0.26-20.el8.x86_64 is already installed.
依存関係が解決しました。
行うべきことはありません。
完了しました!

updatedbコマンドを実行します。

# updatedb

以上で完了です。

locateコマンドは、Ubuntu機内のパッケージを探した時、便利でした。


11. ロケールの設定

現在時点でのロケール確認します。

# localectl status
System Locale: LANG=ja_JP.UTF-8
VC Keymap: jp
X11 Layout: jp

日本語ロケールのみを表示します。

# localectl list-locales | grep -i jp
ja_JP.eucjp
ja_JP.utf8

日本語ロケールの設定と反映をします。

# localectl set-locale LANG=ja_JP.utf8
# localectl status
System Locale: LANG=ja_JP.utf8
VC Keymap: jp
X11 Layout: jp
# source /etc/locale.conf

ページに書いてあるまま実行していきましたが、localectl status の内容に

変更があったわけでもなく、正直、何をしたのか、わかっていません。

ま、いいか。文字化けしたら、ここを何とかしろってことなんでしょう。

12. タイムゾーンの設定

けがの功名で、設定済みでした。

13. パッケージのアップデート

# dnf check-update

で、更新されるパッケージの一覧を見ると

134行のリストが表示されました。チェックったって、チェックの

ための知識がありません。

# dnf update

アップデートします。

インストール 6 パッケージ
アップグレード 97 パッケージ

だそうです。

これでよろしいですか? [y/N]: y

なんでも、鍵がないから、鍵をインポートしたけど、これで

いいか?という問いに、y と答えたようです。

鍵のインポートに成功しました
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中

とのことで、200 ものトランザクションを実行して

検証してました。

今夜は、このあたりまででしょうかねぇ。

CentOS 8 インストール [03]

昨夜は、FTP サーバーに、接続することができず、「centos7 vsftpd 接続できない」に

大ハマリ の再来襲かと、ジタバタしても、どうにもならず、とりあえず、

先送りすることにして、selinuxを無効化したら、何と!SSH 接続できなく

なってしまいました。躊躇せず、4回目のクリーンインストール。

LAN アダプタのコネクションを有効化してみると…… IP アドレスが

変更になっているではありませんか。どうやら、selinuxの無効化のために

再起動する前に、女房が使ってたパソコンをシャットダウンさせたので

再起動前とは違うアドレスを割り当てられたので、「繋がらない、

繋がらない」となってしまったようです。おそまつさまでした。

早いとこ、IP アドレスの固定化をしなければなりませんね。

CentOS Linux 8のインストール後に設定する12の項目 というページを

参考にしながら、設定をしていきます。操作は主に root で接続した

TeraTerm を使います。おいおい!一般ユーザーで操作すべきだろう

という声があるのは存じてますが、何でもかんでも、sudo をつけるだけ

なので、操作ミスの防止にはならないと思うんですよね。

しかし、一般ユーザーの追加だけは、ここでしておきます。

# useradd dokolife
# passwd dokolife
ユーザー dokolife のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
# gpasswd -a dokolife wheel
ユーザ dokolife をグループ wheel に追加

次は、selinuxの無効化

# getenforce
Enforcing

で、selinux が有効になっていることが確認できたら、

# vi /etc/selinux/config

SELINUX=enforcing → SELINUX=disabled

に変更して保存し、再起動するだけで、selinux は無効になります。

次は、「bash-completion パッケージの導入」ですが、CentOS 8のインストール時に

アプリケーショングループとして「サーバー」を選択しているので、すでに

導入済みとのことなので、省略。

さて、お待ちかね?「ネットワークの設定」

enp3s0 というのは、コネクション名だったのね。デバイス名でもある。

# nmcli connection show

で、確認できます。さて、固定アドレスを何番にするかな。2019 年構築

開始と言うことで、192.168.1.19 にしてみるかな。都合が悪ければ、

いつでも変更できるし。ついでに、CentOS8機の仮称をジュークと命名。

# nmcli connection modify enp3s0 ipv4.method manual connection.autoconnect yes ipv4.addresses 192.168.1.19/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.1
# nmcli connection up enp3s0

TeraTerm が、アボートするので、192.168.1.19 で繋ぎ直して

次は、firewalldの基本的な設定

# firewall-cmd –get-default-zone
public

「public」ゾーンがデフォルトゾーンに設定されていることが確認できました。

# firewall-cmd –list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp3s0
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

新しいゾーンを作成

# firewall-cmd –new-zone=manage –permanent
success

接続の許可を「manage」ゾーンに与えます。

# firewall-cmd –zone=manage –set-target=ACCEPT –permanent
success

続いてゾーンに接続を許可するサービスを追加(sshとftpの追加)

# firewall-cmd –zone=manage –add-service=ssh –permanent
success
# firewall-cmd –zone=manage –add-service=ftp –permanent
success

ssh とftp に対して接続できる、接続元IPアドレスを追加

# firewall-cmd –zone=manage –add-source=192.168.1.7/32 –permanent
success
# firewall-cmd –reload
success

192.168.1.7 は、設定に使ってるメイン機のアドレス(固定)
[メイン機の仮称は、ナナですね]

このアドレスって、複数設定できないのかなあ。ちょっと調べただけでは、

わからないので、宿題ですね。

publicゾーンからsshサービスの削除

# firewall-cmd –remove-service=ssh –zone=public –permanent
success
# firewall-cmd –reload
success

# firewall-cmd –list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp3s0
sources:
services: cockpit dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

表示された項目「services」から「ssh」が消えてます。

今夜は、ここまでですね。脳が、ほぼ、バフンウニ化してきてます。

ところで、メイン機は、ほぼ、常時稼働状態で使って来てたので

シャットダウンさせてる状態で、キーボードの Enter キーを押すと

電源が入ることを初めて知りました。Enter キーじゃなくても、

他のキーでも同様だと思われますが、それは、明日確かめることに

なります。

CentOS 8 インストール [02]

さてと、昨夜のうちに再インストールが完了してるので、

元気に、CentOS 8 の設定だ!

と、勇みながら、まず、IP アドレスは何かな?と

# ip -4 a

lo: の 127.0.0.1/0 だけ!enp3s0 が、ないっ!

昨夜と一緒じゃん。2年前、このドコライフがある鯖が、ぶっ飛んだ時の

悪夢が、まざまざとよみがえってきました。

# nmcli d
DEVICE TYPE STATE CONNECTION
enp3c0 ethernet disconnected —

赤字だ~(涙)そういえば、鯖がぶっ飛んだときも、どうやっても

オンボードの LAN アダプタ経由ではネットワークに接続できなかったのです。

あのときは、LVM 論理ボリュームマネージャの情報が亡霊のように

いつまでも消えなくて、検索に検索を重ねて、LVMに関する情報は、

ディスクドライブの先頭からベタに書いてあるという情報を得て、

先頭から 8750 bytes を乱数で埋めました。今回も

# dd if=/dev/random of=/dev/sda count=1024
0+1024 records in
157+1 records out
80549 bytes (81 kB, 79KiB) copied, 8.169667 s, 475 kB/s

そして、再々クリーンインストール。今度は、寝る前にスタート、

朝目が覚めたら完了してるのパターンではなくて、ちゃんと

インストールが終わるのを待ちました。所要時間 10分。

な~んだ、そのくらいの時間でできるなら、この先、いつでも

再インストールできるじゃん。

さっそく、

# ip -4 a

lo: の 127.0.0.1/0 だけ!enp3s0 が、ないっ!

さあ、4回目のクリーンインストール?いえいえ、ここは検索検索。

# nmcli connection up enp3c0

Connection successfuly ……

と、回答が!

# nmcli d
DEVICE TYPE STATE CONNECTION
enp3s0 ethernet connected enp3s0
lo loopback unmanaged —

緑字ですよ。緑字!

# ip -4 a

で、IP アドレスを調べて、TeraTerm から、ssh接続すると

何の苦労もなく繋がりました。

とまあ、ネットワークに繋がったことは、うれしいのは

うれしいのですが、考えてみると、やっと、ふりだしに

立てただけです。ここから始まる千里の道を無事歩き出せるので

しょうか?

今回の目標は、ドコライフのミラーサイトを作ること。

それができたら、旧鯖は、バックアップとして

凍結し、ドコライフは、CentOS8 機に置いて、

NAS に、ドコライフを自動バックアップする仕組みを

構築する……というものですが、これは、千里どころか万里の

道のりですね。ひゃあ。

CentOS 8 インストール [01]

Ubuntu をインストールしたことで、ちょっと、その気になった

この機会を損失しないように、CentOS 8 のインストールに

とりかかりました。iso ファイルは、6GB 超えとのことなので

DVD には収まらず、USBメモリに焼きました。

最初、ISO to USB で、iso を焼いたのですが、なぜか、うまく

ブートできなかったので、Rufus で焼いたものを使いました。

英語が苦手な私でも、日本語を選んでインストールが始まって

しまえば、画面はすべて日本語表示なので、何とかなりそうな

雰囲気です。ここを参考にしながら、じっくりと進めました。

ソフトウェアの選択では、サーバーを選び、アドオンは、

Windows ファイルサーバー
FTP サーバー
開発ツール
セキュリティツール

の4つを選択しました。

NTPサーバーの追加は、できたと思うのですが、ネットワーク時刻 (N) が、どうしても

ON になりませんでした。IP アドレスは、192.168.1.100 に固定しましたが、昔、

このアドレスで、80 ポートの解放がウマクいかなかったような記憶があるので、

変更した方が無難でしょうね。

就寝前に、インストール開始ボタンを押しておいたので、朝にはインストールが

完了してました。

CentOS8では、デフォルトで OpenSSH がインストールされてるとのことだったので

さっそく、TeraTerm で接続しようとしたところ、「ホストに接続できません」

あれー?直接、# ip -4 a を打っても、lo: だけ。# nmcli device でも、

enp3c0 ethernet disconnected —

赤字だぞ~

USB LANアダプターに替えても同じ。LAN ケーブルを交換しても同じ。

思えば、NTP サーバーに繋がらなかった時点で、すでに問題発生してたかも。

よし!ここは、ジタバタしないで、あっさりと再インストールだ!

ソフトウェアの選択だけ前回と同じサーバーを選び、同じアドオンを

指定して、インストール開始。すでにインストール先に書き込まれものは、

当然、すべて削除。

今さら Ubuntu (δ)

シャットダウンして再起動しました。

SSH 接続で TeraTerm から、

$ sudo /usr/local/bin/DiCE/diced -d -l

で、DiCE(CUI版) を起動します。

root 権限で実行しないと

Exception EInOutError in module <unknown> at xxxxxxxx.
I/O エラー (13).

になります。

続いて、TeraTerm から

$ sudo /usr/local/bin/DiCE/dice

すると、

dice: cannot connect to X server

エラーが出るので、Ubuntu機の端末から、

$ sudo /usr/local/bin/DiCE/dice

で、DiCE(GUI版) を起動します。

このあと、端末を閉じようとすると

となります。実際、端末を閉じたら、DiCE(GUI版) は、強制終了となります。

なので、端末は開きっぱなしで使用します。

あとは、お好みのファイルをダウンロードサイトから入手するなり、

ネットサーフィン(今でも生きてる言葉?)を楽しむなり、

お好きなように。

文字化けも、自動起動も、WindowsからUbuntuにリモートデスクトップ接続も、

な~んにも解決しないで、そのまま?と、あきれる方もいらっしゃるでしょう。

でも、私は、DiCE が Ubuntu で動き、長時間かかるファイルのダウンロードも

電気代を気にすることなくできれば、それでいいのです。

で、DiCE(GUI版)をチェックして、次回予定日を過ぎたイベントがあれば、

メニューの「▯▯▯▯(E)」を開いて、「▯▯▯▯▯(R)」を実行すれば最新の情報に

更新されて、イベントが実行できたかどうかが確認できるので十分なのです。

もし、「それは、生き方としておかしい」だとか、「それで、Ubuntu を

インストールしてみましたぁ。なんて、よくも言えるな」だとか、

ご意見があれば、コメント欄にどうぞ。

※ その後、DiCE(GUI版) は、イベントが実行されると自動的に最新の
  情報に更新されることが確認できました。つまり、スケジュール通りに
  イベントが実行されているかどうかは、DiCE(GUI版) をながめている
  だけで事足りるということのようです。

最後に、大事なことがひとつ。Ubuntu機のバッテリーパックは、取り外して

AC アダプタに繋いだだけの状態で使っています。24時間稼働なので

リチウムイオン電池による火災発生リスクを避けるためです。

常用しているノートパソコンは、使ってないときも、AC アダプタに

繋ぎっぱなしですが、こちらは、メーカーのプログラムにより

60% 以上充電させないようになってるので、まあ、いいかな。

あとは、女房のノートパソコンのバッテリーパックも抜いておこう。