どうも、白夜霧(@KiRi_Byakuya)です。
今回は『ゼロからはじめるLinuxサーバー構築・運用ガイド 動かしながら学ぶWebサーバーの作り方』を使いながらCentOSの学習を進める際、実際に私がつまづいた箇所の覚書です。
誰かの参考になれば幸いですm(_ _)m
目次
- 1 『ゼロからはじめるLinuxサーバー構築・運用ガイド 動かしながら学ぶWebサーバーの作り方』の評価
- 2 「さくらのVPS」に登録しなくても勉強できる?
- 3 『ゼロからはじめるLinuxサーバー構築・運用ガイド 動かしながら学ぶWebサーバーの作り方』で躓いたところまとめ
- 3.1 「さくらのVPS」に「HDD 100GB」プランがない!
- 3.2 Linux (CentOS 7)にrootユーザー以外の一般ユーザーを追加する
- 3.3 「さくらのVPS」にTera TermでSSHクライアント接続できない!
- 3.4 Linux (CentOS 7)でApacheのテストページが表示できない!ポート80が開放されない!
- 3.5 WordPressの設定phpファイル(wp-config.php)が文字化けする
- 3.6 Linux (CentOS 7)のPHPのバージョンが古いため、WordPressが起動しない。
- 3.7 Linux (CentOS 6)向けのDockerfileがビルド出来ない!
- 3.8 「さくらのVPS」で管理ツール「Webmin」に接続できない!
『ゼロからはじめるLinuxサーバー構築・運用ガイド 動かしながら学ぶWebサーバーの作り方』の評価
- サーバーに初めて触れる人にオススメできる(完全に初心者向け)
- CentOSに触れる機会を得るには最適だと思う。
- サーバー構築に関して「サクッ」と理解したい人にオススメできる。
- 「Docker」に触れられるのがマジで有り難い。※業種的に使わないからこそ、どういうものなのか触れたかった。
あくまで初心者向けの入本書という形の本です。一応私も技術者でご飯を食べてるので、この本一冊で「全部理解したぜ!!」とか言うのは絶対に無理です。
まずはこの本の通りにやってみて、スタートラインに立てる感じかな?
「さくらのVPS」に登録しなくても勉強できる?
『ゼロからはじめるLinuxサーバー構築・運用ガイド 動かしながら学ぶWebサーバーの作り方』(以下:本書)は「さくらのVPS」に実際に登録して、実際にサーバーを動かしながら勉強することが前提となっています。
ただ、本書の中には無料で使用できる「VirtualBox」で同様の仮想環境を構築すれば、同じ勉強ができると記載があります。もちろん構築方法の解説もあります。
VirtualBox とは?
VirtualBox は、使用している PC 上に仮想的な PC を作成し、別の OS をインストール・実行できるフリーの PC 仮想化ソフトです。例えば使用中のパソコンが Windows 7 だったとしましょう。PC 仮想化ソフトを使うと、その Windows 7 上で Windows 8 や LinuxOS を動作させることができます。
引用:みんなの受験記
一通り本の通りに勉強した身からすると、できれば「さくらのVPS」に実際に登録して、サーバーを実際に動かしながら勉強した方がいいと思います。
もちろん無理にとは言いませんし「さくらのVPS」の無料期間(2週間)を有効にするには、登録時にクレジットカードが必要になります。
学生の場合は厳しい可能性がありますが、できることなら実際に登録して学習する方法をオススメします。
2週間の無料期間中に終わる自信がない・・・
ぶっちゃけ、私も飽き性でサボり癖のある人間なので自信がありませんでした。
ただ、実際にやって見たところ2週間もあれば十分だと思います。本の内容が薄いというわけでもなく「2週間でできる範囲の勉強内容」が本で解説されている感じです。
Windowsなら「WSL」を使えばいいのでは?
Windows10以上では、Windows上でLnuixが動かせる『WSL』機能があります。この機能でも、本書で使用している「VirtualBox」と同じ仮想サーバーの環境が構築できると思います。
私自身も本書の学習が一通り終わったので、一度WSL上で同じことができる環境を構築してみようと思っています。※現在準備中
ただ、初心者の人は本書の通りに「さくらのVPS」に登録するか「VirtualBox」を使った構築をした方が良いと思います。
なぜなら、実際にネットワーク上にあるサーバーを動かすのと、ローカルで動くサーバーを動かすのでは、本の記載通りでは動かないことが多々あります。
『そんなもの、自分で調べてなんとかできる!』という自信がある人以外はオススメしません。
スムーズに学習したいなら素直に「さくらのVPS」に登録を推奨。
『ゼロからはじめるLinuxサーバー構築・運用ガイド 動かしながら学ぶWebサーバーの作り方』で躓いたところまとめ
ここからは、実際に『ゼロからはじめるLinuxサーバー構築・運用ガイド 動かしながら学ぶWebサーバーの作り方』通りに学習した際に、私が躓いた部分をまとめます。
「さくらのVPS」に「HDD 100GB」プランがない!
「つまづいた」というわけではありませんが、本書の中では「さくらのVPS」の「メモリ1G / HDD 100GB」のプランへの登録が推奨されています。
ただ、2021年12月現在では「さくらのVPS」には同様のプランは存在しません。※全てのプランがSSD搭載プランに変更された。
代用のプラントして「メモリ1G / SSD 50GB」のプランで問題ありません。実際に私も「メモリ1G / SSD 50GB」のプランに登録し学習しましたが、特に容量不足等の問題は発生しませんでした。
Linux (CentOS 7)にrootユーザー以外の一般ユーザーを追加する
現在の「さくらのVPS」では、指定のOSのインストール作業を自動で行ってくれます。
自動でOSをインストールするとrootユーザーの設定は行いますが、一般ユーザーは設定せずにOSをインストールします。
学習中は基本一般ユーザーで作業を行うので、一般ユーザーを追加する必要があります。
OSインストール後、rootユーザーで下記コマンドを実行すれば一般ユーザーの追加が可能です。
useradd testuser
passwd testuser
Changing password for user testuser.
New password:
Retype new password:
passrd: all authentication tokens updated successfully.
「さくらのVPS」にTera TermでSSHクライアント接続できない!
本書では、SSHのポートを「22」から「10022」に変更して使う方法が記載されています。ただ、本書の通りやっても「Tera Term」からさくらのVPSにSSH接続が成功しません。
これは本当に躓きました(;´∀`)
いくらやっても接続できず、埒が明かなかったのでSSHのポート番号をデフォルトの「22」のまま学習を勧めたぐらいです(ー_ー;)
で、根本的な原因ですが、これは「さくらのVPS」の設定にあります。
現在「さくらのVPS」では、独自のパケットフィルターが有効になっており、デフォルトの状態ではSSHの「22」以外は、全てアクセス出来ない状態になっています。
※OSインストール時に任意に設定していれば、他のポートも開放されています。
解決方法は簡単です。「さくらのVPS」から「サーバー」を選択し、変更するサーバーをクリック。
「グローバルネットワーク」の「パケットフィルター」の『パケットフィルターの設定』をクリック。
「接続可能ポートを追加」をクリック→「カスタム」を選択し、ポート番号「10022」を追加。
右下の「設定」ボタンを押して完了です。
デフォルトのSSH(TCP 22)はセキュリティを考慮して、右側のバツマークを押して削除して起きましょう。※再設定可能。
これで、ポート番号10022でSSH接続が可能なはずです。
Linux (CentOS 7)でApacheのテストページが表示できない!ポート80が開放されない!
firewalldでポート80の開放は完了済みだけど、Apacheのテストページが表示できない。試しにfirewalldを無効にしてもアクセスできない。telnetでもダメ。
「なんで(;´Д`)??」と頭を抱えて数時間。もうおわかりでしょう。はい、SSHの時と同じでポート番号80が開放されていないだけでした・・・。
WordPressの設定phpファイル(wp-config.php)が文字化けする
本書の通りにWordPressをインストールし「wp-config.php」を開くと文字化けが発生しました。
原因は簡単で、日本語版のWordPressをインストールしているからです。解決方法としては単純に英語版をインストールしましょう。
WordPressのダウンロード
curl -LO https://wordpress.org/latest.tar.gz
WordPressを展開
tar zxf latest.tar.gz
WordPressの管理画面の言語は、インストール画面で変更可能なので安心して下さい。
Linux (CentOS 7)のPHPのバージョンが古いため、WordPressが起動しない。
本書の通りPHPをインストールすると、CentOS7が対応している最終バージョン5.4がインストールされる。ただ、WordPressが要求するPHPの最低バージョンは、現状(2021年12月)でいうと5.6以上(推奨7.4以上)。
このままではWordPressが動かないので、下記手順で新しいPHPをインストールします。
①Red Hat Enterprise Linux(RHEL)向けアドオンパッケージ『EPEL』をインストール。※私の場合、既にEPELはインストールされていました。
yum install epel-release
②最新のPHPをインストールするための「Remi」をインストール
wget https://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo rpm -Uvh remi-release-7.rpm
③既にインストール済みのPHPを全て削除。
sudo yum remove -y php-*
④インストール可能なPHPのバージョンを確認する。
ls -l /etc/yum.repos.d | grep remi-php
-rw-r--r-- 1 root root 456 Sep 2 18:35 remi-php54.repo
-rw-r--r-- 1 root root 1314 Sep 2 18:35 remi-php70.repo
-rw-r--r-- 1 root root 1314 Sep 2 18:35 remi-php71.repo
-rw-r--r-- 1 root root 1314 Sep 2 18:35 remi-php72.repo
-rw-r--r-- 1 root root 1314 Sep 2 18:35 remi-php73.repo
-rw-r--r-- 1 root root 1314 Sep 2 18:35 remi-php74.repo
-rw-r--r-- 1 root root 1314 Sep 2 18:35 remi-php80.repo
-rw-r--r-- 1 root root 1314 Sep 2 18:35 remi-php81.repo
⑤PHPをインストール。※今回はバージョン7.4をインストール
sudo yum install -y --enablerepo=remi,remi-php74 php php-mbstring php-gd php-mysql
⑥PHPのバージョンを確認し、指定のバージョンがインストールされていることを確認。
php --version
PHP 7.4.26 (cli) (built: Nov 16 2021 15:31:30) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
ApacheやらMariaDBとの絡みがあるので、PHPインストール後は一度サーバーの再起動を推奨。
Linux (CentOS 6)向けのDockerfileがビルド出来ない!
本書では「CentOS 6」向けのDockerfileを作成しますが、テキスト通りに作成しビルドしてもビルドは成功しない。
結論として、下記のように変更することで無事ビルドが成功した。
記載されているサンプルのDockerfile
FROM centos:6
MAINTAINER testimage <centuser@example.com>
RUN yum -y install httpd
EXPOSE 80
CMD /etc/init.d/httpd start && bash
サンプルを修正したDockerfile
FROM centos:6
MAINTAINER testimage <centuser@example.com>
RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
RUN cp -p /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-base.repo.bak
RUN sed -i -e "s|mirror\.centos\.org/centos/\$releasever|vault\.centos\.org/6.10|g" /etc/yum.repos.d/CentOS-Base.repo
RUN sed -i -e "s|#baseurl=|baseurl=|g" /etc/yum.repos.d/CentOS-Base.repo
RUN sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-Base.repo
RUN yum -y install httpd
EXPOSE 80
CMD /etc/init.d/httpd start && bash
下記に簡単ではありますが、解説を記載します。
yumのリポジトリ設定ファイルを編集する(5~8行目)
本書のテキスト通りに作成したDockerfileをビルドすると「Error:Cannot retrieve repository metadata ( repomd.xml ) for repository: base. Please verify its path and try again」と表示される。
このエラーの原因は、「CentOS 6」向けのyumリポジトリの場所(URL)が変わっているために発生するものらしい。修正方法に関しては、下記記事を参考にさせて頂きましたm(_ _)m
注意点として、上記参考記事ではCentOS「6.4」向けの設定になっています。CentOS 6.4向けでビルドすると、下記のようなエラーが発生します。
sudo docker build -t centuser/centos:httpd .
:
Error: Package: glibc-2.12-1.107.el6_4.5.i686 (updates)
Requires: glibc-common = 2.12-1.107.el6_4.5
Installed: glibc-common-2.12-1.212.el6_10.3.x86_64 (@updates)
glibc-common = 2.12-1.212.el6_10.3
Available: glibc-common-2.12-1.107.el6.x86_64 (base)
glibc-common = 2.12-1.107.el6
Available: glibc-common-2.12-1.107.el6_4.2.x86_64 (updates)
glibc-common = 2.12-1.107.el6_4.2
Available: glibc-common-2.12-1.107.el6_4.4.x86_64 (updates)
glibc-common = 2.12-1.107.el6_4.4
Available: glibc-common-2.12-1.107.el6_4.5.x86_64 (updates)
glibc-common = 2.12-1.107.el6_4.5
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
The command '/bin/sh -c yum -y install httpd' returned a non-zero code: 1
エラーの原因はCentOS 6.4にとって該当する「glibc」のバージョンは、重要なセキュリアップデートの対象らしく「そのバージョンは使うな!」というお叱りエラーみたい。
解決策としては、単純にCentOS 6の最終バージョンである「6.10」がインストールされるように、修正したDockerfileのように6行目のバージョン名を変更すればOK。
gpg-pubkey(GPG公開鍵)を追加する(4行目)
yumの設定ファイルを書き換えるコマンドを実装したDockerfileをビルドすると、下記のような警告が発生した。※ただ、ビルド自体は成功する。
sudo docker build -t centuser/centos:httpd .
:
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Importing GPG key 0xC105B9DE:
Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>
Package: centos-release-6-10.el6.centos.12.3.x86_64 (@CentOS/6.10)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
:
Successfully built xxxxxxxxxxxx
警告の原因は、gpg-pubkey(GPG公開鍵)がないための警告メッセージ。
回避策としては、下記記事を参考に修正したDockerfileの4行目でgpg-pubkeyを追加するコマンドを追加しました。
「さくらのVPS」で管理ツール「Webmin」に接続できない!
付録の「03 Webブラウザを使ったサーバー管理」でWebminを使う場合は、SSHやApacheのときのように「さくらのVPS」で指定のポートを開放する必要があります。
かつ、テキストの方には記載がありませんが、firewalldのポートも開放する必要があります。
sudo firewall-cmd --zone=public --add-port=10000/tcp --permanent
参考になったらポッチとお願いしますm(_ _)m