Linuxでサーバーを構築する際に決定することを整理してみた

突然ですが、「サーバー」という語句が付いた単語を思いつく順に挙げてみましょう。

  • Webサーバー
  • データベースサーバー
  • メディアサーバー
  • メールサーバー
  • Minecraftサーバー

ここに挙げたWebサーバーなどを構築するためには、Linuxに必要なアプリケーションをインストールします。

では、早速インストールを始めましょう!

と言いたいところですが、そもそもLinuxをインストールする際に使うLinuxディストリビューションには、多くの選択肢があります。

さらに、そこにインストールするアプリケーションにも多くの選択肢があります。

このように、サーバーを構築して何かをするまでには、多くのことを決定しなければいけません。

そこで今回は、Linuxでサーバーを構築するときに決定しなければいけないことを、整理してお伝えします。

サーバーで提供するサービスを決定する

まずは、Linuxでサーバーを構築して、どのようなサービスを提供するかを決定しましょう。

サービスを思いつくままに挙げてみましょう

提供するサービスサーバーの種類
ユーザーがブラウザでアクセスしておみくじを引けるサービスのように、ブラウザで利用するサービスを提供するWebサーバー
様々な写真や文章を格納して、プログラムに提供するデータベースサーバー
ブログ記事を提供するWebサーバー+データベースサーバー
視聴者に音楽や動画などを提供するメディアサーバー
ユーザーにメールアドレスを提供するメールサーバー
Minecraftのマルチプレイ環境を提供するMinecraftサーバー

このようなイメージで、提供するサービスを決定します。

また、提供するサービスの内容に合わせて、サーバーの種類も決定します。

サービスを提供する範囲と場所を決定する

次に、誰に向けてサービスを提供するかと、サービスを提供する場所を決定しましょう。

大きく分けて、以下の4つの中から1つを選択します。

  • 家族や友だちに向けに、インターネットでサービスを提供する
  • 家族や友だちに向けて、自宅でサービスを提供する
  • 不特定多数の人に向けて、インターネットでサービスを提供する
  • 不特定多数の人に向けて、自宅でサービスを提供する

家族や友だちに向けてサービスを提供するなら、そこまでセキュリティを心配する必要はなさそうです。

他方、不特定多数の人に向けてサービスを提供すると、セキュリティを心配する必要があるでしょう。

インターネットでサービスを提供すると、運用コストは低くなります。

一方、自宅でサービスを提供すると、コンピュータを用意したり電気代がかかったりするため、運用コストが高くなります。

インターネットでサービスを提供する場合

インターネットでサービスを提供する場合は、以下の4つのサービス形態の中から、利用するサービスを1つ決定します。

サービスの概要サービス形態サービス例
インストール操作が必要なく、ユーザー登録するだけで使えるサービスSaaS(Software as a Service)Gmail、Dropbox
主要なデータベースやプログラムを含む実行環境を借りるサービスPaaS(Platform as a Service)Heroku、レンタルサーバー、AWS Elastic Beanstalk
インターネット上に公開された仮想コンピュータを借りるサービス。ネットワークを構築できることもあるIaaS(Infrastructure as a Service/クラウド)Amazon EC2、さくらのクラウド
インターネットに接続された仮想コンピュータを借りるサービスVPS(Virtual Private Server)さくらのVPS、お名前.com VPS

SaaSを選択した場合は、Linuxにサーバーを構築する必要がありません。

PaaSの代表的なサービスであるHerokuについては、侍エンジニア塾ブログの記事でも紹介していますので、あわせてご覧ください。

herokuとは?初心者でも5分で分かる基本や特徴をまるっと紹介
更新日 : 2020年7月24日

自宅でサービスを提供する場合

自宅でサービスを提供する場合は、古いPCスティックPCなどにLinuxをインストールして、自宅サーバーを構築することになります。

Linuxディストリビューションを決定する

サービス形態(PaaS、IaaS、VPS、自宅サーバー)を決定したら、コンピュータにインストールするLinuxディストリビューションを決定します。

Linuxディストリビューションについては、以下の記事が詳しいので、ぜひご覧ください。

【エンジニア監修】Linuxとは何か?初心者目線でやさしく解説してみた
更新日 : 2020年7月30日

PaaSの場合

Linuxディストリビューションは選択できませんので、次に進みます。

IaaSまたはVPSの場合

数あるLinuxディストリビューションの中から、CentOSをインストールしましょう。

以下のサイトでもサーバー用途ではCentOSを推しています。

参考:https://fossbytes.com/best-linux-distros-choosing-guide/

Linuxディストリビューションの中には、以下の記事で紹介しているように、初心者向けにデスクトップ環境(GUI)を使って操作できるモノもあります。

もう迷わない!Linuxを始めるためのおすすめ環境の選び方!
更新日 : 2020年6月12日

しかし、IaaSもVPSも、インターネットに接続された仮想コンピュータを借りる方式のため、GUIを使わずにコマンドだけで操作するCentOSのほうが適しています。

自宅サーバーの場合

自宅サーバーの場合は少し状況が違います。

自宅サーバーにはディスプレイやキーボード、マウスを接続して直接操作できるため、上の記事で紹介されている初心者向けのLinuxディストリビューションである、Linux MintやUbuntuをインストールしてもサーバーを構築できます。

ただし、Webサーバーアプリケーション(Apache、Nginx)などをインストールする操作は、コマンドだけで説明されていることが多いため、マウスを使って設定できるケースはあまり多くありません。

インストールするアプリケーションを決定する

サーバーを構築するためにインストールするアプリケーションを決定します。

たとえば、Webサーバーを構築する場合は、ApacheNginxといったアプリケーションをインストールする必要があります。

サーバーの種類インストールするアプリケーション
WebサーバーApache、Nginx
データベースサーバーMySQL、PostgreSQL
ブログサーバーWebサーバー、データベースサーバー、WordPress
メディアサーバーReadyMedia、MediaTomb
メールサーバーPostfix、Sendmail
MinecraftサーバーMinecraft Server

プログラミング言語を決定する

プログラミング言語を使用してサービス(Webアプリ)を開発する場合は、どの言語を使うか決定します。

プログラミング言語を選択する前に、以下の記事をご覧いただき、概要から理解することをおすすめします!

Webアプリとは?サービスの仕組みや開発の流れを理解しよう
更新日 : 2020年3月13日

概要をつかんだら、プログラム言語(RubyPHPPythonJavaなど)を選択し、Webフレームワークを使用してサービスを開発するのが簡単です。

各言語の有名なWebフレームワークを取り上げた記事がありますので、あわせてご覧ください!


【5分でわかる】PHPのWEBフレームワーク「CakePHP」とは?
更新日 : 2019年8月14日

【Django入門】あなたのパソコンにDjangoをインストール!
更新日 : 2019年1月29日

【5分でわかる】Javaフレームワーク「Spring Framework」とは
更新日 : 2020年8月18日

なお、サービス形態によっては、下表のように特定のプログラミング言語を使わなければいけない場合がありますので注意してください。

サービス形態説明
PaaSPaaSが対応するプログラミング言語の中から選択します。
IaaS、VPS、自宅サーバー動作環境をインストールすればよいので、自由にプログラミング言語を選択できます。

その他

その他、Linuxでサーバーを構築するときに気をつけることも紹介しておきます。

セキュリティ

どんな場合でもサービスを提供する限りはセキュリティについて、よくよく検討する必要があります。

IaaSVPS自宅サーバーのように、Linuxディストリビューションをインストールする場合は、特に気をつけてください。

セキュリティに関しては、非常に範囲が広く難しい内容になりますので、他の資料をあたってください。

まず初めに読むべき資料は、以下のサイトからダウンロードできる「Linuxセキュリティ標準教科書」(2013/9/30発行)です。

参考:http://www.lpi.or.jp/linuxtext/security.shtml

PDFやEPUB形式でダウンロードできますし、Kindle版や製本されたモノも購入できます。

セキュリティをないがしろにしていると、手痛いしっぺ返しがくるのは間違いありませんから、必ず目を通しましょう。

サービスの開始までの操作

ここまでは、何をするかを決定しただけでした。

ここからは、実際にLinuxディストリビューションをインストールしたり、アプリケーションをインストールしたり、あなたが提供したいサービスを開発したりします。

この記事では、規模が大きくなりすぎてしまうので、概要だけをサラリと紹介しますね。

PaaS(Herokuやレンタルサーバーなど)の場合

PaaSが提供している説明に従って操作します。

一般的な操作では、PaaSに、あなたが提供したいサービスを動作させる環境(プラットフォーム)をインストールします。

そして、あなたが提供したいサービスを開発し、PaaSにインストール(アップロード)して、起動(デプロイ)することになるでしょう。

IaaS、VPS、自宅サーバーの場合

こちらの場合は、PaaSよりも作業が必要です。

コンピューターにLinuxディストリビューションをインストールし、必要なサーバーアプリケーション(ApacheやNginxなど)をインストールします。

そして、あなたが提供したいサービスを開発し、そのサービスをIaaS、VPS、自宅サーバーにインストールすることになります。

まとめ

相当な駆け足でしたが、Linuxでサーバーを構築するときに決定することとして、以下の4つを紹介しました。

  • サーバーで提供するサービスを決定する
  • サービスを提供する範囲と場所を決定する
  • Linuxディストリビューションを決定する
  • プログラミング言語を決定する

これらをすべて決定したら、ようやくサービスを開発し、Linuxサーバーにインストールするという手順になることも説明しました。

この記事では、サービスの提供を始めるまでのすべては説明できませんでしたが、流れは伝えられました。

何度読んでもピンと来なかいと諦めずに、とりあえずで構わないので(費用がかからないように注意しながら)1つずつ決定して、作業を進めてみてください。

諦めなければ、どこかで突然すべてが繋がって理解できるようになります!

頑張ってください!

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

侍テック編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。
サービスページはこちら
ツイッターはこちら
フェイスブックはこちら

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー