VPSを借りる [VPS、SSH、Nginx] #1


VPSを借りて、勉強する

注意:
筆者はLinux経験が半年程度の状態から、この記事で紹介する作業をスタートしました。
記載内容については、可能な範囲で精査しておりますが、正確性を保証するものではありません。その点について、ご理解いただけますようよろしくお願いたします。

VPS

いくつか比較検討しましたが、KAGOYA JAPANのVPSを採用しました。

インスタンス(KVM)の料金
※KVMの特長

CPU 日額 月額上限 初期費用 SSD メモリー
1コア 24円 660円 無料 20GB 1GB
2コア 40円 1100円 無料 50GB 2GB

・スナップショット(バックアップ)の料金

保存容量 日額
10GB 4.4円

勉強中はインスタンスを稼働させ、それ以外の時はスナップショットを取って、インスタンスを削除していました。

・インスタンス

・はじめに
・インスタンス作成
・インスタンス削除
・専用コンソール(非SSH)

・スナップショット

・はじめに
・スナップショット保存
・スナップショットからインスタンス作成
・スナップショット削除

環境構築

1. インスタンス作成

※「1Core/1GB(24円/日) + CentOS 8 64bit」を選択しました。

2. SSHでログイン

ターミナルソフトは「RLogin」を使用しました。

※SSH認証鍵は、インスタンス作成時にダウンロードした「ログイン用認証キー」を選択しました。

3. 全体アップデート

dnf update

4. リブート

reboot

5.「Failed to set locale, defaulting to C.UTF-8」が出ないようにする

dnf install langpacks-en

6. SELinux の有効化

cp -p /etc/selinux/config /etc/selinux/config.origin
sed -i -e "s/^SELINUX=disabled/SELINUX=enforcing/g" /etc/selinux/config
diff -u /etc/selinux/config.origin /etc/selinux/config

7. リブート

reboot

8. ユーザー追加

NAME=yourname
PASSWARD=yourpass

# ADD USER
useradd -m $NAME
echo $PASSWARD | passwd --stdin $NAME
usermod -aG wheel $NAME

# PUBLIC KEY
mkdir /home/$NAME/.ssh/
cat ~/.ssh/authorized_keys > /home/$NAME/.ssh/authorized_keys
chmod 600 /home/$NAME/.ssh/authorized_keys
chown $NAME:$NAME /home/$NAME/.ssh/authorized_keys

# PAM
cp -p /etc/pam.d/su /etc/pam.d/su.origin
sed -i -e "s/^#auth\s.*required\s.*pam_wheel.so use_uid/auth            required        pam_wheel.so root_only/g" /etc/pam.d/su
diff -u /etc/pam.d/su.origin /etc/pam.d/su

9. SSHポート変更

PORT=55551

dnf install policycoreutils-python-utils

semanage port --add --type ssh_port_t --proto tcp $PORT

cp -p /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml
sed -i -e "s/^  <port protocol=\"tcp\" port=\"22\"\/>/  <port protocol=\"tcp\" port=\"$PORT\"\/>/g" /etc/firewalld/services/ssh.xml
diff -u /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml

firewall-cmd --reload

cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.origin
sed -i -e "s/^#Port 22/#Port 22\nPort $PORT\n/g" /etc/ssh/sshd_config
sed -i -e "s/^PermitRootLogin without-password/PermitRootLogin forced-commands-only/g" /etc/ssh/sshd_config
diff -u /etc/ssh/sshd_config /etc/ssh/sshd_config.origin

systemctl restart sshd

10. 追加ユーザーで再ログイン

11. Nginxインストール

※How to Install Nginx on CentOS 8

sudo dnf install @nginx
sudo systemctl enable nginx
sudo systemctl start nginx
systemctl status nginx
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

12. ドメイン登録

※他社管理ドメインの登録

13. ドメイン設定

※How to Set Up Nginx Server Blocks on CentOS 8

DOMAIN=yourdomain

sudo mkdir -p /var/www/$DOMAIN/public_html

sudo tee /var/www/$DOMAIN/public_html/index.html << EOF
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to $DOMAIN</title>
  </head>
  <body>
    <h1>Success! $DOMAIN home page!</h1>
  </body>
</html>
EOF

sudo chown -R nginx: /var/www/$DOMAIN
sudo restorecon -RF /var/www/$DOMAIN/public_html/

sudo tee /etc/nginx/conf.d/$DOMAIN.conf << EOF
server {
    listen 80;
    listen [::]:80;

    root /var/www/$DOMAIN/public_html;

    index index.html;

    server_name $DOMAIN www.$DOMAIN;

    access_log /var/log/nginx/$DOMAIN.access.log;
    error_log /var/log/nginx/$DOMAIN.error.log;

    location / {
        try_files \$uri \$uri/ =404;
    }
}
EOF

sudo nginx -t

sudo systemctl restart nginx