#1 VPSでの開発サーバ作成(ユーザ、SSH設定)

投稿者: | 2021年1月22日

以前、VPSでRailsの開発サーバを立てようと思ったことについて記事にしました。VPSでRailsの開発サーバを作ろうと思った理由

ここでは、今一度herokuなどのプラットフォームと比較したときのメリット、具体的にどのような手順でサーバを立てたのか、具体的なコマンドも交えて記録を残していこうと思います。

herokuと比較したメリット

Rails Tutorialではherokuで公開していました。対して、VPSでのサービス公開は、下記の点でメリットがあります。

  • 明朗会計、価格優位性、価格当たりの拡張性

VPS(例えばconoha)の場合、月額は最安プランでメモリ512MBで620円程度です。もう少し予算出しても880円/1GBメモリです。

heroku 34$ 対 VPS 880円であれば、サービスが小さく育てていく段階では価格優位性が高いです。途中でサーバスペックがきつくなっても、シングルなサーバ構成でもそのまま3,280円/月くらいまでスケールをあげていけます。

herokuのプランを少しみてみましょう。メモリ512MB程度の商用プランをherokuで見てみると、25$です。これは、「自作PCのほうがBTOよりも安い」と言っているのと同じ程度の理屈であり、「当たり前」なのですが、小規模なサービスを作って公開するのであれば、VPSでサーバを立てたほうがお得です。(大規模になると、可用性や高負荷に対する対策を考慮する必要があるのでその限りではありませんが…。)

そもそもherokuで作ったといっても、トラブルがあれば結局自身で対応する必要があります。自作vsBTOの関係のように、面倒な部分を業者保証にできるわけでもありません。であれば、VPSでもOSやネットワークのレイヤーまでの保証はあるのですから、各種設定やインストール作業をやってさえしまえば大差はありません。

また、herokuの場合、AP以外に、DBでも課金がされてしまいます。例えば「Hobby Basic」では月間9$です。無料プランだとデータベースのレコード数に制約があります。VPSでは880円くらいまで出せばメモリも1GBありますし、ディスクも100GBまで使えますから、一度データベースサーバさえインストールしてしまえばディスク容量の上限までは気にしなくてかまいません。

デメリットはいくまでもなく手間の点です。しかし、これも一つの学習だと思いデメリットからメリットに転じましょう。

手順

大まかにいえば下記です。

  • とりあえずサーバの初期設定
    • SSH
    • ユーザ
  • ruby、git、postgresql、nginxなどのインストール
  • 各種config設定
  • DBのバックアップスクリプト設定
  • リリース作業用手順書作成、控えておく設定情報

とりあえず初期設定

Conohaを契約して、ログインができるようになるとSSH接続がWeb上からできまず。まずは、一般ユーザを作ってしまいましょう。

useradd -m normal01
passwd normal01
#ここでPWを設定

なお、パスワードはどこかに控えておきましょう。

sshのログインキーも作っておきます。

作ったキーはteratermでアップロードしておきます。

pwd
/home/normal01/.ssh
ls -al
drwx------  3 normal01 normal01 4096 Jan 22 05:58 .
drwx------ 10 normal01 normal01 4096 Jan 13 04:30 ..
-rw-------  1 normal01 normal01  406 Jul 26 01:14 authorized_keys
-rw-r--r--  1 normal01 normal01  406 Jul 26 01:08 id_rsa.pub

sshの接続について下記のようにrootログインは不可に変えておきました。何行目か、については前後するかもしれないのであえて記載しないでおきます。

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bk
#編集作業
sudo diff /etc/ssh/sshd_config_bk /etc/ssh/sshd_config
> Port 24862

< PermitRootLogin yes
> PermitRootLogin no

< PasswordAuthentication yes
> PasswordAuthentication no
> PubkeyAuthentication yes

< ChallengeResponseAuthentication no
> #ChallengeResponseAuthentication no

sshのポートを24862(テンキーを1周)に変えたので、firewalldの設定も直しておきます。

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml
sudo vi /etc/firewalld/services/ssh.xml

あからさまにport=”22″となっている部分があるので24862に書き換えます。

次回

今回はSSHの設定とユーザの設定までは行いました。次回以降、各種インストールと設定を行っていきます。