ConoHaのVPSを契約しました!

2020/1/25

あけましておめでとうございます!ご無沙汰しております!一応生きてました。

いままでこのウェブサイトはここあ@love_kobato_allさんのサーバーを借りて動かしていたのですが
そろそろサーバーが亡くなる(亡くなった)とのことだったので、ConoHaのVPSをレンタルして、移行作業をしました。
その辺についての作業を、自分のための走り書き程度に書きます。

ConoHaのVPS(CentOS8)に変えてやったこと

サーバーを移行するに当たってしたことです。今後移行作業やセットアップをするときのためにここに記しておこうと思います。

userの追加

まだrootユーザーしか存在しないので、作業用の一般ユーザーを作成します。

1
useradd -m <ユーザー名>

として、ユーザーとそのホームディレクトリを生成します。

1
passwd <ユーザー名>

で、先ほど作成したユーザーのパスワードを設定しておきます。

1
usermod -G wheel <ユーザー名>

で、ユーザーがsudoできるできるようにwheelグループに追加します。

Gitなどをインストール

1
2
yum -y install git
yum -y install screen

で、Gitやらscreenやらをダウンロードしてきます。

1
exit

して、一般ユーザーになっておきます。

SElinuxを無効化

1
$ getenforce

で、Disabled以外が返ってきたら

1
$ sudo vim /etc/selinux/config

で、SELINUXの所をdisabledにしておきましょう。
ConoHaはデフォルトでdisabledでした。

firewalldの設定

firewalldを設定して、セキュリティを高めます。

1
2
3
4
$ sudo firewall-cmd --new-zone=manage --permanent
$ sudo firewall-cmd --zone=manage --set-target=ACCEPT --permanent
$ sudo firewall-cmd --zone=manage --add-service=ssh --permanent
$ sudo firewall-cmd --zone=manage --add-service=ftp --permanent

をして、manageゾーンではいろいろできるようにしておきます。

1
$ sudo firewall-cmd --zone=manage --add-source=今のグローバルipアドレス/16 --permanent

で、自分がmanageゾーンに入るようにしておきます。

1
2
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --get-active-zones

をして、manageが表示されていれば設定は大丈夫だと思います。

1
2
$ sudo firewall-cmd --remove-service=ssh --zone=public --permanent
$ sudo firewall-cmd --reload

して、publicゾーンからSSH接続できないようにします。
firewalldの設定はこんな感じで大丈夫だと思います。

公開鍵認証でのみSSH接続する

パスワードでのSSH接続を拒否したり、公開鍵認証を許可したり、rootログインを拒否したりします。

まずクライアント側で、秘密鍵と公開鍵を作ります。

次に、ユーザーのホームディレクトリに配置していきます。

1
2
$ mkdir .ssh/
$ vim .ssh/authorized_keys

をしたら、中に公開鍵の中身をペーストして、:wqします。

1
2
$ chmod .ssh/600
$ chmod .ssh/authorized_keys 600

と、パーミッションの設定をしておきます。
適切な設定ができていないと公開鍵認証でログインできません

1
$ sudo vim /etc/ssh/sshd_config

で、
Port xxxxx でポート番号を変更
PermitRootLogin no でrootログインを無効化
PasswordAuthentication no でパスワードによる接続を無効化
PermitEmptyPasswords no でパスワード無しを拒否
PubkeyAuthentication yes で公開鍵認証を許可
あたりの設定をして

1
$ sudo systemctl restart sshd.service

で、サービスをリスタートします。違うターミナルを開いて、生成した秘密鍵で接続できれば次に進みます。

CloudflareとNginxでWebサイトを公開する

CloudflareでDNSを設定しておきます。

1
2
3
$ sudo yum install nginx
$ sudo systemctl enable nginx
$ sudo systemctl start nginx

します。そして、http/httpsポートを解放します

1
2
3
$ sudo firewall-cmd --add-service=http --zone=public --permanent
$ sudo firewall-cmd --add-service=https --zone=public --permanent
$ firewall-cmd --reload

自分のドメインもしくはhttps://(ホスト名)にアクセスして、Welcome to NginxされればOKです!

次に、/etc/nginx/に移動して作業します。

1
$ cd /etc/nginx/

ここにご家庭の庭から生えてきた
certs/
cloudflare.conf
cloudflare.pem
cloudflare_origin.pem
nginx.conf
nginx.conf.default
ssl.conf
を配置します。(certsはmkdirします)

やばそうだったらググります。

次に、

1
$ sudo openssl dhparam -out /etc/nginx/dhparam.pem 2048

しておきましょう。

そして、CloudflareのSSL/TLSのOrigin ServerでCreate Certificateして、生成されたものを
certs/(ドメイン).pem
certs/(ドメイン).key
に、ポイします。

あとは、テストコマンドで怒られたことを修正したら大丈夫です。

1
$ sudo nginx -t

で、syntax is ok とか test is successfulとか出てたら大丈夫です。

1
$ sudo systemctl restart nginx

しておきます。

nginxユーザーがいることを確認したら、公開したいHTMLのあるユーザーのディレクトリを、全員閲覧可能にします。

1
$ sudo chmod 755 /home/<ユーザー名>/

で、自分のサイトにアクセスし、conf.d/(ドメイン).confで設定したrootのindexが表示されていれば大丈夫でしょう。

httpを閉じる場合はconf.d/のファイルをいじったり

1
$ sudo firewall-cmd --remove-service=http --zone=public --permanent

します。

今回やった作業はこんな感じでした。
これからMySQLなどを導入してWebサービスの展開もしていきます!

完全に自分用の走り書きになってしまいましたが、役に立つことがあれば幸いです。

今回はこの辺で失礼します、ありがとうございました!