どこからでもアクセスできる自分専用の開発環境が欲しい…。
そんな願いを叶えるべく、VPSのことを調べていたのですが、いままで「なんか難しそう…」と尻込みしていました。しかし、最近は値段も安くて扱いやすいVPSも増えてきたので、この機会に試してみることにしました。
ということで、今回はVPSを契約して最低限の環境を立ち上げるまでの備忘録です。
VPSについて
VPSって何?
まずVPSについてですが、簡単に言えば「レンタルサーバーの上位互換」みたいなものです。
通常のレンタルサーバーだと、Web公開用のディレクトリやデータベースのみを提供され、システムの奥深くは触れません。一方、VPSではOS丸ごとに加え、root権限も貰えるので、その環境内での神様になれます。
その分、最初は最低限なOSが起動しているだけなので、セキュリティ面を含めすべて自己責任での環境構築+運用となります。システム周りを意識しなくて良いレンタルサーバーと比べると、上級者向けのサービスですね。
VPSについてもっと知りたい方は、以下のサイトがわかりやすいと思います。
カゴヤのVPSを契約してみた
数ある中でどこのVPSを契約しようか悩んだのですが、今回はカゴヤを選びました。
決めては値段と性能のバランスです。1日あたり約30円で、CPU3コア・メモリ1GB・ストレージ80GB(SSD)の環境が手に入ります。月額に換算しても1000円未満なので、お財布にも優しいのが嬉しいですね。性能も学習環境として使う分には十分です。
契約自体はWebでサクッとできます。契約して即環境を立ち上げられるので、面倒もなく楽ちんです。以下、実際の環境構築手順になります。
手順1:インスタンスを立ち上げる
最初に、自分専用の環境(=インスタンス)を立ち上げます。カゴヤの場合、用意されたスペックとOSの組み合わせでインスタンスを作成します。一番下に月額の料金が表示されるので、スペックとお値段のバランスを見ながら決めましょう。
ちなみに、私はCPU3コア+SSD、OSはCentOS7(64bit)を選びました。ホントはUbuntuが良かったのですが、さすがに14.04はバージョンが古すぎるので却下です(´・ω・)
また、インスタンスにSSHでアクセスするための「ログイン用認証キー」も一緒に作成します。作成と同時に認証キーをダウンロードできるので、大切にとっておきましょう。
手順2:インスタンスにSSH接続する
インスタンスを作成すると、コントロールパネルから起動することができます。
起動ができたらインスタンスに外部からアクセス可能になるので、適当なSSHクライアント(TeraTermとか)でインスタンスのIPアドレスに接続してみます。このとき、ユーザー名を「root」、認証方式を鍵認証にして、手順1で保存した認証キーを指定すればOKです。コンソールで接続する場合はこんなコマンドになります。
うまく接続できれば、ひとまず自分だけの環境をゲットすることは成功です。あとはセキュリティまわりを中心に、実際の開発環境として使えるように整備していきます。
手順3:環境を整える
パッケージのアップデート
まずはデフォルトで入っているパッケージのアップデートです。以下のコマンドを叩けばOKです。
ユーザーの追加
この時点ではrootでログインしていますが、それだとセキュリティ的に不安なのでユーザーを追加します。まずは、ユーザー追加の前にsudoをインストールします。こうしておけば、追加したユーザーでもsudoで管理者権限付きのコマンドを実行できます。
続いて、ユーザーを作成します。useraddでユーザーを追加した後、passwdでパスワードを設定しましょう。
passwd <ユーザー名>
SSHの設定変更
続いて、SSHの設定変更です。デフォルトだと22番ポート(SSHの標準的なポート)を使っているので、外からの攻撃の被害に遭いやすくなります。また、rootユーザーでのログインもできてしまうのでこれも良くありません。そこで、ポート番号を独自の番号に変更し、rootでのログインも禁止します。
具体的には、SSHの設定ファイル
↓
Port <新しいポート番号>
↓
PermitRootLogin no
SSHのポート変更に合わせ、ファイアウォール(iptables)でも変更後のポート番号による通信を許可させます。これをしないと新しいポートでSSH接続ができなくなるので要注意です。
iptablesの定義ファイル
↓
-A INPUT -p tcp -m state --state NEW -m tcp --dport <変更後のポート番号> -j ACCEPT
もし設定ファイルが見つからない場合は、iptablesがサービス化されていない可能性もあるので、以下のコマンドでiptables-servicesを事前にインストールすればOKです。
最後に、SSHとiptablesを再起動すればOKです。
systemctl restart sshd
以降、rootでのログインと22番ポートは使えないので、最初に作成したユーザーと変更後のポート番号でアクセスしましょう。
新しいユーザーで鍵認証の設定はしていないので、以降は普通のユーザー名とパスワードによる認証となります。セキュリティ的には鍵認証がベストですが、あとからでも設定できるので、とりあえず良しとします。
以上でVPSの最低限の環境構築はおしまいです。いざやってみるとそこまで難しくないという印象でした。これからも自分専用の環境として育てていく中で、ちょくちょく備忘録をまとめていきたいと思います。
ではでは
2019/8/14追記
当初はOpenVZでインスタンスを作っていたのですが、それだとswap領域が設定できないなど不便があったため、KVMのインスタンスに乗り換えました。うーん、ここらへんの違いがよく分からない…。