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のインスタンスに乗り換えました。うーん、ここらへんの違いがよく分からない…。

広告の表示がブロックされています。
広告の表示がブロックされています。

関連記事

Flutter プログラミング

2021/8/2

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

アプリ内で独自の設定を作る場合、そのデータを保持する方法を考える必要があります。 SQL、テキストファイルなど選択肢は多々ありますが、shared_preferencesというパッケージを使えば簡単に実装することができます。 Dart packages  1 User 29 Pocketsshared_preferences | Flutter PackageFlutter plugin for reading and writing simple key-value pairs. Wraps ...

この記事を読む

RaspberryPi Linux

2021/4/18

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

昨今、様々なデバイスでLinuxが動くようになっている中、組み込みLinuxのデファクトスタンダードとなりつつあるのが「Yocto」と呼ばれるビルドシステムです。 組み込みの現場ではその名前を聞くことが増えましたが、まだまだ日本ではドキュメントも乏しくイマイチ掴み所がありません。そこで、まずは使ってみようということでRaspberry Pi4のイメージをビルドしてみることにしました。 目次1 Yoctoとは?2 Raspberry Pi4のイメージを作ってみる2.1 下準備2.2 Yocto本体+ラズパイ ...

この記事を読む

C++ 自作物

2021/8/1

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

自作の言語処理系開発日記の第7回です。前回までで変数の実装が終わったので、ここからはいよいよ制御構文を実装…と思ったのですが、制御のためには比較演算子を実装する必要がありました。 ということで、今回は比較演算子を実装していきます。基本的には四則演算と変わりないのであまり難しくはありません。 目次1 比較演算子の仕様2 実装してみる2.1 トークナイザ2.2 構文解析器2.3 コード生成器2.4 実行系(仮想マシン) 比較演算子の仕様 比較演算子を実装する前に、その仕様について少し考えておきます。 比較演算 ...

この記事を読む

C++ 自作物

2021/8/1

言語処理系をつくろう(第6回):変数を実装する

自作の言語処理系開発日記、第6回です。 これまでは四則演算など、電卓レベルの機能実装に取り組んでいましたが、いよいよ変数を扱えるようにしていきたいと思います。これでかなりプログラミング言語っぽくなるかも(・∀・) 今回は新しい仕組みを入れたりと、割と修正がごちゃごちゃしてしまったので、うまくまとめきれていません。ごめんなさい…。 目次1 変数の実装について2 実装してみる2.1 トークナイザ2.2 構文解析器2.3 コード生成器2.4 実行系(仮想マシン) 変数の実装について これまでは即値しか扱っていな ...

この記事を読む

C++ 自作物

2021/8/1

言語処理系をつくろう(第5回):連続した式の実行

自作の言語処理系開発日記の第5回です。 前回までで括弧を含んだ四則演算ができるようになりましたが、このままでは単なる電卓止まりです。ということで、今回は複数の式を連続して実行できる仕組みを実装していきたいと思います。 目次1 生成規則を考える2 実装してみる2.1 構文解析器2.2 コード生成 生成規則を考える これまでは入力全体を1つの式として解釈していましたが、今回は式の区切りを定義して複数の式として解釈できるようにします。 C言語だと「;」や「,」が区切り文字として使われますが、開発中の言語(roo ...

この記事を読む

  • このブログの中の人

Ryo Yoneyama

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

-Linux

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