webサーバなどとして遊び場に借りているさくらVPSのOSをCentOSからRockyLinuxへ移行したので、備忘録です。
今回は必要なデータをバックアップし、環境を再構築する方法を採っています。なので、この記事の内容はほぼRockyLinuxのセットアップ内容となっています。
環境ごとバックアップしたい場合などは、別の記事を参照してください。
環境
- さくらVPS 1G
- OS CentOS6 -> RockyLinux 9
操作はwindows11のWSLから行います。
データのバックアップ
筆者の場合はバックアップするものは/var/www/html
ぐらいしかありませんでした。適宜必要なものをバックアップしてください。
cd /var/www/html/
zip -r html.zip *
html.zipをどこか(サーバ以外の場所)に保管しておきます。
さくらVPSのコントロールパネルからOSを再インストール
パケットフィルターはさくらVPS側のファイアウォールですが、なしにして自分で設定でも良いと思います。あとから変更もできます。sshログインのポートを変更する場合、そのポートも追加してください。
しばらく時間がかかります。
VPSの初期設定
管理ユーザrockyでssh接続します。巷にはTeraTermなどを使うとよいとありますが、個人的にはWSLから行うとラクでよいと思います。
↓ここを参考にしました。
接続したら、sudo su -
で設定したパスワードを入力し昇格。以下、rootで作業します。
とりあえずパッケージをアップデートします。最優先です。
yum update
passwd
コマンドでrootのパスワードを設定し、ユーザーを追加します。デフォルトのユーザーを使っても良いと思うのでお好みです。
# ユーザー追加して、sudo権限を付与
adduser user1
passwd user1 # 任意のパスワードを設定
usermod -aG wheel user1 # sudo権限を付与
作業を始める前に:Vimのインストール
この項目は必須ではありません。
OS標準のviは機能が少なかったりするため、vimをインストールします。
yum install vim
そうしたら、vi ~/.vimrc
で.vimrcを編集し、次の記述をします。
set number
syntax on
これで、vimを開いたときに行番号が表示され、色分けもされるようになります。.vimrcの記述についてはググれば山ほど出てくると思うのでお好みにしてください。
SSHログインの設定
セキュリティのため、rootユーザーでsshログインできなくします。また、ログインできないとしても、22番ポートを開けっ放しにしておくとログイン失敗のログが大量に溜まり心臓に悪いので、ついでにsshのポートも変えてしまいます。これはお好みかなと思います。(作業に失敗するとsshログインできなくなる恐れがあるので、注意!)
/etc/ssh/sshd_configを編集します。
- #Port 22
+ Port 22
+ Port 22222 # 任意のポート
- #PermitRootLogin yes
+ PermitRootLogin no
systemctl restart sshd.service
でsshdを再起動します。
ここで、追加したユーザー、ポートでログインできることを必ず確認します。後のファイアウォールの設定が終わるまで22番ポートは閉じないほうがよいです。
ファイアウォールの設定
ここを参考に作業します。ひとまずhttpとftp、それとさっき設定したsshのポートを開放します(大事)
systemctl enable firewalld # ファイアウォールの自動起動
systemctl start firewalld # ファイアウォールを開始
#必要なポートを開放
firewall-cmd --add-service=ftp --zone=public --permanent
firewall-cmd --add-service=http --zone=public --permanent
firewall-cmd --add-service=https --zone=public --permanent
firewall-cmd --add-port=22222/tcp --zone=public --permanent # さっき設定したsshのポート
firewall-cmd --reload #せっていのはんえい
firewall-cmd --list-all # 追加した設定が反映されているか確認する
systemctl restart firewalld # 再起動
ここまで来たら、さきほど設定したポートでsshログインできることを確認し、sshd側で22番ポートを閉じます。
- Port 22
+ #port 22
systemctl restart sshd
Webサーバ(Apache), Let's encryptの導入
ここを参考に作業。
yum install httpd
systemctl start httpd
systemctl enabled httpd
基本的にはこれだけです。ブラウザでip直打ちでアクセスしてみて、こんな画面が出てくればOK。
Let's encrypt
次にLet's encryptを導入します。いろいろ試行錯誤したので抜けがあるしれない。
まずは準備として、ssl_modが必要なのでyumでインストール。
yum install ssl_mod
certbotはyum経由でインストールできなくなっているので、snapdを使います。
https://egatech.net/centos7-snapd/
yum install epel-release
yum install snapd
systemctl enable --now snapd.socket
ln -s /var/lib/snapd/snap /snap #classicオプションのために必要らしい
/var/lib/snapd/snap/bin
をrootに追加する。
echo "PATH=$$PATH:/var/lib/snapd/snap/bin" >> ~/.profile
source ~/.profile
コピペで作業してるとerror: too early for operation, device not yet seeded or device model not acknowledged
と怒られる場合がある(なぜ?なんか準備をしてるのかな)しばらく待ってから作業する。
snap install certbot --classic
certbot --apache
#メールアドレスやらドメインやらを対話形式で聞かれるので入力していく。
systemctl restart httpd
https://yourdomain/ にアクセスして証明書が有効ならOK。httpからhttpsへリダイレクトされることも確認する。
/var/www/htmlの復元
/var/www/htmlにhtml.zipをアップロードしてunzipします。
元のページが出ることを確認したら、ひとまず終了。おつかれさまでした。