Linux

カゴヤVPSで自分専用の開発環境を立ち上げてみた

どこからでもアクセスできる自分専用の開発環境が欲しい…。

そんな願いを叶えるべく、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です。コンソールで接続する場合はこんなコマンドになります。

ssh root@<インスタンスのアドレス> -i <認証キーのパス>

うまく接続できれば、ひとまず自分だけの環境をゲットすることは成功です。あとはセキュリティまわりを中心に、実際の開発環境として使えるように整備していきます。

手順3:環境を整える

パッケージのアップデート

まずはデフォルトで入っているパッケージのアップデートです。以下のコマンドを叩けばOKです。

yum update

ユーザーの追加

この時点ではrootでログインしていますが、それだとセキュリティ的に不安なのでユーザーを追加します。まずは、ユーザー追加の前にsudoをインストールします。こうしておけば、追加したユーザーでもsudoで管理者権限付きのコマンドを実行できます。

yum install sudo

続いて、ユーザーを作成します。useraddでユーザーを追加した後、passwdでパスワードを設定しましょう。

useradd <ユーザー名>
passwd <ユーザー名>

SSHの設定変更

続いて、SSHの設定変更です。デフォルトだと22番ポート(SSHの標準的なポート)を使っているので、外からの攻撃の被害に遭いやすくなります。また、rootユーザーでのログインもできてしまうのでこれも良くありません。そこで、ポート番号を独自の番号に変更し、rootでのログインも禁止します。

具体的には、SSHの設定ファイル/etc/ssh/sshd_configの中で、最低限以下の2点を書き換えます。

#Port 22

Port <新しいポート番号>
#PermitRootLogin without-password

PermitRootLogin no

SSHのポート変更に合わせ、ファイアウォール(iptables)でも変更後のポート番号による通信を許可させます。これをしないと新しいポートでSSH接続ができなくなるので要注意です。

iptablesの定義ファイル/etc/sysconfig/iptablesを開き、元々ある22番ポートの定義を変更後のポート番号に書き換えます。

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport <変更後のポート番号> -j ACCEPT

もし設定ファイルが見つからない場合は、iptablesがサービス化されていない可能性もあるので、以下のコマンドでiptables-servicesを事前にインストールすればOKです。

yum install iptables-services

最後に、SSHとiptablesを再起動すればOKです。

systemctl restart iptables
systemctl restart sshd

以降、rootでのログインと22番ポートは使えないので、最初に作成したユーザーと変更後のポート番号でアクセスしましょう。

新しいユーザーで鍵認証の設定はしていないので、以降は普通のユーザー名とパスワードによる認証となります。セキュリティ的には鍵認証がベストですが、あとからでも設定できるので、とりあえず良しとします。

以上でVPSの最低限の環境構築はおしまいです。いざやってみるとそこまで難しくないという印象でした。これからも自分専用の環境として育てていく中で、ちょくちょく備忘録をまとめていきたいと思います。

ではでは

2019/8/14追記

当初はOpenVZでインスタンスを作っていたのですが、それだとswap領域が設定できないなど不便があったため、KVMのインスタンスに乗り換えました。うーん、ここらへんの違いがよく分からない…。

関連記事

C言語 自作物 Linux プログラミング

wordleもどきのCUIアプリをつくってみた

最近、wordleという英単語当てゲームで遊んでいます。シンプルなゲームながら、通勤時間の暇つぶしや友人とのスコア比べなど意外と中毒性があり面白いです。 普通に英単語の勉強にもなるので、もっとたくさん ...

RaspberryPi Linux

Raspberry Pi4+Ubuntu ServerでGitLabを動かしてみる

お仕事でGitLabに触れる機会があったので、学習用に自宅にもGitLabが欲しくなりました。 手元にあるRaspberry Pi4+Dockerならお手軽に立ち上げられるはずと着手したものの、意外と ...

Flutter プログラミング

【Flutter】アプリ内の設定値を実装する方法

アプリ内で独自の設定を作る場合、そのデータを保持する方法を考える必要があります。 SQL、テキストファイルなど選択肢は多々ありますが、shared_preferencesというパッケージを使えば簡単に ...

RaspberryPi Linux

YoctoでRaspberryPi4のイメージをビルドしてみた

昨今、様々なデバイスでLinuxが動くようになっている中、組み込みLinuxのデファクトスタンダードとなりつつあるのが「Yocto」と呼ばれるビルドシステムです。 組み込みの現場ではその名前を聞くこと ...

C++ 自作物

言語処理系をつくろう(第7回):比較演算子を実装する

自作の言語処理系開発日記の第7回です。前回までで変数の実装が終わったので、ここからはいよいよ制御構文を実装…と思ったのですが、制御のためには比較演算子を実装する必要がありました。 ということで、今回は ...

Ryo Yoneyama

とある会社でソフトウェアエンジニアをしています。技術的な備忘録を中心にまとめてます。ネタがあれば日記も書きます。

    -Linux