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++ 自作物

2020/8/4

言語処理系をつくろう(第4回):括弧付き計算と単項演算子

自作の言語処理系開発日記の第4回です。前回までで乗除算を実装できたので、この調子でもう少し複雑な計算に対応したいと思います。今回はそれぞれの実装が少ないので、一気に2つのステップを進めます。 目次括弧を含む計算生成規則をいじる単項演算子(+と-)生成規則をいじる 括弧を含む計算 これまでの実装では、乗除算は必ず加減算に先立って実行されます。しかし、それでは不十分なので、括弧を含む計算(例:(1+2)*3)を実行できるようにします。 生成規則をいじる 今回も構文解析器の生成規則を修正することで、括弧付きの計 ...

この記事を読む

C++ 自作物

2020/8/4

言語処理系をつくろう(第3回):乗除算を実装する

自作の言語処理系開発日記の第3回です。前回は加減算を実装したので、今回は乗除算の実装にチャレンジしていきます。 目次実装してみる構文解析器 実装してみる 今回の実装において、トークナイザ・コード生成器・実行系(仮想マシン)については加減算のときと変わりません。単純に各種定義を追加して、それを扱えるようにしてあげるだけです。 一方、構文解析器についてはちょっとややこしいので、そこだけ解説します。 構文解析器 加減算では演算の優先順位がなかったので、単純に左結合(=左から順に計算していく)で処理していけばOK ...

この記事を読む

C++ 自作物

2020/8/2

言語処理系をつくろう(第2回):加減算を実装する

自作の言語処理系開発日記の第2回です。前回は処理系全体の骨格と、数値の読み込みを実装しました。今回は次のステップとして、加減算を扱えるようにしたいと思います。 目次実装してみるトークナイザ構文解析器コード生成器+実行系(仮想マシン) 実装してみる トークナイザ 前回までのトークナイザでは数値しか扱うことができないので、「+」や「-」などの記号をトークン化できるようにします。 まずは、トークン定義を追加します。加算と減算それぞれで追加しても良いのですが、後段の構文解析で特に区別する必要がないので、演算子とい ...

この記事を読む

C++ 自作物

2020/8/2

言語処理系をつくろう(第1回):数値を読み込む

前回からはじめた自作の言語処理系開発日記の第1回目です。今回から実際のコードを書いていきたいと思います。 前回の記事でも紹介したとおり、全体の構成は以下のような感じです。 今回は、それぞれの仕組みの骨格と簡単な機能の実装を進めていくことにします。 目次今回の目標実装してみるトークナイザ構文解析器コード生成器仮想マシン(実行系)実装コード全体 今回の目標 はじめの1歩として実装するのは、数値の読み込みです。1つの数字を読み込んでそれを実行結果とするだけの機能を実装します。機能としてはシンプルですが、中身自体 ...

この記事を読む

C++ 自作物

2020/8/1

言語処理系をつくろう(第0回):イントロ編

今回から連載企画として、自作の言語処理系の開発日記を書いていこうと思います。 以前、プログラミング言語もどきとして「particle」というものを作ったのですが、進めていく内に手詰まりになって頓挫してしまいました。 しかし、最近「低レイヤを知りたい人のためのCコンパイラ作成入門」というオンラインブックを見て「作りたい欲」が高まってきたので、あらためて挑戦してみることにしました。 開発過程のコードはGithubでオープンにしていくつもりです。モチベーション維持のためにも、その詳細をこのブログで紹介しながら進 ...

この記事を読む

-Linux

© 2020 Corgi Lab. ~備忘録のための技術ブログ~