AWSでWebサーバー構築するやり方 (EC2xUbuntu)

     

公開日: : サーバー構築 , ,

今回はAWSのサーバーの構築を扱ってみようと思います。前回VPSを使った一般的なWEBサーバーの構築をしましたが、今回はAWSでやります。AWSは専門用語(造語)が多いので、慣れるまではかなり苦労します。

一応、MT4/MT5からサーバーにトレードデータを送受信する際に、ルート権限で細かいカスタマイズをすることを狙っていますが、大規模スケールアップする予定がなければ普通のVPSでも良いと思います。もちろん、普通のWEBサイト運営もできると思います。(よっぽど大規模アクセスがあるのでなければオーバースペックだと思います。)

サーバーのOSはUbuntu14にしました。CentOSは前述のとおり、日本国内だけでガラパゴス化しているので、グローバルスタンダードなUbuntuです。バージョンに関しては前回はUbuntu16でしたが、PHPをインストールする際に半ば強制的にPHP7にされてしまうことと、PHP5で書いた従来のシステムがPHP7では動かない可能性があるからです。(かく言う私のシステムもPHP5.3で書いているので、PHP7だと一部機能しない関数がありました。)

もちろん、Ubuntu16でPHP5にダウングレードすることもできるはずですが、EC2で実際にやってみたところ、OSはPHP7と認識するにもかかわらず、Apacheは5.3を認識したりして大変なことになったので、最初からOSごと古いのを使った方が良いという結論に至りました。

また、
AWSにはEC2以外にも簡単にWEBサイト(wordpressサイト)が作れるサービスがありますが、汎用性が全然ないのでおとなしくEC2を使いましょう。

AWSのアカウントがない場合は、まずこちらから
https://aws.amazon.com/jp/

コンソール画面はこちら
https://console.aws.amazon.com/console/home?nc2=h_ct&src=header-signin

インスタンス(サーバー)の起動

AWSではサーバーひとつひとつをインスタンスというくくりで管理します。インスタンスという名前から察するに従来のようなサーバーとは違い、全部バーチャルなんでしょうね。

サービスメニューから「EC2」を選択し、インスタンスを新しく作成します。

forex-mt4-mt5-ea

OSはUbuntu14を選択します。(一番下にあります…)
forex-mt4-mt5-ea

ちなみに、AWSでもUbuntuの初期ユーザーはRootではなく、Ubuntuです。

スペックは任意のものでいいと思います。
forex-mt4-mt5-ea

下の方にいくとメモリ768Gとかあるんですよね。(どんなバケモンスペックだよ…)
forex-mt4-mt5-ea

キーペアの作成

キーペアはSSHでサーバーにログインするときに必要なものです。なくすと再発行はできないので保管は厳重にしてください。
「Create Key pair」を押してキーペア名を入力すると自動的に生成されます。
forex-mt4-mt5-ea

セキュリティグループ(ポートの開放)の設定

AWSではセキュリティグループというiptablesのようなものがあります。もちろん、サーバーにもiptablesはありますが、機能が重複するので、AWSの場合はセキュリティグループで管理します。さくらVPSのようなブラウザ上のコマンドコンソールはないので、かならずSSHが開いているを確認します。(デフォルトで開いています。)

forex-mt4-mt5-ea

セキュリティグループでは、HTTP:80, HTTPS:443, SSH:22, CustomTCP:20, CustomTCP:21, CustomTCP:60001~60010 を開けてればいいと思います。(後ろの方はFTPパッシブ用)メールサーバーも一緒にする場合はSMTP,POP3用のポートも開けてください。

ElasticIP(固定グローバルIP)の設定

AWSではデフォルトでもインスタンスにグローバルIPが割り振られていますが、これは定期的に変動してしまいます。ElasticIPでは新規にグローバルIPを取得することができ、これをインスタンスと紐づけします。

forex-mt4-mt5-ea

ElasticIPの設定画面で右クリックをすると「Associate Address」とメニューが出てくるので、選択します。

forex-mt4-mt5-ea

すると、IPとインスタンスを紐づけするメニューが出てくるので、インスタンスのIDを選択します。今はインスタンスが一つしかないので選択肢は一つだけです。

 

(オプション)Elastic Beanstalk(インスタンスの自動復活機能)を削除する

AWSにはインスタンスをゾンビみたいに復活させる機能がデフォルトであります。「とりあえず、インスタンスをお試しで起動させてみて、いろいろ遊んだらインスタンスを削除すれば課金されないだろ」と思っても、この機能を停止しないと、インスタンスが知らぬ間に復活して自動課金されるという仕様です。

いきなり本番でそのインスタンスを使う予定の場合はそのままでいいですが、とりあえずお試しでAWSを使う場合は停止させておきましょう。

forex-mt4-mt5-ea

Route53(ドメイン、DNS)の設定

Route53では独自ドメインの紐づけができます。独自ドメインを必要としない場合はIPアドレス、もしくはアマゾン支給のサブドメインでも管理可能です。(EC2のインスタンスに情報があります。)

「Create Hosted Zone」を押すとメニューがでるので、設定したい独自ドメインを入力して「Public hosted zone」を選択します。
forex-mt4-mt5-ea

するとDNS情報がでてきます。
forex-mt4-mt5-ea
このDNSはドメインを取得したサービス(お名前ドットコムとか)で入力する情報になります。

「Create Record Set」を押してAレコードを追加します。
forex-mt4-mt5-ea
ValueにはElasticIPで取得したグローバルIPを入れます。

最終的に下記のようになります。
forex-mt4-mt5-ea

 

SSLで接続できるようにする

昨今ではいろいろな理由からSSLが求められています。問い合わせフォームや個人情報を含む送信をする場合は当たり前ですが、Google検索でもSSLでないサイトは検索順位が下がるようになったらしいです。
forex-mt4-mt5-ea

Certificate ManagerでSSL証明書を発行

「Request Certificate」を選択
forex-mt4-mt5-ea
「sample.com」と「Add another name to this certificate」で「*.sample.com」を入力。
forex-mt4-mt5-ea

Select validation method で「DNS validation」を選択
forex-mt4-mt5-ea

すると「お前、ほんとにこのドメインの所有者か? 証明してしてみぃ」って画面がでるので、Route53でこれらのレコードを追加します。
forex-mt4-mt5-ea
上のデータをRoute53の下の画面で入力する。
forex-mt4-mt5-ea

ELB(Elastic Load Balancing)で証明書の設置とインスタンスへ接続

EC2のメニューからLoad Balancersを選択
「Create Load Balancer」を選択
「HTTP HTTPS」を選択
Name:適当な名前、 Scheme:Internet-facing、 IP-address-type:ipv4 を選択
Listenerでは「HTTP」の80番ポートと「Add listener」で「HTTPS」の443番ポートを選択
アベイラビリティーゾーンは、ロードバランサーと自分のサーバーを接続できるよう同じVPCに。
forex-mt4-mt5-ea
(上の画像はアベイラビリティゾーンが一部切れています。)

STEP2で、「Choose a certificate from ACM (recommended)」を選択し、Security Policyはデフォルトのまま。
forex-mt4-mt5-ea

「ルーティングの設定」へ。
forex-mt4-mt5-ea
ステップ4では、「New target group」を作成します。

名前を適当に入力し、プロトコルは「HTTP」を選択。(HTTPSは後で設定できます。)
ターゲットに「instance」を選択。ヘルスチェックはHTTP。

「Register Target」
forex-mt4-mt5-ea
ロードバランサーに接続するサーバー(インスタンス)を選択

 

SSHでサーバーに入る

いよいよサーバーに入ります。ここからの流れはよくあるVPSと同じなのでさくらVPSの回と重複が比較的あります。

SSHクライアントであるPuttyかTeraTermをインストールします。前回はputtyだったので今回はTeraTermにします。
forex-mt4-mt5-ea

ログインの際には、「ubuntu@’グローバルIP’」か「ubuntu@’Public DNS (IPv4)’」を入力します。Public DNS (IPv4)は、インスタンスのIPアドレスを入れます。

したっけ、Use RSAを選択して、先ほど作成したキーペアファイル(.pem)を選択します。
forex-mt4-mt5-ea

forex-mt4-mt5-ea

この状態だと権限が弱い一般ユーザなのでrootユーザーに切り替えます。

$ sudo su -

と打ちます。

コマンドの作業は前回のVPSでWEBサーバーを立てた時とほとんど同じです。

OSのバージョンアップ

OSに最新情報がないかチェックします。

# apt update

 

Apacheを入れる

# apt install apache2

 

vimを入れる

# apt install vim

 

PHPを入れる

次にPHPを入れます。

# apt install php

インストール中にも表示されていますが、バージョンを調べるには

# php --version

と入れます。EC2のUbuntu14ではphp5.6がデフォルトでした。

 

 libapache2のインストール(apacheにphpを認識させる)

# apt install libapache2-mod-php

 

MySQLを入れる

# apt install mysql-server

データベース管理にMySQLを入れます。
forex-mt4-mt5-ea
ユーザーパスワードを求められますので、適当に入力します。

データベースを作成

# mysql -u root -p

forex-mt4-mt5-ea
先程設定したパスワードを入力します。

ここからはSQLなので最後に;を入れます。

> mysql> create database thedatabse;

 

・ユーザーの作成

> GRANT ALL ON thedatabase.* TO 'ユーザー名'@'localhost' IDENTIFIED BY 'このユーザーのパスワード';

 

・SQLの終了

> mysql> exit;

 

・MySQLの再起動

# service mysql restart

 

ApacheとMySQLの自動起動設定

自動で起動されるようにします。

# apt install sysv-rc-conf
sysv-rc-conf apache2 on
sysv-rc-conf mysqld on

 

phpMyAdminのインストール

ブラウザからSQLを操作できるようにphpMyAdminを入れます。

# apt install phpmyadmin

 

・シンボリックリンクを作成

# ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf

 

・phpMyAdminのログインパスを変える

・設定を読み込ませる

# a2enconf phpmyadmin
service apache2 reload

 

FTPサーバーを入れる

FTPを使えるようにするにはFTPサーバーを立てる必要があるんですね、これが。

AWSでは他のサーバーと違ってちょっと特殊な作業が必要です。(pasv_addressにEIPのアドレスを設定し、データ通信でのクライアントからの接続先IPアドレスをグローバルIPにする必要があります。)

といっても出来合いのUbuntuアプリがあるので、それをインストールします。

# apt install vsftpd

設定ファイルを編集する

# vim /etc/vsftpd.conf

 

#25行目
anonymous_enable=NO -<デフォルトでNOだが、一応チェック

#31行目
write_enable=YES

#99行目
ascii_upload_enable=YES

#100行目
ascii_download_enable=YES

chroot_local_user=YES

#121行目
chroot_list_enable=YES

#125行目
chroot_list_file=/etc/vsftpd.chroot_list

#131行目
ls_recurse_enable=YES

#最終行に追加
local_root = /var/www/html

#pasv_addressにEIPのアドレスを設定し、データ通信でのクライアントからの接続先IPアドレスをグローバルIPに
pasv_address=XXX.XXX.XXX.XXX(インスタンスに紐づけたグローバルIPを入力)

#pasv_min_port、pasv_max_portを設定し、データ通信で使用するポート番号の範囲を限定する
pasv_min_port=60001
pasv_max_port=60010

※サーバー管理者≠FTPユーザーの場合は上位フォルダにアクセスできないようにする必要があります。

FTPユーザーを作成

# useradd ftp-user
passwd ftp-user

ユーザーリストにユーザーを追加する

# vim /etc/vsftpd.chroot_list

ここにFTPユーザー名を追加する

フォルダの権限変更

上記だけでは閲覧はできてもアップロードなどができないので、権限を与えます。

# cd /var/www
# chown ユーザー名(ubuntu):ユーザーグループ(ubuntu) html
# chmod 755 html

再起動

# service vsftpd restart

メールサーバーの設置

サーバーを構築したらやっぱりメールも使いたいですよね。メールサーバーは脆弱だと攻撃の中継として利用される危険性があるので注意が必要です。

AWSにメール用のポート開放の申請

まずはメールを使いたい旨を申請します。

https://portal.aws.amazon.com/gp/aws/html-forms-controller/contactus/ec2-email-limit-rdns-request
にアクセスして、「メール送信させてくださ~い」って申請します。

わざわざこんな申請をしないといけないということは悪さをする人がいるんですね。

Email Address*にAWSにログインするときのメールアドレス、
Use Case Descriptionに「Removal of Email sending limit.」と記入します。(それ以外は空欄)

セキュリティグループで、SMTPとPOP3が開いていることを確認します。

Postfixのインストール

PostfixっているのはUbuntuでかんたんにメールサーバーを始めるためのアプリです。

とりあえずインストールします。

# apt install postfix

コマンドを打つと用途を聞かれるので、「設定なし」を選択。

設定ファイル 「main.cf」を/etc/postfix/ディレクトリにコピーします

# cp /usr/lib/postfix/main.cf /etc/postfix/main.cf

postfixの設定を編集

設定を編集します。

59行目:コメント解除
mail_owner = postfix
 
# 76行目:コメント解除しホスト名指定★
myhostname = mail.hogefuga.com
 
# 83行目:コメント解除しドメイン名指定
mydomain = hogefuga.com

# 104行目:コメント解除
myorigin = $mydomain

# 118行目:コメント解除
inet_interfaces = all

# 166行目:コメント解除
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# 209行目:コメント解除
local_recipient_maps = unix:passwd.byname $alias_maps

# 268行目:自ネットワーク追記(ifconfigコマンドでeth0のinetアドレスが10.0.2.15だったので10.0.0.0/24を追記)
mynetworks = 127.0.0.0/8, 10.0.0.0/24

# 388行目:コメント解除
alias_maps = hash:/etc/aliases

# 399行目:コメント解除
alias_database = hash:/etc/aliases

# 421行目:コメント解除 ( Maildir形式へ移行 )
home_mailbox = Maildir/

# 557行目:コメントにしてその下に追記
#smtpd_banner = $myhostname ESMTP $mail_name (@@DISTRO@@)
smtpd_banner = $myhostname ESMTP

# 632行目:追記
sendmail_path = /usr/sbin/postfix

# 637行目:追記
newaliases_path = /usr/bin/newaliases

# 642行目:追記
mailq_path = /usr/bin/mailq

# 648行目:追記
setgid_group = postdrop

# 652行目:コメント化
#html_directory =

# 656行目:コメント化
#manpage_directory =

# 661行目:コメント化
#sample_directory =

# 665行目:コメント化
#readme_directory =

# 最終行へ追記:送受信メールサイズを10Mに制限
message_size_limit = 10485760
# メールボックスサイズを1Gに制限
mailbox_size_limit = 1073741824

# 以下SMTP-Auth用
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject

メールエイリアスのデータベースを再構築します。

# newaliases

postfixを再起動します。

# service postfix restart

送信テスト(mailコマンド)

mailコマンドのインストール

# apt install mailutils

 

# mail ”送信先アドレス”
Cc:
Subject: Test mail
Send to Testmail
.

「Ctrl+D」で送信。

これでトレードシステムを稼働させるサーバーとしての準備ができました。他にも用途に応じてオプションがありますが、ここまでできればそちらは適宜できると思います。

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

さくらのVPSで1からWebサーバーを構築する方法 (Ubuntu16.04)

今回はサーバーの構築について扱ってみようと思います。VPSを使った一般的なWEBサーバーの構築がゴー

記事を読む

AWSで無料でWindows VPSを使う方法

自動売買とVPSは切っても切り離せません。しかし、その自動売買が本当に儲かるかどうかわからないのに、

記事を読む

 

上に戻る