LINUXのインストールからwebサーバーを構築する手順
Webサーバー構築手順書
目次
- 1.1 環境構築とセットアップ
- 1.2 Linuxのインストール
- 1.3 設定に必要な知識
- 2.1 Apacheの設定
- 2.2 インストール
- 2.2 ファイアウォールの設定
- 3.1 Dockerのインストールと設定
- 4.1 Docker Composeについて
- 4.2 Docker Composeとは
- 4.3 実用的な例
- 参考URL
1.1 環境構築とセットアップ
使用os : asus ノートpc
インストール後のUbuntuのバージョン: 20.04
1.2 Linuxのインストール
UbuntuのインストールとRufusのダウンロードを行こない選択からインストールしたブートを選ぶその後USBをさし,スタートを押す.
その後ノートpcを起動し電源を押したのちにF2キーを長押しする,そうすることによってBIOSを起動する Boot Priority欄にUbuntの表記があるためそれを最も上に持ってくる.
Ubuntをインストールを選択
表示される画面のままに進め,の画面になったらUbuntuを選択する.
なおwifiの接続はどちらでもよい.
1.3 設定に必要な知識
①Linuxにおけるアクセス権変更に必要なコマンド
コマンドの書式:
chmod 対象+権限 ファイル名(ディレクトリ名)
②Linuxについて
・コマンドを書く際に[sudo]と先頭につけることがあるこれはユーザー権限で実行する際に書かれることが多く,筆者の経験では動かない際にこれを先頭に着けることを忘れているということが多々ある.
・Linuxのファイルシステム構造は以下のようになっているbashを開いた際にデフォルトでカレントディレクトリになっておりvarディレクトリやusrディレクトリにアクセスする際には以下のように入力する必要がある.
cd /../..
https://qiita.com/nys9302/items/a8ddeedd3cd9d0deb332 より
③Dockerとは
・Dockerとは軽量で高速に動作するコンテナ型仮想環境用のプラットフォームである.従来の仮想化技術と異なり,ホストOSのカーネルを共有することでゲストOSを必要とせず,軽快に動作する.Dockerを使用することで,1台のサーバー上で複数のアプリケーション実行環境を作成・利用でき,環境の移転や共有も容易に行える.
・インストールについて
Dockerは,軽量で効率的なコンテナ型仮想化プラットフォームであり,アプリケーションの開発,配布,実行を容易にする技術である.UbuntuにDockerをインストールする方法は主にDocker EngineとDocker Desktopの2つに大別される.
Docker Engineは,UbuntuのターミナルでDockerを利用するための標準的な方法であり,インストール手順には古いバージョンの削除,必要なパッケージのインストール,GPG鍵の取得,Dockerリポジトリの追加,Docker CEパッケージのインストールが含まれる.インストール後は,Dockerデーモンの起動と一般ユーザーの権限設定が必要である.
Docker Desktopは,グラフィカルインターフェースを提供し,統合Kubernetesクラスタやサードパーティ拡張機能をサポートする.ただし,特定のUbuntuバージョンとAMD64プロセッサを必要とする.
インストール方法の選択は,ユーザーのニーズと環境に依存する.ターミナル作業に慣れた軽量環境を求める場合はDocker Engine,グラフィカルインターフェースと多機能性を望む場合はDocker Desktopが適している.
Dockerの導入により,開発環境の構築と共有が容易となり,アプリケーションの移植性が向上し,リソースの効率的な利用が可能となる.
2.1 Apacheの設定
Apacheというwebサーバーソフトをインストールする.
Apacheの特徴としてOSを選ばずに動作することやオープンソースなので無料で使用可能である点が挙げられる.
2.2インストール
①bashに以下のコマンドを入力する.これによってApacheのインストールされる
sudo apt update
sudo apt -y install apache2
②サービスを起動しステータスを確認する.
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl status apache2 #このコマンドがステータスの確認
③ブラウザを開き、以下のいずれかのURLを入力:
- ローカル環境の場合: http://localhost
- 別PCからアクセスする場合: http://[サーバのIPアドレス]
2.2 ファイアウォールの設定
①ファイアウォールでApacheの許可を行う.
sudo ufw allow 'Apache'
②ファイアウォールの設定の確認するコマンドを実行し以下のような結果を得られる.
sudo ufw status
To Action From
Apache ALLOW Anywhere
Apache (v6) ALLOW Anywhere (v6)
3.1 Dockerのインストールと設定
①Dockerのインストールのために以下のコマンドを実行する.なお1つのコマンドごとに・で区切っており実際に実行する際には必要ない.
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce
コマンドを上から1つずつ解説すると,
- 最新のソフトウェアリストを取得する.
- Dockerのインストールに必要な追加ツールをインストール
- ダウンロード元の信頼性を確保する
- Dockerパッケージをインストールするためのリポジトリを追加
- 最後の2つでDockerエンジンをインストール
という手順になっている.
4.1 Docker Composeについて
4.2 Docker Composeとは
Docker Composeは、複数のコンテナで構成される Docker アプリケーションの設定を記述し,実行するツールである.
複数のコンテナ(データベース、キャッシュ、Web APIなど)で構成されたシステムを docker コマンドだけで起動する場合、個別コンテナの設定をパラメタで指定しながら、コンテナの依存関係の順にコマンドで起動していく必要があるが,
Docker Compose を使うと複数コンテナの設定や依存関係を設定ファイルに記述し,単一のコマンドで複数コンテナを一度に起動できる.
4.3 実用的な例
本記事は実際に動かすことではなく仕組みの理解を目的としているためサンプルは興味のあるかたはGithub リポジトリを参照してください.
Github上に公開されているDocker公式サンプルの[voting app]についてみていく
本アプリは以下のような構成で構築されている
https://github.com/dockersamples/example-voting-app より
アプリケーションの構成要素は以下の通りで
- Pythonで書かれたフロントエンドウェブアプリ(投票インターフェース)
- 新しい投票を収集するRedisインスタンス
- 投票を処理する.NETワーカー
- 投票データを保存するPostgreSQLデータベース
- リアルタイムで投票結果を表示するNode.jsウェブアプリ
なおこの文章はaiによって書かせたものである.
このアプリケーション自体がvoting-app(投票アプリ)であり、複数のDockerコンテナ上で動作する単純な投票システムを実装している.
参考URL
- https://hnavi.co.jp/knowledge/blog/apache/
- https://qiita.com/nys9302/items/a8ddeedd3cd9d0deb332
- https://www.kagoya.jp/howto/cloud/container/docker/
- https://www.rstone-jp.com/column/107612/
- https://qiita.com/yoshiyasu1111/items/f2cab116d68ed1a0ce13
- https://kinsta.com/jp/blog/install-docker-ubuntu/
- https://qiita.com/ohhara_shiojiri/items/486a54ad895d6bb3144e
- https://www.ogis-ri.co.jp/otc/hiroba/technical/docker/part4.html
- https://qiita.com/prgseek/items/e557a371d7bd1f57b9b1
- https://blog.denet.co.jp/centrally-manage-multiple-containers-with-docker-compose/
- https://github.com/dockersamples/example-voting-app
Discussion