ポートフォリオを運用するサーバーにAWSを使っているのですが、個人で運用するには割高だし、本格的にサービス運用しているわけではないのでAWSだとオーバースペックだなあと感じました。今の要件だとアクセス数の少ないAPIを一つ動かせれば良い程度なんです。
そこで、昔使っていたさくらインターネットさんのVPSにポートフォリオのサーバーを移行することにしました。
契約プランを選ぶ
では、さくらのVPSトップページから契約プランを選ぶとしましょう。
基本的に最初は低額プランで契約して、足りなくなったら高いプランにすれば良いと思いますが、1番安い512MBプランだと心配。
CPU1Coreでメモリ512って、簡単なバッチを動かしたり、サーバー構築の練習に使うには良いかもしれないですが、ポートフォリオ動かすには少し不安になるスペック。もう一つ上の1GBプランだと、どのリージョンのサーバーを契約しても値段がせいぜい300円程度しか変わらず、CPU2コアで、メモリ1GBなのでこっちにすることにします。
契約するサーバーの場所を選択することになりますが、私は関東をメインに活動しており、関東の人にポートフォリオを見てもらいたいので東京のサーバーを契約することにします。情報の伝送スピードの事を考えると、アクセスするサーバーの距離は近い方が良いと思いますしね。
ただ、他のブログで速度検証している記事を見ると、意外と石狩が速い(内部のハードスペックの問題?)とかいう情報も出てくるので、リージョンごとの伝送速度はあまり気にする必要ないのかも。
1GBプランを選んで次へ進みます。
こんな画面昔あったっけ?契約時に自動でOSインストール出来るの楽だな。
出来るだけ慣れたOSを選びたいので、私はCentOSでいきます。
CentOSをよく使っていたのは、確か6か7あたりの時代だったな。
ぶっちゃけサーバーなので安定した少し古いバージョンの方が安心なのですが、休みの日に趣味で作っているので、遊び心ないとつまらないし最新版を使っちゃおう。というわけで、Stream 9とやらを使ってみます。
2週間無料のお試しは絶対利用する。使ってみてスペックに不満があった場合は、上のプランに変更出来るし。
支払いを完了したらサービスが開始されるまで少し待ちます。
サーバー構築
支払いを完了してしばらく経つとサーバー一覧に契約したサーバーが表示されるので、選択して、サーバーを起動します。
その後は、コンソールから以下のコマンドでssh接続して構築を始めます。
ssh -l admin_name(管理者ユーザー名) xxx.xxx.xx.xx(IPアドレス)
ちなみに構築でよくわからないことがあったら、私はよくServer Worldさんの記事を昔から参考にしています。OSのバージョンごとに設定方法がまとまっていてめちゃくちゃ助かります。
https://www.server-world.info/
yumをアップグレードする
パッケージ管理ソフトをアップデートし、ソフトをインストールする前にインストール対象のリストを更新しておきます。
sudo yum update
vimインストール
とりあえず設定ファイルいじるにもvimが欲しいタイプなので、真っ先にインストール。
sudo yum install vim
ファイヤーウォールとSELinux設定
#ファイヤーウォールの現在の状態確認
# Active: inactive (dead)と表示されていたら停止しているので起動させる
service firewalld status
# ファイヤーウォール起動
sudo systemctl start firewalld
# ファイヤーウォール自動起動
sudo systemctl enable firewalld
# SELinuxの現在の状態確認
# Disabledと表示されたら停止しているので有効にする
getenforce
# 設定ファイルを開く
sudo vim /etc/sysconfig/selinux
# 設定ファイル内のSELINUXの設定値をenforcingにする
SELINUX=enforcing
# 設定反映
sudo grubby --update-kernel ALL --remove-args selinux
# 再起動
sudo reboot
ネットワーク設定
サーバーのホスト名を設定してあげましょう。
# ホスト名設定
sudo hostnamectl set-hostname ホスト名
# ホスト名確認
hostname
ssh鍵認証
# 鍵ペア作成
# 作成時に聞かれる質問は必要がなければ空エンターで進む
ssh-keygen
# 鍵移動
mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
クライアントで証明書を設定する。
# 鍵を置くディレクトリを作成
mkdir ~/.ssh chmod 700 ~/.ssh
# 秘密鍵をクライアントに移動
scp ユーザー名@ホスト:/home/ユーザー名/.ssh/id_rsa ~/.ssh/id_rsa_sakura
クライアントに置いてある鍵が既にあり、今回が2回目以降だった場合
# configを変更する
sudo vim ~/.ssh/config
Host github github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa_git
User git
# 今回の設定を追加
Host ホスト名
HostName ホスト名
IdentityFile ~/.ssh/id_rsa_vps
User ユーザー名
# 接続確認
ssh ユーザー名@ホスト名
鍵認証でログイン出来たら、通常のパスワード認証を禁止しておきましょう。
sudo vim /etc/ssh/sshd_config
# 以下をnoに変更
PasswordAuthentication no
KbdInteractiveAuthentication no
# 再起動
sudo systemctl restart sshd
MySQLの設定
公式からダウンロードするrpmを見つける。
https://dev.mysql.com/downloads/repo/yum/
今回は以下
mysql80-community-release-el8-4.noarch.rpm
インストールする
# rpmパッケージ取得
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el8-4.noarch.rpm
# インストール
sudo yum install mysql-community-server
起動する
# 自動起動にする systemctl enable mysqld # 起動する systemctl start mysqld # 初期パスワードを確認 # A temporary password is generated for root@localhost: (password) に書いてある sudo head -n 5 /var/log/mysqld.log # ログインする mysql -u root -p # 新しいパスワード設定 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
デフォルトだと外部からrootで接続出来ないので、接続用の管理者ユーザーを作ってあげましょう。
# ログイン
mysql -u root -p
# 接続用の管理者ユーザー
CREATE USER administrator IDENTIFIED BY 'password';
# 管理者ユーザーに権限を付与
GRANT ALL PRIVILEGES ON * . * TO administrator;
# 設定反映
FLUSH PRIVILEGES;
# MySQLのユーザー一覧表示で確認
select user, host from mysql.user;
Nginxインストール
# Nginxインストール
sudo yum install nginx
# nginxの起動設定
sudo systemctl start nginx
# nginxの自動起動設定
sudo systemctl enable --now nginx
# 外部からの接続許可
sudo firewall-cmd --add-service=http
sudo firewall-cmd --add-service=https
sudo firewall-cmd --runtime-to-permanent
firewallを使いたいので、パケットフィルターを解除します。
一通り設定したところで今回は終わります。