さくらVPSにCentOS8を入れてみたらいろいろハマった件

今まで使っていたWebサーバーがかなり古いOSを使っているうえにVPSがHDD版だったので、新規に契約して引っ越すことにしました。
データベース用のサーバーは以前別のサーバーに移設してローカルでつながっているため、Webサーバーだけならばということでメモリ1Gの契約+SSD増量の契約にしてみました。
まぁ後でアップグレードはできますしね。
とりあえず、さくらVPSで用意している標準イメージでインストールしてみました。

スポンサーリンク

スイッチとネットワークの設定でつまずく

OSはCentOS8をチョイスしてさくらVPSが用意しているイメージでインストールしました。
まず迷ったのは、ローカルでのネットワーク接続。
使っているのでスイッチはもうあるのですが、どこからつなぐのかわからず…。

サーバーを選択した画面の各種設定の中に”ネットワーク接続”があり、ここからできました。

固定IPの設定でつまずく

次にローカルに接続しているNICに固定IPを割り当てるのですが、”ipconfig”が使えない!?
CentOS8ではデフォルトではなくなったらしく、

yum install net-tools

net-toolsをインストールするようになったようです。
現状を確認できたところで固定IPを設定するんですが、こちらの方法も以前と変わったようでコマンドで設定するようです。
ens4を192.168.1.30 に設定したいのですがこれがまたうまくいかず…
ネットで調べてコマンドを撃ってみたものの

# nmcli connection modify ens4 ipv4.address 192.168.1.30/24
Error: unknown connection 'ens4'.

ん?そういう意味じゃないの?
なんか、今までデバイスにIPを設定するイメージだったんですけど、今はコネクションとか言う新たな概念があるらしく、コネクションとIPを紐づけて、コネクションをデバイスに紐づける見たいか感じになっているらしいです。
コネクションはデフォルトで…

nmcli connection show
NAME         UUID   TYPE      DEVICE
System ens3  (UUID)  ethernet  ens3
System ens4  (UUID)  ethernet  --
System ens5  (UUID)  ethernet  --

System ens4 っていうコネクションはもうあるっぽいので、そこにens4を割り当てて設定します。
ただそれだけなのですが、この仕組みが最高にわかりにくい…
紆余曲折のすえこんな感じでやればいいことが分かった。

nmcli connection modify "System ens4" connection.interface-name ens4
nmcli connection modify "System ens4" ipv4.method manual
nmcli connection modify "System ens4" ipv4.address 192.168.1.30/24
nmcli c m "System ens4" connection.autoconnect yes
nmcli c up "System ens4"

各行のコマンドの意味は

接続先デバイスをens4に設定(念のため)
IPV4を固定モードに設定
IPV4アドレスを指定
起動時に自動接続にする
接続を開始
という意味になります。

nmcli connection show

コマンドでSystem ens4が接続状態(緑色文字)になっていれば問題ないかと思いますが、念のため再起動後も接続しているか確認します。

nmcli connection show "コネクション名"

で、指定したコネクションの設定値一覧が出るので、現状はそれで確認できます。
一覧を見たらなんとなく何の設定かわかると思いますので、変更したいものがあったら

nmcli connection modify "コネクション名" 設定名 設定値

という感じで設定していけばよいでしょう。

HTTPの設定でつまずく

とりあえず、LAMP環境はインストール済みの設定にしてあるので、動作確認としてphpMyAdminを入れてみました。
が、動きません。
PHPは動いているんだけどphpMyAdminがなぜかHTTP ERROR 500で動かない。
いつものSELINUXとかパーミッションとかいつもの問題は回避したと思ってるんだけど…。
httpdのエラーログを見てみたら
Got error ‘Primary script unknown
というエラーが出ているが意味不明。
うーん。しばらく悩んで、php-fpmの方のエラーログがあったので、そっちを見たら
PHP Fatal error: Uncaught Error: Call to undefined function Twig\json_encode()
ん?json_encode()ないの?ほんとに?冗談でしょ?

#yum install php-json
Last metadata expiration check: 0:29:52 ago on Thu 15 Oct 2020 03:06:41 PM JST.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
php-json x86_64 7.2.24-1.module_el8.2.0+313+b04d0a66 AppStream 73 k

Transaction Summary
================================================================================
Install 1 Package
以下略

まじかよ!入ってない。
ということで、インストールしてアクセスしなおしたらすんなり動きました。

と、ここで他人が作った環境イメージをそのまま使うのはどうなんだろう・・・何が入ってるかわからないしと思いなおしました。
LAMP環境付きでインストールしたんですが、そもそもPHPは7.4にしたいし(デフォルトでは7.2が入っていました)MySQLは今回は別サーバーなので入れなくてもいいんで、最小構成で手動でインストールしなおすことに決定。

振出しに戻る

ということで、VPSの管理画面からカスタムインストールを選択してCentOS8をインストールしなおしました。

キャラクタベースのCUIインストールなのかと思いきや


ちゃんとVNCでグラフィカルインストールできるんですね。

とりあえず、以前の記事の手順でapacheとphp7.4のインストールを行う。

ネットワークはとりあえず
# nmcli c s
NAME UUID TYPE DEVICE
eth0 (uuid) ethernet eth0
virbr0 (uuid) bridge —

こんな感じでインターネットに接続しているeth0はデフォルトで有効になっていて、
よくわからないvirbr0はあるが、ローカルのeth1は無効状態なっているようです。
デフォルトのコネクション名はデバイス名と同じになってました。
コネクションもないので追加する必要があるようでした。

というわけで、デバイス名と同じ名前でコネクションを追加。

# nmcli connection add type ethernet con-name eth1 ifname eth1

後はさっきと同じように

nmcli connection modify eth1 ipv4.address 192.168.1.30/24
nmcli connection modify eth1 ipv4.method manual
nmcli c m eth1 connection.autoconnect yes
nmcli c up eth1

で接続できるはずだったんですが、なぜか接続できず。
15分ぐらい悩んで、ふとさくらVPSのコントロールパネルでネットワークの設定をみると、なんとスイッチ接続の設定が消えてました!
どうも、OSを再インストールするとスイッチに設定も消えるようになっているみたいです。
ガッデム!!

とりあえず、phpMyAdminは動くようになったので問題なさそうです。
変なとこで引っかかって思ったより時間がかかった印象です。久々にサーバー回りをいじると変わっているところが多くて大変です。
後はひとつづつデータの引っ越しですね…。