システム開発 - AWS WebサーバーへPHPとApacheのインストール

 

前回のAWS WebサーバーへのSSH接続と基本的なコマンドでは、SSHの接続を行い、簡単なコマンドについて確認しました。

今回はWebサーバーにPHPとApache ウェブサーバーインストールし、各種設定を行っていきます。

環境

Amazon Linux 2

ターミナルを開く

まずは、RloginでSSH接続を行いターミナルを開きます。

Last login: Xxx Xxx X 00:00:00 20xx from xxxx.jp

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
13 package(s) needed for security, out of 16 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-10-0-10-127 ~]$ 

インストール済のパッケージのアップデート

インストール済のパッケージを最新の状態に更新します。

上記ログイン時にもアップデートするように表示されています。

13 package(s) needed for security, out of 16 available
Run "sudo yum update" to apply all updates.

まずは、更新される内容を確認します。

[ec2-user@ip-10-0-10-127 ~]$ yum check-update
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                           | 3.7 kB  00:00:00     

cloud-init.noarch                     19.3-46.amzn2                   amzn2-core            
ec2-net-utils.noarch                  1.7.2-1.amzn2                   amzn2-core            
glibc.x86_64                          2.26-61.amzn2                   amzn2-core            
glibc-all-langpacks.x86_64            2.26-61.amzn2                   amzn2-core            
glibc-common.x86_64                   2.26-61.amzn2                   amzn2-core            
glibc-locale-source.x86_64            2.26-61.amzn2                   amzn2-core            
glibc-minimal-langpack.x86_64         2.26-61.amzn2                   amzn2-core            
kernel.x86_64                         5.10.147-133.644.amzn2          amzn2extra-kernel-5.10
kernel-tools.x86_64                   5.10.147-133.644.amzn2          amzn2extra-kernel-5.10
libcrypt.x86_64                       2.26-61.amzn2                   amzn2-core            
tzdata.noarch                         2022e-1.amzn2.0.1               amzn2-core            
vim-common.x86_64                     2:9.0.475-1.amzn2.0.1           amzn2-core            
vim-data.noarch                       2:9.0.475-1.amzn2.0.1           amzn2-core            
vim-enhanced.x86_64                   2:9.0.475-1.amzn2.0.1           amzn2-core            
vim-filesystem.noarch                 2:9.0.475-1.amzn2.0.1           amzn2-core            
vim-minimal.x86_64                    2:9.0.475-1.amzn2.0.1           amzn2-core            
[ec2-user@ip-10-0-10-127 ~]$ 

確かに16件あります。アップデートします。

[ec2-user@ip-10-0-10-127 ~]$ sudo yum update -y
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
・・・
Updated:
  cloud-init.noarch 0:19.3-46.amzn2                                                         
  ec2-net-utils.noarch 0:1.7.2-1.amzn2                                                      
  glibc.x86_64 0:2.26-61.amzn2                                                              
  glibc-all-langpacks.x86_64 0:2.26-61.amzn2                                                
  glibc-common.x86_64 0:2.26-61.amzn2                                                       
  glibc-locale-source.x86_64 0:2.26-61.amzn2                                                
  glibc-minimal-langpack.x86_64 0:2.26-61.amzn2                                             
  kernel-tools.x86_64 0:5.10.147-133.644.amzn2                                              
  libcrypt.x86_64 0:2.26-61.amzn2                                                           
  tzdata.noarch 0:2022e-1.amzn2.0.1                                                         
  vim-common.x86_64 2:9.0.475-1.amzn2.0.1                                                   
  vim-data.noarch 2:9.0.475-1.amzn2.0.1                                                     
  vim-enhanced.x86_64 2:9.0.475-1.amzn2.0.1                                                 
  vim-filesystem.noarch 2:9.0.475-1.amzn2.0.1                                               
  vim-minimal.x86_64 2:9.0.475-1.amzn2.0.1                                                  

Complete!
[ec2-user@ip-10-0-10-127 ~]$ 

アップデートが完了しました。

sudo 権限で、yumコマンドを使用して、インスール済みのパッケージを更新しました。-yオプションは、本来、途中で確認のため、本当にインストールをするか?を確認してきますので、その際、yesを入力したとみなされ、止まることなくインストールが続きます。

yumとは?

yum(ヤム)は、Yellowdog Updater Modifiedの略で、LinuxのRed Hat系で利用されるパッケージ管理ツールで、ソフトウェアをインストールする場合に利用されます。このパッケージ管理ツールは、ソフトウェアの依存関係を解決してくれたり、インストールしたソフトウェアの履歴など様々な情報を管理してくれます。

また、Red Hat系では、RPM(RPM Package Manager)というのもでてきます。RPMの高機能版がYumとなります。

Debian系のLinuxでは、apt-getがコマンドとして使われ、rpmに当たるのがdpkgコマンドとなります。他の解説サイトなどでパッケージをインストールの解説を読む際、注意してください。

PHPのインストール

amazon-linux-extrasというコマンドを使ってインストールします。

amazon-linux-extrasとは、Amazon Linux 2 インスタンスにあるExtra Libraryと呼ばれるパッケージ群で、特定のパッケージをより新しいバージョンで利用できるように管理するコマンドです。

実際に利用できるパッケージを確認します。

[ec2-user@ip-10-0-10-127 ~]$ amazon-linux-extras
・・・
 20  docker=latest            enabled      \
        [ =17.12.1  =18.03.1  =18.06.1  =18.09.9  =stable ]
・・・
 51  php8.0                   available    [ =stable ]
・・・
 55  kernel-5.10=latest       enabled      [ =stable ]
・・・
[ec2-user@ip-10-0-10-127 ~]$ 

60件以上でてきましたが、今回の目的の「php8.0」がありました。

php8.0をインストールします。

[ec2-user@ip-10-0-10-127 ~]$ sudo amazon-linux-extras install php8.0 -y
Installing php-pdo, php-fpm, php-mysqlnd, php-cli
・・・
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : libzip-1.3.2-1.amzn2.0.1.x86_64                            1/6 
  Installing : php-common-8.0.20-1.amzn2.x86_64                           2/6 
  Installing : php-pdo-8.0.20-1.amzn2.x86_64                              3/6 
  Installing : php-mysqlnd-8.0.20-1.amzn2.x86_64                          4/6 
  Installing : php-cli-8.0.20-1.amzn2.x86_64                              5/6 
  Installing : php-fpm-8.0.20-1.amzn2.x86_64                              6/6 
  Verifying  : php-pdo-8.0.20-1.amzn2.x86_64                              1/6 
  Verifying  : php-common-8.0.20-1.amzn2.x86_64                           2/6 
  Verifying  : libzip-1.3.2-1.amzn2.0.1.x86_64                            3/6 
  Verifying  : php-cli-8.0.20-1.amzn2.x86_64                              4/6 
  Verifying  : php-mysqlnd-8.0.20-1.amzn2.x86_64                          5/6 
  Verifying  : php-fpm-8.0.20-1.amzn2.x86_64                              6/6 

Installed:
  php-cli.x86_64 0:8.0.20-1.amzn2         php-fpm.x86_64 0:8.0.20-1.amzn2    
  php-mysqlnd.x86_64 0:8.0.20-1.amzn2     php-pdo.x86_64 0:8.0.20-1.amzn2    

Dependency Installed:
  libzip.x86_64 0:1.3.2-1.amzn2.0.1     php-common.x86_64 0:8.0.20-1.amzn2    

Complete!
・・・
 51  php8.0=latest            enabled      [ =stable ]
・・・
[ec2-user@ip-10-0-10-127 ~]$ 

php8.0のインストールが完了しました。「enable」となっているので有効化されています。

phpのバージョン等を確認します。

/* phpの実行ファイルの位置を確認 */
[ec2-user@ip-10-0-10-127 ~]$ which php
/usr/bin/php
/* phpのバージョン確認 */
[ec2-user@ip-10-0-10-127 ~]$ /usr/bin/php -v
PHP 8.0.20 (cli) (built: Jun 23 2022 20:34:07) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.20, Copyright (c) Zend Technologies
/* 上記同様 */
[ec2-user@ip-10-0-10-127 ~]$ php -v
PHP 8.0.20 (cli) (built: Jun 23 2022 20:34:07) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.20, Copyright (c) Zend Technologies
[ec2-user@ip-10-0-10-127 ~]$ 

php8.0が無事インストールされました。

ここでは、PHPのmbstringなどのライブラリは最低限しかインストールされていません。別の機会にインストールをしていきたいと思います。

Webサーバーソフトのインストール

Webサーバーとは?

簡単に言えば、Webサイトのデータがおいてあって、Webサーバーとしての役割を果たすソフトが入っている普通のコンピューターです。そのWebサーバーとしての役割を果たすソフトとして有名なのがApacheやNGINX(エンジンエックス)です。

このソフトは、コンピュータ上で常駐(いつでもアクションを起こせる状態)し、依頼があれば、例えば、Webサイトのデータを送り出します。

このWebサーバとしての役割を果たしている常駐プログラムのことをデーモンといいます。

この後インストールするhttpdは、Webサーバーのソフトとして有名なApacheのデーモンとなります。

Apacheのインストール

下記コマンドを実行します。

[ec2-user@ip-10-0-10-127 ~]$ sudo yum install httpd -y
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
・・・
Installed:
  httpd.x86_64 0:2.4.54-1.amzn2                                                             

Dependency Installed:
  apr.x86_64 0:1.7.0-9.amzn2                  apr-util.x86_64 0:1.6.1-5.amzn2.0.2           
  apr-util-bdb.x86_64 0:1.6.1-5.amzn2.0.2     generic-logos-httpd.noarch 0:18.0.0-4.amzn2   
  httpd-filesystem.noarch 0:2.4.54-1.amzn2    httpd-tools.x86_64 0:2.4.54-1.amzn2           
  mailcap.noarch 0:2.1.41-2.amzn2             mod_http2.x86_64 0:1.15.19-1.amzn2.0.1        

Complete!
[ec2-user@ip-10-0-10-127 ~]$ 

バージョンを確認します。

[ec2-user@ip-10-0-10-127 ~]$ httpd -v
Server version: Apache/2.4.54 ()
Server built:   Jun 30 2022 11:02:23
[ec2-user@ip-10-0-10-127 ~]$ 

現在のWebサーバー(httpd)の状況を確認します。

[ec2-user@ip-10-0-10-127 ~]$ sudo systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/httpd.service.d
           └─php-fpm.conf
   Active: inactive (dead)
     Docs: man:httpd.service(8)
[ec2-user@ip-10-0-10-127 ~]$ 

「Active」の行で「inactive (dead)」とあるので起動はしていないことがわかります。

では、起動します。

[ec2-user@ip-10-0-10-127 ~]$ sudo systemctl start httpd
[ec2-user@ip-10-0-10-127 ~]$ sudo systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/httpd.service.d
           └─php-fpm.conf
   Active: active (running) since Xxx 20xx-xx-xx xx:xx:xx JST; 30s ago
     Docs: man:httpd.service(8)
 Main PID: 15156 (httpd)
   Status: "Total requests: 3; Idle/Busy workers 100/0;Requests/sec: 0.103; Bytes served/sec: 349 B/sec"
   CGroup: /system.slice/httpd.service
           ├─15156 /usr/sbin/httpd -DFOREGROUND
           ├─15163 /usr/sbin/httpd -DFOREGROUND
           ├─15164 /usr/sbin/httpd -DFOREGROUND
           ├─15165 /usr/sbin/httpd -DFOREGROUND
           ├─15166 /usr/sbin/httpd -DFOREGROUND
           ├─15167 /usr/sbin/httpd -DFOREGROUND
           └─15209 /usr/sbin/httpd -DFOREGROUND

Xxx xx xx:xx:46 ip-10-0-10-127.ap-northeast-1.compute.internal systemd[1]: Starting The A...
Xxx xx xx:xx:46 ip-10-0-10-127.ap-northeast-1.compute.internal systemd[1]: Started The Ap...
Hint: Some lines were ellipsized, use -l to show in full.
[ec2-user@ip-10-0-10-127 ~]$ 

「Active」の行で「active (running) since ・・・ JST; 30s ago」に、起動時刻と30秒前に起動したことが確認できます。

ブラウザを開き、固定IPのアドレスを入力します。

上記ページが見えていたら、無事Webサーバーとしての最低限の設定が完了したことになります。

httpd(Apache)の自動起動設定

現在の状態ですと、インスタンスが停止するたびに、httpdを起動する必要がありますので、起動時にはWebサーバーも起動するように設定します。

/* 自動起動の設定 */
[ec2-user@ip-10-0-10-127 ~]$ sudo systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
/* 自動起動設定になっているか確認 */
[ec2-user@ip-10-0-10-127 ~]$ systemctl is-enabled httpd.service
enabled
[ec2-user@ip-10-0-10-127 ~]$ 

まとめ

今回はWebサーバーにPHPとAapcheをインストールしました。

次回はWebサーバーのディレクトリとファイルのアクセス権の設定を行っていきます。

次回:AWS Webサーバーのアクセス権の設定

一覧:AWS サーバー立ち上げ設定まとめ

参考

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateWebServer.html

文責:フライング・ハイ・ワークス代表 松田 治人(まつだ はるひと)
会社では、Laravelを中心としたエンジニアとして働いており、これまでに50本以上のLaravelによるWebアプリケーションの構築や東京でホームページ制作をしています。
エンジニアとして弊社で働きたい方、お仕事のご相談など、お待ちしております。

WEBサイト制作のお問い合わせ、お見積り依頼、ご質問は
こちらのお問い合わせフォームよりお願いいたします

メールお問い合わせはこちら

フライング・ハイ・ワークスの紹介

フライング・ハイ・ワークスは、東京のホームページ制作・Web制作会社・システム開発会社です。東京都及びその近郊(首都圏)を中心として、SEO対策を意識したPC及びスマホのサイトをワンソース(レスポンシブ対応)で制作します。

実績

デザイナーチームは、グラフィックデザインやイラストの制作も得意としており、著作権を意識しない素材の提供が可能です。システム・コーディングチームでは、Laravelなどを使用したスクラッチからのオリジナルシステム開発を始め、WordPressのカスタマイズを得意としております。

また、SEOやランディングページ(LP)、広告向けバナーなどを他社様でやっていた作業の引継ぎでも問題ありません。制作実績は多数ございますので、お客様に合わせたご提案が可能です。

500点以上のフライング・ハイ・ワークスの制作実績ページをご覧ください!

東京のホームページ制作・Web制作のお問い合わせ、お見積り依頼、相談、質問は
こちらのお問い合わせフォームよりお願いいたします

メールお問い合わせはこちら