環境の構築
この記事をまとめるに至った背景
開発環境を作成することはよくあると思いますが、久しぶりに構築してみると忘れていることもあったりして、思い通りにいかないこともあります。時間をかけて解決することも重要なのですが、時間をかけるべき場所は別にあるので、あまり手間取るのはよくないと思います。内容をきちんと理解しておくのは当然ですが、ケアレスミスで時間を無駄にすることがないようにまとめておこうと思います。
注意事項
あくまでも開発環境(自身のPC上)の構築となります。セキュリティの設定などがかなり甘いので、ご注意ください。
前提条件
-
ホスト
- Windows10 Home
- Hyper-V
-
ゲスト
- Rocky Linux 9.4
-
ゲストOSはインストール済みの状態
今回のゴール
- 新規インストールした直後のRocky Linuxに、PHPの動作環境を構築する
- PHPのバージョン: 8.0
- nginxのバージョン: 1.24
初回ログイン
- ユーザーの追加
# useradd rocky
# passwd rocky
- 追加ユーザーで接続
- パッケージの更新
$ sudo dnf update
$ sudo yum install -y epel-release
$ sudo yum update -y
$ sudo yum install -y vim
- nginxのインストール
$ sudo yum install -y @nginx:1.24
- phpのインストール
$ sudo yum install -y php php-fpm
- php-fpmの設定を変更
$ sudo vim /etc/php-fpm.d/www.conf
$ sudo diff /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.bak
24,25c24
< ;user = apache
< user = nginx
---
> user = apache
27,28c26
< ;group = apache
< group = nginx
---
> group = apache
263,264c261
< ;access.log = log/www.access.log
< access.log = /var/log/php-fpm/www-access.log
---
> ;access.log = log/$pool.access.log
324d320
< access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{HTTP_HOST}e %{REQUEST_URI}e %q %{seconds}d %{kilo}M %C%% %{HTTP_REFERER}e"
- nginx, php-fpmの起動
$ sudo systemctl enable php-fpm
$ sudo systemctl enable nginx
$ sudo systemctl start php-fpm
$ sudo systemctl start nginx
- 外部からhttpリクエストを受け付けるようにする
$ sudo firewall-cmd --get-active-zones
public
interfaces: eth0
$ sudo firewall-cmd --list-all --zone public
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
$ sudo firewall-cmd --add-service http --zone public
$ sudo firewall-cmd --add-service http --zone public --permanent
$ sudo firewall-cmd --list-all --zone public
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client http ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
- ホスト側からテストページを確認
- ブラウザから http://[VMのIP] でアクセスする
VirtualHostの追加
- nginxの設定ファイルを変更する
$ sudo vim /etc/nginx/nginx.conf
# server {
# listen 80;
# listen [::]:80;
# server_name _;
# root /usr/share/nginx/html;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# error_page 404 /404.html;
# location = /404.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
server {
listen 80;
listen [::]:80;
root /var/www/html;
location ~ \.php$ {
root /var/www/html;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
- nginxの設定に間違いがないかを確認し、再起動する
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl restart nginx
PHPファイルを置いて動作確認を行う
-
/var/www/html に確認用のphpファイルを配置する
-
ホスト側から、アクセスする
- hostsに test.me を追加して、名前付きのURLでアクセスする
まとめ
ここまでで、最低限のphp動作環境を構築できました。
必要に応じて、mysqlの追加や、必要なモジュールの追加などを行っていきます。