Linux初心者〜AWSにWebサーバを構築〜

2018年3月22日システムAWS, EC2, Linux, RDS, Webサーバ

はじめに

どうも、UTです。
AWSでWebサーバを(無料枠内)構築する際の手順をまとめました。
記事を書いててちょっと長くなってきたので
今回は
Webアプリケーション構築準備までにしておきます。

大まかな手順として

  • AWSでEC2とRDS、Elastcacheを用意
  • EC2上にNginx,PHP-fpmをインストール
  • CodeIgniterを設置

っといった流れになっています。

Webアプリケーション構築については
また別途記事に書く予定ですー。

Webサーバ構成

構築環境

  • EC2インスタンス
    Amazon Linux AMI (t2.micro)

  • RDS
    MySQL

  • Elastic Cache
    Memcached

Webサーバ環境手順

EC2インスタンス

まずは、AWSでWebサーバを構築するにあたりEC2インスタンスを作成してあなた専用のLinux環境が手に入れましょう。

注意
EC2インスタンスを作成する前に必ずリージョンが東京になってるのを見ておいてくださいねー
じゃないと、EC2インスタンスを作り直すことになるので。。。
(国内向けのサービスの場合、海外にEC2を立ち上げると物理的な距離があってレスポンスが悪くなるので)

EC2インスタンスを作成

いったんサクッとインスタンスを作成して、あとで諸々設定する。
なので、
ステップ1のAMIでAmazon Linux AMIを選択して、確認と作成ボタンを押して作成しちゃう。

キーペアを作成

すると
「既存のキーペアを選択するか、新しいキーペアを作成します。」
なるモーダルが出現。
既存のキーペアなんて持ってないので新しいキーペアを作成します。
(キーペア名は、なんでも良い。まぁサイトのドメイン名とかで作成すると管理しやすいんじゃないかぁっと)

キーペアをダウンロード

キーペアのダウンロードボタンをぽっちとしてダウンロードしておく。
(このキーペア名.pemは、無くすとSSHに接続できなくなったりするので大切に保管しておく)

EC2インスタンスを設定

では、諸々の設定を始めてまいります。
先ほど作成したEC2インスタンスをEC2インスタンス一覧で確認してみましょう。
([サービス] – [コンピューティング] – [EC2] をぽっちってから [インスタンス] をポチる)

インスタンスの名前

後々わかりやすいようにインスタンスに名前をつけます。
(サイトのドメイン名とかにしておくとOK)
インスタンス一覧の [Name] にマウスを持っていくと 鉛筆アイコン になるので、そこから設定。

Elastic IPを設定

Elastic IPでグローバルなIPアドレスを設定します。

  • Elastic IPを作成
    っということで、Elastic IP一覧を開く。
    ([EC2] – [ネットワーク&セキュリティ] – [Elastic IP])
    新しいアドレスの割り当てボタンをクリックして、割り当てボタンを押下して終了。

  • Elastic IPをEC2インスタンスへ関連付け

作成したElastic IPとEC2インスタンスの関連付けを行う。
([アクション] – [アドレスの関連付け])
– リソースタイプ:インスタンス
– インスタンス:さっき作ったEC2インスタンスを指定
– プライベートIP:さっき作ったEC2インスタンスのプライベートIPを指定
以上で関連付けボタンを押す。

※注意
 Elastic IPを設定した後にEC2インスタンスを停止すると、課金されます。

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

このままだとSSHでの接続は出来るがHTTPとかHTTPSとかの接続は出来ない。
なので、接続できるようにセキュリティグループを設定する必要がある。

  • セキュリティグループ名:Global Web Groupっとか適当に
  • 説明:Global Web Service Groupっとか適当に
  • VPC:デフォルト(別途VPC作成してないので)
  • インバウンド:
    • タイプ:HTTP
    • プロトコル:TCP
    • ポート範囲:80
    • ソース:カスタム(0.0.0.0/0)

    っで作成

HTTPSとか欲しい人は同様に設定を追加する。

最後に
作成したセキュリティグループをEC2インスタンスへ追加する。
([アクション] – [ネットワーキング] – [セキュリティグループの変更])

RDS

そしてDBサーバを用意するためにDBインスタンスを用意します。

注意
EC2インスタンス同様にRDS作成する前に必ずリージョンが東京になってるのを見ておいてくださいねー
(国内向けのサービスの場合、海外にRDSを立ち上げると物理的な距離があってレスポンスが悪くなるので)

RDSインスタンスを作成

EC2同様にRDSもサクッと用意しちゃいましょう。
ステップ 1:エンジンの選択でMySQLを選択します。
次に

  • インスタンスの仕様
    • DB エンジン:mysql
    • ラインセンスモデル:General Public License
    • DB エンジンのバージョン:mysql 5.6.37
    • DB インスタンスのクラス:db.t2.micro
    • マルチ AZ 配置:いいえ
    • ストレージタイプ:汎用(SSD)
    • ストレージ割り当て:20GB
  • 設定
    • DB インスタンス識別子:work(任意の好きな名前でOK)
    • マスターユーザの名前:ut(任意の好きな名前でOK)
    • マスターパスワード:******
    • パスワードの確認:******
  • ネットワーク & セキュリティ
    • VPC:デフォルト VPC
    • サブネットグループ:default
    • パブリックアクセス可能:はい
    • アベイラビリティーゾーン:指定しない
    • VPC セキュリティグループ:Global Web Service Group(EC2で作成したセキュリティグループにしとく)
  • データベースの設定
    • データベースの名前:work(任意の好きな名前でOK)
    • データベースのポート:3306
    • DB パラメータグループ:default.mysql5.6
    • オプショングループ:default.mysql5.6
    • タグをスナップショットへコピー:チェックしない
    • IAM の DB 認証を有効にする:指定しない
    • 暗号を有効化:いいえ
  • バックアップ
    • バックアップの保存期間:7日
    • バックアップウィンドウ:指定しない
  • モニタリング
    • 拡張モニタリングを有効にする:いいえ
  • メンテナンス
    • マイナーバージョン自動アップグレード:はい
    • メンテナンスウィンドウ:指定しない

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

ここでEC2インスタンスからRDSのDBインスタンスへ接続できるようにセキュリティグループを設定する。
([EC2] – [セキュリティグループ] から開く)

これまでの手順通りだとRDSのDBインスタンスに割り当てたセキュリティグループは Global Web Service Group と思うので
Global Web Service Groupのインバウンドを編集していきます。

  • タイプ:MYSQL/Aurora
  • プロトロル:TCP
  • ポート範囲:3306
  • ソース:カスタム:*.../32(EC2のプライベートIPを指定)(別のVPCの場合は、Elastic IPを指定)
  • 説明:

で保存する。

備考
RDSのDBインスタンスへの接続方法等は
この後に書くのでそちらを参照ください。

ElastiCache

DBのSelect結果等をキャッシュして負荷軽減&レスポンス改善をするために
キャッシュエンジンを用意します。

Memcached

  • Amazon ElastiCache クラスターの作成
    • クラスタエンジン:
  • Memcached 設定
    • 名前:work(これは任意の名前でOK)
    • エンジンバージョンの互換性:1.4.34
    • ポート:11211
    • パラメータグループ:default.memcached1.4
    • ノードのタイプ:cache.t2.micro
    • ノードの数:1
  • Memcached の詳細設定
    • セキュリティグループ:EC2やRDSと同様のセキュリティグループを設定しておく

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

ここでEC2インスタンスからElastiCacheのMemcachedへ接続できるようにセキュリティグループを設定する。
([EC2] – [セキュリティグループ] から開く)

これまでの手順通りだとMemcachedに割り当てたセキュリティグループは Global Web Service Group と思うので
Global Web Service Groupのインバウンドを編集していきます。

  • タイプ:TCP
  • プロトロル:TCP
  • ポート範囲:11211
  • ソース:カスタム:*.../32(EC2のプライベートIPを指定)(別のVPCの場合は、Elastic IPを指定)
  • 説明:

で保存する。

備考
Memcachedへの接続方法等は
この後に書くのでそちらを参照ください。

Webサーバ構築

ここからは、EC2インスタンスへSSH接続して作業を行っていきますー。

  • Windowsの場合は、Puttyなどで接続する。
  • Macの場合、ターミナルなどで接続する。

初期設定

  • yumを更新
$ sudo yum -y update
  • cp のエイリアス削除
$ unalias cp

本来コピーコマンド cp に -f を付けると強制的に上書きできるはずなんですが、
CentOS 5.4 だといちいち上書き確認してきます。

で、調べてみるとどうやらエイリアスが効いてみたいです。

  • 時刻を設定
$ date
2017年 12月 31日 日曜日 04:04:57 UTC
$ sudo cp -f -p /usr/share/zoneinfo/Japan /etc/localtime
$ date
2017年 12月 31日 日曜日 13:08:16 JST
$ sudo vi /etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=false
  • cronを再起動
$ sudo chmod 644 /etc/sysconfig/clock
$ sudo /etc/init.d/crond restart
crond を停止中:                                            [  OK  ]
crond を起動中:                                            [  OK  ]
  • vi設定
$ cd 
$ touch .vimrc
$ vi .vimrc
" 文字コードをUTF-8に指定
set encoding=utf-8
" 検索時に大文字小文字を区別しない
set ignorecase
" 検索にマッチした単語をハイライト
set hlsearch
" ウィンドウ幅で行を折り返す
set nowrap
  • ホスト名を設定
$ sudo hostname work.com

これだけだと
再起動後にリセットされるので以下も続けて実施

  • hostsも変更
$ sudo vi /etc/hosts
127.0.0.1 work
  • ネットワークを変更
$ sudo vi /etc/sysconfig/network
NETWORKING="yes"
GATEWAY="192.0.2.1"
HOSTNAME=""
  • ネットワークを再起動
$ sudo /etc/rc.d/init.d/network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:
Determining IP information for eth0... done.

Determining IPv6 information for eth0... done.
                                                           [  OK  ]

  • アプリケーションをyumでインストール(個人用っす)
$ sudo yum install telnet
$ sudo yum install tmux
$ sudo yum install tree

MySQL

  • MySQLをインストール
$ sudo yum install mysql
  • RDSのDBインスタンスへ接続(AWSのコンソールで作成したヤツ)
$ mysql -h エンドポイント -u ユーザ名 -p
Enter password:(パスワード)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.6.37-log MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

補足
エンドポイント:AWSの画面で作成したDBインスタンスの情報から見れます。

Memcached

  • Memcachedへ接続
$ telnet Memcachedのエンドポイント 11221
Trying ***.**.*.**... 
Connected to エンドポイント
Escape character is '^]'.

補足
エンドポイント:AWSの画面で作成したMemcachedクラスタの情報から見れます。

  • slabの一覧を取得してみる
stats items
END
  • telnetを終了する
quit
Connection closed by foreign host.

Nginx

  • Nginxをインストール
$ sudo yum -y install nginx
  • Nginxを起動
$ sudo /etc/rc.d/init.d/nginx start
nginx を起動中:                                            [  OK  ]
  • Nginxの動作確認
    ブラウザでアクセスしてみる。

補足
もし、表示されない場合は
AWSのEC2に設定したセキュリティグループが正しくないかも。
(HTTPアクセスのインバウンドを要チェック)

PHP-fpm

  • yumのレポジトリーで管理しているPHP-fpmのバージョンを確認
$ yum info php-fpm
読み込んだプラグイン:priorities, update-motd, upgrade-helper
利用可能なパッケージ
名前                : php-fpm
アーキテクチャー    : x86_64
バージョン          : 5.3.29
リリース            : 1.8.amzn1
容量                : 1.3 M
リポジトリー        : amzn-main/latest
要約                : PHP FastCGI Process Manager
URL                 : http://www.php.net/
ライセンス          : PHP
説明                : PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI
                    : implementation with some additional features useful for sites of
                    : any size, especially busier sites.
  • PHP-fpmの5.6系が欲しいので検索する
$ yum search php | grep fpm
php-fpm.x86_64 : PHP FastCGI Process Manager
php54-fpm.x86_64 : PHP FastCGI Process Manager
php55-fpm.x86_64 : PHP FastCGI Process Manager
php56-fpm.x86_64 : PHP FastCGI Process Manager
php70-fpm.x86_64 : PHP FastCGI Process Manager
php71-fpm.x86_64 : PHP FastCGI Process Manager
  • PHP-fpmの5.6系をインストール
$ sudo yum install php56-fpm php56-mbstring php56-pdo
  • MySQLを使うので
$ sudo yum install php-mysqli
  • Memcachedを使うので
$ sudo yum install php56-pecl-memcached
  • PHP-fpmを設定
$ sudo cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf~
$ sudo vi /etc/php-fpm.d/www.conf
user = apache
group = apache
を
user = nginx
group = nginx
へ変更
$ sudo cp /etc/php.ini /etc/php.ini~
$ sudo vi /etc/php.ini
default_charset = "UTF-8"
date.timezone = "Asia/Tokyo"
mbstring.language = Japanese
  • DocumentRootを作成
$ sudo mkdir -p /var/www/work/release
$ sudo mkdir -p /var/www/work/develop
$ sudo chown -R ec2-user:ec2-user /var/www/
$ sudo chmod -R 775 /var/www/

NginxとPHP-fpmの動作確認

  • Nginxを設定
$ vi /etc/nginx/nginx.conf
user nginx;
worker_processes auto;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    sendfile            on;
    #tcp_nopush          on;
    #tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    gzip on;
    gzip_types image/png
               image/gif
               image/jpeg
               text/plain
               text/xml
               text/javascript
               text/css
               application/xml
               application/xhtml+xml
               application/rss+xml
               application/atom_xml
               application/javascript
               application/json
               application/x-javascript
               application/x-httpd-php;
    gzip_min_length 1000;
    gzip_proxied    any;
    gunzip on;
    gzip_vary on;

    include /etc/nginx/conf.d/*.conf;

    index   index.html index.htm;

    client_max_body_size    3M;
    client_body_buffer_size 32k;
    client_body_temp_path   /tmp/nginx 1 2;
}
  • Virtual Hostを設定
$ vi /etc/nginx/conf.d/virtual.conf
server {
        server_name www.work.com;
        root /var/www/work/develop/codeigniter/www/public;

        access_log /var/log/nginx/www.work.access.log main;
        error_log  /var/log/nginx/www.work.error.log;

        location / {
                index index.php index.html;
                if (-f $request_filename) {
                        expires 30d;
                        break;
                }
                if (!-e $request_filename) {
                        rewrite ^(.+)$ /index.php?$1 last;
                }
        }

        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
                fastcgi_param SCRIPT_NAME     $fastcgi_script_name;
                fastcgi_param PATH_INFO       $fastcgi_script_name;
                include /etc/nginx/fastcgi_params;
        }
}

※hostsファイル編集
:Macの場合
/private/etc/hostsへElastic IPとドメイン名を追記

:Windowsの場合
C:\Windows\System32\drivers\etc\hostsへElastic IPとドメイン名を追記

Composer

  • Composerをインストール
$ cd 
$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...

Composer (version 1.5.6) successfully installed to: /home/ec2-user/composer.phar
Use it: php composer.phar
  • ComposerをPathが通ったディレクトリへ移動
$ sudo mv composer.phar /usr/local/bin/composer
$ composer --version
Composer version 1.5.6 2017-12-18 12:09:18

CodeIgniter

  • CodeigniterをComposerでインストール
$ cd /var/www/work/develop/

$ composer create-project kenjis/codeigniter-composer-installer codeigniter
Installing kenjis/codeigniter-composer-installer (v0.4.7)
  - Installing kenjis/codeigniter-composer-installer (v0.4.7): Downloading (100%)         
Created project in codeigniter
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing codeigniter/framework (3.1.6): Downloading (100%)         
kenjis/codeigniter-composer-installer suggests installing kenjis/codeigniter-cli (A command-line tool for CodeIgniter 3.0)
kenjis/codeigniter-composer-installer suggests installing kenjis/ci-phpunit-test (An easier way to use PHPUnit with CodeIgniter 3.0)
kenjis/codeigniter-composer-installer suggests installing kenjis/codeigniter-ss-twig (A Simple and Secure Twig integration for CodeIgniter 3.0)
kenjis/codeigniter-composer-installer suggests installing kenjis/codeigniter-doctrine (A simple Doctrine integration for CodeIgniter 3.0)
kenjis/codeigniter-composer-installer suggests installing kenjis/codeigniter-deployer (A Deployment Tool for CodeIgniter 3.0)
codeigniter/framework suggests installing paragonie/random_compat (Provides better randomness in PHP 5.x)
Writing lock file
Generating autoload files
> Kenjis\CodeIgniter\Installer::postInstall
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing mikey179/vfsstream (v1.1.0): Downloading (100%)         
Writing lock file
Generating autoload files
==================================================
`public/.htaccess` was installed. If you don't need it, please remove it.
If you want to install translations for system messages or some third party libraries,
$ cd <codeigniter_project_folder>
$ php bin/install.php
Above command will show help message.
See <https://github.com/kenjis/codeigniter-composer-installer> for details
==================================================

以下のバージョンがインストールされた
– Installing codeigniter/framework (3.1.6): Downloading (100%)

  • バージョンをディレクトリ名に入れてシンボリックリンクを作成
$ cd /var/www/work/develop
$ mv codeigniter codeigniter.3.1.6
$ ln -s /var/www/work/develop/codeigniter.3.1.6 codeigniter
  • Codeigniterをバージョンアップ
$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
  • CodeIgniter用のログディレクトリを用意
$ sudo mkdir /var/log/ci
$ sudo chown nginx /var/log/ci
  • PHP-fpmを起動
$ sudo /etc/rc.d/init.d/php-fpm restart
Stopping php-fpm-5.6:                                      [  OK  ]
Starting php-fpm-5.6:                                      [  OK  ]
  • Nginxを起動
$ sudo /etc/rc.d/init.d/nginx restart
Stopping nginx:                                            [  OK  ]
Starting nginx:                                            [  OK  ]
  • ブラウザで動作を確認
http://www.work.com

SSL(Lets Encrypt)

Lets Encryptを使うことで無料でSSL対応ができるのでぜひやっておく。

※あと、当たり前っちゃー当たり前なんですが
※ドメインをDNSに登録していないと証明書発行出来ないのでー!

  • toolsフォルダを用意
$ cd ~/
$ mkdir tools
  • certbot関連のソースをGitでダウンロード
$ git clone https://github.com/certbot/certbot
  • パーミッションを変更
$ chmod 700 certbot-auto
  • 証明書を発行
$ ./certbot-auto certonly --webroot -w /var/www/work/develop/codeigniter/public -d www.work.com --email work@gmail.com --debug
Requesting to rerun ./certbot-auto with root privileges...
Bootstrapping dependencies for Amazon... (you can skip this with --no-bootstrap)
yum is /usr/bin/yum
yum is hashed (/usr/bin/yum)
Loaded plugins: priorities, update-motd, upgrade-helper
・・・

Total download size: 32 M
Installed size: 61 M
Is this ok [y/d/N]:y

・・・
  • Agreeするので “A” を返答する
-------------------------------------------------------------------------------
Please read the Terms of Service at
://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel:A
  • メーリングリストに入る?(※任意らしい)
-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: Y

*「Congratulations!」とメッセージが表示される。

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/www.work.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/www.work.com/privkey.pem
   Your cert will expire on 2017-12-06. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

※certonlyと指定しているので証明書だけが生成されます。
※証明書の期限が90日で、期限内に再度コマンドを実行する必要がある。(cronでスケジューリングするのが妥当みたい)

  • DNS登録していないと以下のようなエラーになります
Please see the logfiles in /var/log/letsencrypt for more details.

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: www.work.com
   Type:   unauthorized
   Detail: Invalid response from
   http://www.work.com/.well-known/acme-challenge/************:
   "<!DOCTYPE html>
   <html lang="en">
   <head>
   <meta charset="utf-8">
   <title>404 Page Not Found</title>
   <style type="text/css">

   ::sele"

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address.
  • 指定したメールアドレス先にメールが届くのでリンクをクリックして認証しておく
件名:
Please Confirm Your EFF Subscription
本文:
Click this link to confirm your email:
https://supporters.eff.org/subscription-confirmation/certbot?cid1=****************
  • 証明書を確認
$ sudo ls -la /etc/letsencrypt/live/
  • Nginxの設定を変更
$ sudo vi /etc/nginx/conf.d/virtual.conf
server {
        listen 80;
        return 301 https://$host$request_uri;
}
server {
        listen 443 ssl;

        server_name www.work.com;
        root /var/www/work/develop/codeigniter/www/public;

        access_log /var/log/nginx/www.work.access.log main;
        error_log  /var/log/nginx/www.work.error.log;

        ssl_certificate     /etc/letsencrypt/live/www.work.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.work.com/privkey.pem;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers AESGCM:HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

        location / {
                index index.php index.html;
                if (-f $request_filename) {
                        expires 30d;
                        break;
                }
                if (!-e $request_filename) {
                        rewrite ^(.+)$ /index.php?$1 last;
                }
        }

        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
                fastcgi_param SCRIPT_NAME     $fastcgi_script_name;
                fastcgi_param PATH_INFO       $fastcgi_script_name;
                include /etc/nginx/fastcgi_params;
        }
}
  • Nginxを起動
$ sudo /etc/rc.d/init.d/nginx restart
Stopping nginx:                                            [  OK  ]
Starting nginx:                                            [  OK  ]
  • ブラウザで動作を確認
http://www.work.com

各種ファイル

Nginx

  • 設定ファイル
/etc/nginx/nginx.conf
/etc/nginx/conf.d/virtual.conf
  • アクセスログ
/var/log/nginx/access.log
  • エラーログ
/var/log/nginx/error.log

PHP-fpm

  • 設定ファイル
/etc/php.ini
/etc/php-fpm.conf
/etc/php-fpm.d/www.conf
/etc/php-fpm.d/php-fpm.conf
  • エラーログ
/var/log/php-fpm/5.6/error.log

CodeIgniter

  • ログ
/var/log/ci/

用語

  • VPC(Virtual Private Cloud)
    プライベートな仮想ネットワークをクラウド環境を提供するサービスみたいです。

  • サブネット

  • スポットインスタンス
    AWSで余ったインスタンスをオークションみたいな感じに入札する仕組みっぽい。

システムAWS, EC2, Linux, RDS, Webサーバ

Posted by UT