【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のインストールはいくつか方法があるようです。
- ディストリビューション提供パッケージの利用
- ソースファイルをビルド
- 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を配置することで、特定のサーバの負担を軽減したり、クライアントからのアクセスを制限することで、サーバーのセキュリティを高めることができる。
Nginxのアーキテクチャ
Nginxはmasterプロセスとworkerプロセスで構成されています。masterプロセスはworkerプロセスの制御と管理を担います。一方、workerプロセスはインベント駆動で処理を実行していきます。イベント駆動とは、イベントが発生するで待機し、何らかのイベンントが発生すると処理を行う仕組みです。
またworkerプロセスは、ノンブロッキングI/Oや非同期I/Oを利用し、複数のクライアントからのリクエストを平行して処理することを可能にしました。select,epoll,kqueueといったシステムコールを使うことでI/O処理の多重化を実現しています。
ノンブロッキングI/O
すぐに処理できないデータがくるとエラーを返し、すぐに処理できるタスクを優先して処理を行う。
非同期I/O
ある処理を行っている時、別の処理も平行して行う。
Nginxは、イベント駆動モデルを採用することで従来のモデルに比べ、少ないプロセス数で処理を行い、プロセスの切り替えによる負担を減らしc10k問題に対処しています。
おわりに
Nginxについて調べているとカーネルなど低レイヤーの話にぶち当たり、そのたびに知識不足を感じました。今まで低レイヤーにあまり興味がなかったのですが、調べていく過程で興味が湧いてきたので少しずつ勉強していきたいと思います。
参考文献
- 作者: 久保達彦,道井俊介
- 出版社/メーカー: 技術評論社
- 発売日: 2016/01/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る
参考URL
NGINXのパフォーマンスをスレッドプールで9倍にする | FAworksブログ
Nginx Inside Memo (カーネル/VM Advent Calendar) - 技術日記@kiwanami
Nginxの仕組みについて入門 · Goldstine研究所
I/Oを多重化するためのシステムコール(select, poll, epoll, kqueue) - $shibayu36->blog;
素材リンク
【AWS】お名前.comで購入したドメインにEC2のElastic IPを割り当てる方法
前々回の記事でEC2でインスタンスを作成しました。次の工程として、お名前.comで購入したドメインにEC2のElastic IPを割り当てる方法について調べてみました。
前提
手順
- Elastic IPの取得
- お名前.comのドメインにElastic IPを割り当てる
1 Elastic IPの取得
まず固定IPであるElastic IPをEC2のインスタンスに対して割り当てます。EC2でインスタンスを作成すると自動的にパブリックIPが与えられます。しかし、パブリックIPはインスタンスを停止すると別のIPに変わってしまいます。そこで固定IPであるElastic IPをインスタンスに対して割り当てます。
- EC2のサイドメニューから「Elastic IP」を選択し「新しいアドレスの割り当て」をクリック
- 画面が切り替わったら「割り当て」をクリック
- Elastic IPが付与されると以下のような画面が表示されます。
次に取得したElastic IPをインスタンスに紐づける処理を行います。
- 「アクション」→「アドレスの関連付け」をクリック。
- 対象となるインスタンスのプライベートIPを選択し、「関連付け」をクリック
- 関連付けに成功すると以下の画面が表示される。
2 お名前.comのドメインにElastic IPを割り当てる
- 対象となるドメインを選択後「次へ進む」をクリック
- DNSレコード設定を利用する横の「設定する」をクリック
- 入力の項目に先ほど設定したElastic IPをVALUE入力し「追加」をクリック
ホスト名は空欄、TPPE、TTLはそのままで大丈夫です。
- 下にスクロールし、DNSレコード設定用ネームサーバー変更確認にチェックを入れて「確認画面に進む」をクリック
- 確認画面が表示されるので内容を確認して「設定する」をクリック
これで設定変更が完了です。
おわりに
AWSでもネームサーバーを提供しているようなので、次はRoute53への移管にチャレンジしたいです。ドメインを買って60日経たないと移管できないので今回は見送りました。
参考サイト
【AWS】MacからEC2へSSH接続する方法
自分のPCからEC2で作成したサーバーにSSH接続する方法についてまとめます。
事前準備
- EC2でインスタンスを作成済みである。
- pemファイルをダウンロード済みである。
手順
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をメモしてください。
ターミナルからコマンドを打ち込む
$ 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作成の手順をまとめます。
EC2とは
Amazon Elastic Computer Cloudの略で、仮想サーバ機能を提供するクラウドサービス。オートスケールが特徴でアクセス量に応じてインスタンスの処理能力を自由に拡張、または縮小できる。トラフィックが増えてもサーバーの機能を停止することなく、サービスをユーザに提供することができる。
インスタンス
1台のサーバーのこと
インスタンスの作成
EC2のダッシュボードに入り、「インスタンスの作成」をクリック
OSの選択
今回はUbuntuを選択。
インスタンスのタイプを選択
使用用途に合わせてスペックを選択する。
今回は無料枠だっとこともありt2.microを選んだ。
インスタンスの詳細設定
インスタンスの数やネットワーク構成などを選択できる。
今回はデフォルトのまま。
ストレージの追加
用途に合わせてストレージを選択。
今回はマストドンのインスタンスを作成することが目的で、ストレージが20GiB程度ある方が好ましいということなので、20Gibに変更。
タグの追加
タグをつけるとインスタンスの管理しやすくなる。
セキュリティグループの設定
「ルールの追加」をクリックし、HTTPとHTTPSを追加する。
追加したら「確認と作成」をクリック。
設定の確認画面が表示されるので内容を確認したら「起動」をクリックする。
アクセスキーを選択する画面が表示される
「新しいキーペアの作成」を選び、キーペア名を入力。
キーペアのダウンロードをクリックするとxxx.pemファイルが自動でダウンロードされる。キーをダウンロードしたら「インスタンスの作成」をクリック。あとでSSH接続するときにキーを使用するので大切に保管してください。
現在作成中の画面が表示される。
インスタンス作成まで数分かかります。
作成が完了するとインスタンス一覧に表示されインスタンスの状態がrunningに変わる。
これでインスタンスの作成が完了です。
おわりに
AWSはサーバーの提供だけでなく、機械学習など他にも様々な機能があり、他の機能もこれから触っていきたいです。次はAWS lamdaをつかってみたい。
参考文献
Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門 (CodeZine BOOKS)
- 作者: WINGSプロジェクト阿佐志保,山田祥寛
- 出版社/メーカー: 翔泳社
- 発売日: 2016/06/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
久しぶりのblog
内容はプログラミングや読書録などを主に書いていきます。
ブログは続いた試しがないのですが、まずは月1更新を目標にやっていこうと思います。