このページでは、EC2にAmazonLinux2で立ち上げたインスタンスをLAMP構成のwebサーバーに変更する手順を解説します。
構成は、apache2.4 mysql5.6 php7.2で組み上げます。
LAMP環境をインストールする。
まずはsshで接続して管理者権限になります。
$ ssh -i サーバー鍵.pem ec2-user@xxx.xxx.xxx.xxx [ec2-user@ ~]$ sudo su -
AmazonLinux2には、専用にExtrasというパッケージ管理ソフトが入っており、こちらからLAMP環境が簡単に構築可能です。
[root@ip-172-31-22-79 ~]# amazon-linux-extras list 0 ansible2 available [ =2.4.2 =2.4.6 ] 1 emacs available [ =25.3 ] 2 httpd_modules available [ =1.0 ] 3 memcached1.5 available [ =1.5.1 ] 4 nginx1.12 available [ =1.12.2 ] 5 postgresql9.6 available [ =9.6.6 =9.6.8 ] 6 postgresql10 available [ =10 ] 7 python3 available [ =3.6.2 ] 8 redis4.0 available [ =4.0.5 =4.0.10 ] 9 R3.4 available [ =3.4.3 ] 10 rust1 available \ [ =1.22.1 =1.26.0 =1.26.1 =1.27.2 ] 11 vim available [ =8.0 ] 12 golang1.9 available [ =1.9.2 ] 13 ruby2.4 available [ =2.4.2 =2.4.4 ] 14 nano available [ =2.9.1 ] 15 php7.2 available \ [ =7.2.0 =7.2.4 =7.2.5 =7.2.8 ] 16 lamp-mariadb10.2-php7.2 available \ [ =10.2.10_7.2.0 =10.2.10_7.2.4 =10.2.10_7.2.5 =10.2.10_7.2.8 ] 17 libreoffice available [ =5.0.6.2_15 ] 18 gimp available [ =2.8.22 ] 19 docker=latest enabled \ [ =17.12.1 =18.03.1 =18.06.1 ] 20 mate-desktop1.x available [ =1.19.0 =1.20.0 ] 21 GraphicsMagick1.3 available [ =1.3.29 ] 22 tomcat8.5 available [ =8.5.31 =8.5.32 ] 23 epel available [ =7.11 ]
lamp-mariadb10.2-php7.2がありますが、こちらはmariadbが入ってきます。mysqlの構築のほうがスタンダードなので、php7.2を入れて、mysqlは別でインストールします。
[root@ ~]# amazon-linux-extras install php7.2 Installed: php-cli.x86_64 0:7.2.8-3.amzn2.0.2 php-fpm.x86_64 0:7.2.8-3.amzn2.0.2 php-json.x86_64 0:7.2.8-3.amzn2.0.2 php-mysqlnd.x86_64 0:7.2.8-3.amzn2.0.2 php-pdo.x86_64 0:7.2.8-3.amzn2.0.2 Dependency Installed: php-common.x86_64 0:7.2.8-3.amzn2.0.2 Complete! 0 ansible2 available [ =2.4.2 =2.4.6 ] 1 emacs available [ =25.3 ] 2 httpd_modules available [ =1.0 ] 3 memcached1.5 available [ =1.5.1 ] 4 nginx1.12 available [ =1.12.2 ] 5 postgresql9.6 available [ =9.6.6 =9.6.8 ] 6 postgresql10 available [ =10 ] 7 python3 available [ =3.6.2 ] 8 redis4.0 available [ =4.0.5 =4.0.10 ] 9 R3.4 available [ =3.4.3 ] 10 rust1 available \ [ =1.22.1 =1.26.0 =1.26.1 =1.27.2 ] 11 vim available [ =8.0 ] 12 golang1.9 available [ =1.9.2 ] 13 ruby2.4 available [ =2.4.2 =2.4.4 ] 14 nano available [ =2.9.1 ] 15 php7.2=latest enabled \ [ =7.2.0 =7.2.4 =7.2.5 =7.2.8 ] 16 lamp-mariadb10.2-php7.2 available \ [ =10.2.10_7.2.0 =10.2.10_7.2.4 =10.2.10_7.2.5 =10.2.10_7.2.8 ] 17 libreoffice available [ =5.0.6.2_15 ] 18 gimp available [ =2.8.22 ] 19 docker=latest enabled \ [ =17.12.1 =18.03.1 =18.06.1 ] 20 mate-desktop1.x available [ =1.19.0 =1.20.0 ] 21 GraphicsMagick1.3 available [ =1.3.29 ] 22 tomcat8.5 available [ =8.5.31 =8.5.32 ] 23 epel available [ =7.11 ]
mysqlは公式のレポジトリを追加して落としてきます。以下のコマンドで5.7のレポジトリを追加できます。
[root@ ~]# yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y [root@ ~]# yum-config-manager --disable mysql80-community [root@ ~]# yum-config-manager --enable mysql57-community
これで最新ソースのものを入れられるようになったので、インストールします。
[root@ ~]#yum install -y httpd php mysql-community-server
後はサーバーの起動と自動起動設定を入れてインストール完了です。
[root@ ~]# systemctl start httpd mysqld [root@ ~]# systemctl enable mysqld httpd Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service. Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
これでこのサーバーはwebサーバーとしての動作は行えるのですが、アクセスするためにはIPを固定して、ポートを開ける必要があります。
サーバーのIPを固定する
厳密に言えばこの作業は必須ではありません。
elastic IP アドレス (EIP) は、固定IPの取得です。
デフォルトの取得のままでは、再起動時などのタイミングでIPの変更が行われてしまいます。
webサーバーやメールサーバーとして動かす場合にはドメインの取得をして、IPと関連付けをすることになりますが、
頻繁にIPが変わってしまっては面倒なことになります。
その他の場合でも、sshアクセスなどで接続先をいちいち変えないといけないのは面倒なので、EIPを割り振って固定しましょう。
まずはEC2の画面より、ネットワーク&セキュリテイ→Elastic IPを選択。最初は以下画面になっています。
最初はこんな画面になっていますので、こちらから新しいアドレスの割当をクリック
こちらはそのままクリックしてEIPを作成します。次に作成されたEIPをインスタンスに関連付けします。
EIPのTOP画面に戻ると、先程追加したEIPが見えるかと思いますので、クリックしてアクション→アドレスの関連付けを押します。
こちらからインスタンスを指定してEIPを関連付けします。
これで、以後アクセスは固定されたEIPのアドレスで行えるようになりました。
サーバーのポートを開ける
ポートはhttpやhttps、sshなどを使ってやり取りするための窓口のようなものです。
基本的にはセキュリティのため閉じておいて、必要に応じてポートを開けます。
今回はwebサーバーを想定して、追加でhttp(80)とhttps(443)を開ける手順を紹介しますので、
他のポートを開けたい場合にはポート番号を調べるか、プロトコルのウェルノウンポートなどの番号を調べて設定しましょう。
インスタンスより、設定したいインスタンスの詳細画面からセキュリティグループ名をクリック、
もしくは左のセキュリティグループから必要なインスタンスに関連付けられているセキュリティグループを選択します。
下のタブをインバウンドの編集をクリック、以下の画面を出します。
こちらの状態の場合、sshの22番のみ開放されています。
こちらを、このサーバーが使うポートの設定へ変更して上げます。
こちらで80と443のポートを開けることができました。もし、自分のIPからのみのアクセスにしたい場合にはソースのアドレスを自分のIPへ変えて下さい。
アクセスしてみる
コンフィグでドキュメントルートを確認して、Hello, World!してみましょう。
[root@ ~]# cat /etc/httpd/conf/httpd.conf ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "/var/www/html" # # Relax access to content within /var/www. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [root@ ~]# echo Hello, World > /var/www/html/index.html [root@ ~]# cat /var/www/html/index.html Hello, World
ブラウザからEIPのアドレスにアクセスしてみて表示されていれば完了です。