ズッキューン!バッコーン!!

لإملاءات الفائدة

【Nginx】バーチャルホストを設定する

Nginxにバーチャルホストを設定する手順をまとめます。

バーチャルホストとは

1台のサーバで複数のドメインを運用する設定

手順1ディレクトリの作成

バーチャルホストの設定はsite-availableに設定ファイルを配置し、site-enabledにシンボリックリンクをはるのが慣例らしい。まずディレクトリを作成します。

$  sudo mkdir /etc/nginx/sites-available
$  sudo mkdir /etc/nginx/sites-enabled

シンボリックリンクとは

あるファイルを参照するファイル。このファイルを消しても参照先ファイルには影響がない。

手順2 sites-availableに設定ファイルを置く

ファイル名はドメイン名と合わせると運用しやすい。 (下記ではxxx.comというドメインをもっていることを想定)

$ sudo vim /etc/nginx/sites-available/xxx.com

とりあえず簡易な設定を記述

server {
    listen 80;
    server_name xxx.com;
    root /home/ubuntu/xxx.com;
}

server_nameに設定したドメインをいれる

手順3 シンボリックリンクを貼る

 sudo ln -s /etc/nginx/sites-available/xxx.com /etc/nginx/sites-enabled/

シンボリックリンクはlnコマンドで作成。「-s」オプションをつけることでシンボリックリンクを作ることができる。

手順4 nginx.confの編集

$ sudo vim /etc/nginx/nginx.conf

下記を追記

include /etc/nginx/sites-enabled/*;  
設定が適切に記述できているか確認
$ sudo /etc/init.d/nginx configtest
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful 

うまくいってればsuccessfulと表示される

nginxの再起動
$ sudo /etc/init.d/nginx restart

参考URL

Nginxのバーチャルホスト設定 - Qiita
秩序と情報とブロッコリー: nginxのインストールからマルチドメインの設定まで(@CentOS)

【Nginx】Nginxについて(インストール編)

Nginxのインストール方法とコマンドのメモを残します。

インストール方法

Nginxのインストールはいくつか方法があるようです。

  1. ディストリビューション提供パッケージの利用
  2. ソースファイルをビルド
  3. Nginx公式パッケージを利用

1はインストールの手順は簡単ですが、バージョンが古いものしかダウンロードできないようです。したがって、2か3の方法を選ぶといいとおもいます。今回は3の方法でNginxのインストールを行いました。

インストール手順

1 nginx公式サイトが配布するPGPキーを追加

$ curl http://nginx.org/keys/nginx_signing.key | sudo apt-key add -

2 リポジトリ一覧に追加

$ sudo sh -c "echo 'deb http://nginx.org/packages/ubuntu/ trusty nginx' >> /etc/apt/sources.list"
$ sudo sh -c "echo 'deb-src http://nginx.org/packages/ubuntu/ trusty nginx' >> /etc/apt/sources.list"

3 アップデート後nginxをインストー

$ sudo apt-get update
$ sudo apt-get install nginx

nginxの簡易コマンド集

#nginxのバージョン確認
$ nginx -v

#nginxの起動
$ sudo service nginx start

#nginxの停止
$ sudo service nginx stop

#nginxの再起動
$ sudo service nginx restart

#プロセス確認
$ ps ax | grep nginx

参考URL

Ubuntuに最新のnginxをインストールする - Qiita これから始める人のためのNginx(2):Nginxのインストールと基本設定 (1/4) - @IT

【Nginx】Nginxについて(概要)

UbuntuにNginxをインストールしたついでに、Nginxについて学習したので概要についてまとめます。

Nginxとは

Nginxは、軽量な拡張性の高いオープンソースのWebサーバーです。近年急速にシェアを伸ばしています。Nginxは、c10k問題というWebサーバが抱える問題を解決するために設計されました。c10k問題とは、クライアントから同時に大量のアクセスをされると、サーバーが処理しきれずパンクしてしまう現象のことです。Nginxはイベント駆動という仕組みを採用することで、c10k問題に対処しました。このイベント駆動についてはアーキテクチャの項目で解説します。

Nginxの主な用途

Webサーバとしてはもちろん、ロードランサーやリバースプロキシとして使われることも多い。

リバースプロキシ

webサーバーの前にnginxを配置することで、特定のサーバの負担を軽減したり、クライアントからのアクセスを制限することで、サーバーのセキュリティを高めることができる。

f:id:t_tsuyoshi:20170729145106p:plain

Nginxのアーキテクチャ

Nginxはmasterプロセスとworkerプロセスで構成されています。masterプロセスはworkerプロセスの制御と管理を担います。一方、workerプロセスはインベント駆動で処理を実行していきます。イベント駆動とは、イベントが発生するで待機し、何らかのイベンントが発生すると処理を行う仕組みです。

f:id:t_tsuyoshi:20170729145312p:plain:w400

またworkerプロセスは、ノンブロッキングI/Oや非同期I/Oを利用し、複数のクライアントからのリクエストを平行して処理することを可能にしました。select,epoll,kqueueといったシステムコールを使うことでI/O処理の多重化を実現しています。

ノンブロッキングI/O

すぐに処理できないデータがくるとエラーを返し、すぐに処理できるタスクを優先して処理を行う。

非同期I/O

ある処理を行っている時、別の処理も平行して行う。

Nginxは、イベント駆動モデルを採用することで従来のモデルに比べ、少ないプロセス数で処理を行い、プロセスの切り替えによる負担を減らしc10k問題に対処しています。

おわりに

Nginxについて調べているとカーネルなど低レイヤーの話にぶち当たり、そのたびに知識不足を感じました。今まで低レイヤーにあまり興味がなかったのですが、調べていく過程で興味が湧いてきたので少しずつ勉強していきたいと思います。

参考文献

nginx実践入門 (WEB+DB PRESS plus)

nginx実践入門 (WEB+DB PRESS plus)

参考URL

NGINXのパフォーマンスをスレッドプールで9倍にする | FAworksブログ
Nginx Inside Memo (カーネル/VM Advent Calendar) - 技術日記@kiwanami
Nginxの仕組みについて入門 · Goldstine研究所
I/Oを多重化するためのシステムコール(select, poll, epoll, kqueue) - $shibayu36->blog;

素材リンク

Laptop and other icons by Icons8

【AWS】お名前.comで購入したドメインにEC2のElastic IPを割り当てる方法

前々回の記事でEC2でインスタンスを作成しました。次の工程として、お名前.comで購入したドメインにEC2のElastic IPを割り当てる方法について調べてみました。

前提

手順

  1. Elastic IPの取得
  2. お名前.comのドメインにElastic IPを割り当てる

1 Elastic IPの取得

まず固定IPであるElastic IPをEC2のインスタンスに対して割り当てます。EC2でインスタンスを作成すると自動的にパブリックIPが与えられます。しかし、パブリックIPはインスタンスを停止すると別のIPに変わってしまいます。そこで固定IPであるElastic IPをインスタンスに対して割り当てます。

  • EC2のサイドメニューから「Elastic IP」を選択し「新しいアドレスの割り当て」をクリック

f:id:t_tsuyoshi:20170718200046p:plain

  • 画面が切り替わったら「割り当て」をクリック

f:id:t_tsuyoshi:20170718200223p:plain

  • Elastic IPが付与されると以下のような画面が表示されます。

f:id:t_tsuyoshi:20170718200322p:plain

次に取得したElastic IPをインスタンスに紐づける処理を行います。

  • 「アクション」→「アドレスの関連付け」をクリック。

f:id:t_tsuyoshi:20170718200640p:plain

  • 対象となるインスタンスのプライベートIPを選択し、「関連付け」をクリック

f:id:t_tsuyoshi:20170718200811p:plain

  • 関連付けに成功すると以下の画面が表示される。

f:id:t_tsuyoshi:20170718200944p:plain

2 お名前.comのドメインにElastic IPを割り当てる

  • お名前.comにログインしたら、ドメイン設定タブのサイドバーにある「DNS関連機能の設定」をクリック

f:id:t_tsuyoshi:20170719114416p:plain

  • 対象となるドメインを選択後「次へ進む」をクリック

f:id:t_tsuyoshi:20170719114515p:plain

  • DNSレコード設定を利用する横の「設定する」をクリック

f:id:t_tsuyoshi:20170719114608p:plain

  • 入力の項目に先ほど設定したElastic IPをVALUE入力し「追加」をクリック
    ホスト名は空欄、TPPE、TTLはそのままで大丈夫です。

f:id:t_tsuyoshi:20170719114723p:plain

  • 下にスクロールし、DNSレコード設定用ネームサーバー変更確認にチェックを入れて「確認画面に進む」をクリック

f:id:t_tsuyoshi:20170719114822p:plain

  • 確認画面が表示されるので内容を確認して「設定する」をクリック
    これで設定変更が完了です。

おわりに

AWSでもネームサーバーを提供しているようなので、次はRoute53への移管にチャレンジしたいです。ドメインを買って60日経たないと移管できないので今回は見送りました。

参考サイト

9章|AWS EC2のWordPressに独自ドメインを設定する(お名前.com) – SeaEncode

【AWS】MacからEC2へSSH接続する方法

自分のPCからEC2で作成したサーバーにSSH接続する方法についてまとめます。

事前準備

  • EC2でインスタンスを作成済みである。
  • pemファイルをダウンロード済みである。

手順

  1. xxx.pemファイルを~/.ssh/に移動
  2. SSH接続

1.xxx.pemファイルを~/.ssh/に移動

$ mv xxx.pemファイルのパス /Users/ユーザ名/.ssh

chmodoを使いpemファイルの権限を変更

$ chmod 400 xxx.pem

上記のコマンドで所有者に対して読み取りの権限だけを与えています。
chmodに続く数字は100桁が「所有者」10桁が「所有グループ」1桁が「その他」に対する権限を表しています。以下は権限と数字の対応表です。

権限 数字
読み取り 4
書き込み 2
実行 1

それぞれの権限に数字が割り振られており、その合計値によって権限の範囲が決まります。 例をあげます。


$ chmod 721 test.txt

test.txtファイルの「所有者」に対して読み取り、書き込み、実行の3点が 「所有グループ」に対しては書き込みのみ 「その他」には実行のみ与えられた状態です。

2.SSH接続する

まずリモート接続したいインスタンスのホスト名をメモしておきます。 インスタンスを選択し説明タブのパブリックDNSをメモしてください。

f:id:t_tsuyoshi:20170717141815p:plain

ターミナルからコマンドを打ち込む

$ ssh -i xxx.pemファイルのパス ubuntu@ホスト名

@より前は選択したOSによって変えてください。 ubuntuを使用しているので先頭がubuntuになっています。

コマンドの短縮

~/.ssh/configファイルに設定を記述することで簡単にSSH接続することが可能になります

Host 任意の接続名(test)
     HostName ホスト名
     IdentityFile pemファイルの絶対パス
     User os名

sshの後に接続名を書くだけでログインできるようになります。

$ ssh test

参考サイト

【AWS】EC2でインスタンスを作ってみた

AWS初心者がEC2でインスタンスをつくってみました。
EC2作成の手順をまとめます。

f:id:t_tsuyoshi:20170716122328j:plain

EC2とは

Amazon Elastic Computer Cloudの略で、仮想サーバ機能を提供するクラウドサービス。オートスケールが特徴でアクセス量に応じてインスタンスの処理能力を自由に拡張、または縮小できる。トラフィックが増えてもサーバーの機能を停止することなく、サービスをユーザに提供することができる。

インスタンス

1台のサーバーのこと

インスタンスの作成

EC2のダッシュボードに入り、「インスタンスの作成」をクリック

f:id:t_tsuyoshi:20170716123303p:plain

OSの選択

f:id:t_tsuyoshi:20170716123730p:plain 今回はUbuntuを選択。

インスタンスのタイプを選択

f:id:t_tsuyoshi:20170716124013p:plain 使用用途に合わせてスペックを選択する。
今回は無料枠だっとこともありt2.microを選んだ。

インスタンスの詳細設定

f:id:t_tsuyoshi:20170716132834p:plain インスタンスの数やネットワーク構成などを選択できる。
今回はデフォルトのまま。

ストレージの追加

f:id:t_tsuyoshi:20170716132957p:plain 用途に合わせてストレージを選択。
今回はマストドンインスタンスを作成することが目的で、ストレージが20GiB程度ある方が好ましいということなので、20Gibに変更。

タグの追加

f:id:t_tsuyoshi:20170716133251p:plain タグをつけるとインスタンスの管理しやすくなる。

セキュリティグループの設定

f:id:t_tsuyoshi:20170716133407p:plain 「ルールの追加」をクリックし、HTTPとHTTPSを追加する。
追加したら「確認と作成」をクリック。 設定の確認画面が表示されるので内容を確認したら「起動」をクリックする。

アクセスキーを選択する画面が表示される

f:id:t_tsuyoshi:20170716133625p:plain 「新しいキーペアの作成」を選び、キーペア名を入力。
キーペアのダウンロードをクリックするとxxx.pemファイルが自動でダウンロードされる。キーをダウンロードしたら「インスタンスの作成」をクリック。あとでSSH接続するときにキーを使用するので大切に保管してください。

現在作成中の画面が表示される。

f:id:t_tsuyoshi:20170716133853p:plain インスタンス作成まで数分かかります。
作成が完了するとインスタンス一覧に表示されインスタンスの状態がrunningに変わる。
これでインスタンスの作成が完了です。

おわりに

AWSはサーバーの提供だけでなく、機械学習など他にも様々な機能があり、他の機能もこれから触っていきたいです。次はAWS lamdaをつかってみたい。

参考文献

Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門 (CodeZine BOOKS)

Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門 (CodeZine BOOKS)