2022.11.07 Web制作
システム開発 - 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サーバーのディレクトリとファイルのアクセス権の設定を行っていきます。
参考
文責:フライング・ハイ・ワークス代表 松田 治人(まつだ はるひと)
会社では、Laravelを中心としたエンジニアとして働いており、これまでに50本以上のLaravelによるWebアプリケーションの構築や東京でホームページ制作をしています。
エンジニアとして弊社で働きたい方、お仕事のご相談など、お待ちしております。
WEBサイト制作のお問い合わせ、お見積り依頼、ご質問は
こちらのお問い合わせフォームよりお願いいたします
フライング・ハイ・ワークスの紹介
フライング・ハイ・ワークスは、東京のホームページ制作・Web制作会社・システム開発会社です。東京都及びその近郊(首都圏)を中心として、SEO対策を意識したPC及びスマホのサイトをワンソース(レスポンシブ対応)で制作します。
実績
デザイナーチームは、グラフィックデザインやイラストの制作も得意としており、著作権を意識しない素材の提供が可能です。システム・コーディングチームでは、Laravelなどを使用したスクラッチからのオリジナルシステム開発を始め、WordPressのカスタマイズを得意としております。
また、SEOやランディングページ(LP)、広告向けバナーなどを他社様でやっていた作業の引継ぎでも問題ありません。制作実績は多数ございますので、お客様に合わせたご提案が可能です。
500点以上のフライング・ハイ・ワークスの制作実績ページをご覧ください!
東京のホームページ制作・Web制作のお問い合わせ、お見積り依頼、相談、質問は
こちらのお問い合わせフォームよりお願いいたします