NGINXで PHPを使うためのセッティングをします。
Laravelを使いたくなった…という訳ではなく、単にこのサイトがあるさくらインターネットのレンタルサーバーに掲示板を作りたいなと思って何か方便はないかとサービス内容を見た所 PHPだけは使えるので、本番リリース前にテストする環境が欲しかったのです。
PHPでの開発は一切やったことがありませんが、サーバーエンジニアとして環境構築はできるようにしておかないといけないと思うところもありました。
ということで、大したネタではないのですが、NGINXで PHPを動かす所まではやろうかと思います。
環境は以下の通りです。
2023年5月4日時点で、作業の結果、これらのバージョンになりました。
- Ubuntu Server 22.04.2
- NGINX 1.18.0
- PHP 8.1.2
ではサックリと作ってしまいましょう。
Ubuntu Serverのインストールについては、以下に書いている通りに作りました。
「Ubuntu Linux Serverをインストール」
「Ubuntu Serverの初期設定」
NGINXのインストールについては「NGiNXサーバーを作る」に書いている通りに作りました。
NGINXが動いているところからのスタートになります。
1.PHPインストール
Ubuntuの snapのリポジトリにはなさそうです。
subro@UbuntuServer2204-2:~$ snap search php
Name Version Publisher Notes Summary
phpstorm 2023.1.1 jetbrains✓ classic PhpStorm
nextcloud 25.0.6snap1 nextcloud✓ - Nextcloud Server - A safe home for all your data
eclipse 2022-12 snapcrafters classic Extensible Tool Platform and Java IDE
netbeans 17 apache-netbeans✓ classic Apache NetBeans IDE
kdevelop 23.04.0 kde✓ classic Featureful, plugin-extensible IDE for C/C++ and other programming languages
kcachegrind 23.04.0 kde✓ - Profiler Frontend
imagick 3.7.0RC1 kz6fittycent - Imagick is a PHP extension to create and modify images
nodemailerapp 1.0.16 andrisreinman - The ultimate email debugging tool
nervatura 5.1.5 nervatura - Open Source Business Management Framework
sectrain 9.3 joesecurity - A training tool displaying some techniques for secure web app development
laradumps 1.7.0 laradumps - LaraDumps
mqttx 1.9.2 emqx - MQTT X: An Elegant Cross-platform MQTT 5.0 Desktop Client
vmcloud-nextcloud 1.0.0 victoriususm - Nextcloud 16.0.3 Optimized-Boosted
lazfuck 1.2.0 chronoscz - A simple BrainFuck IDE written in Lazarus/FPC.
laravel-mhall119 1.3.3 mhall119 classic Laravel PHP framework
direnv v2.18.2 nullboxorg - direnv -- Unclutter your .profile
graphpath v1.0 nsg - Graphpath generates an ASCII network diagram from the route table
lighttpd-php 0.1 jcverdie - lighttpd with php-fpm
eclipse-s-heuer 2020-09snap1 s-heuer - Extensible Tool Platform and Java IDE
aptリポジトリにはありましたけど、Ver.8.1のようです。
2023年5月4日時点では、Ver.8.2.5が出ています。
subro@UbuntuServer2204-2:~$ apt search php
〜〜〜 略 〜〜〜
php/jammy 2:8.1+92ubuntu1 all
server-side, HTML-embedded scripting language (default)
〜〜〜 略 〜〜〜
最新版が欲しかったので本家サイトからダウンロードしようとしたんですが、本家は C言語のソース配布なんですね。
今後のアップデートを鑑みるとちょっと面倒臭くなりそうなのでやめておきます。
一応本家サイトのダウンロードページはこちら。(時間が経つとバージョンは変わります)
Current Stable PHP 8.2.5
一応有名な PPA(Personal Package Archive)リポジトリ(ppa:ondrej/php)もあって、Ubuntuではそれを使う方法を示してくれるブログも多いですが、「業務用の本番環境で PPAじゃね」って人も多かろうと思いますので。
Ubuntuのリポジトリからインストールします。
[php]に加えて、NGINXから利用するため[php-fpm]というのも入れます。
subro@UbuntuServer2204-2:~$ sudo apt install -y php php-fpm
〜〜〜 省略 〜〜〜
インストールできました。
詳細なバージョンを確認してみます。
subro@UbuntuServer2204-2:~$ which php
/usr/bin/php
subro@UbuntuServer2204-2:~$ php -v
PHP 8.1.2-1ubuntu2.11 (cli) (built: Feb 22 2023 22:56:18) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2-1ubuntu2.11, Copyright (c), by Zend Technologies
最新は 8.1.18の所、コイツは 8.1.2ですので、安定版の 8.1とは言うもののちょっと古いのが悩ましいです。
Ubuntu 22.04だとパッケージはこのバージョンで固定されてしまってる気がします。
なお、php-fpmですが、コイツは常駐プロセスとなっています。
subro@UbuntuServer2204-2:~$ ps -ef | grep php
root 11435 1 0 10:28 ? 00:00:00 php-fpm: master process (/etc/php/8.1/fpm/php-fpm.conf)
www-data 11436 11435 0 10:28 ? 00:00:00 php-fpm: pool www
www-data 11437 11435 0 10:28 ? 00:00:00 php-fpm: pool www
subro 11540 10104 0 10:31 pts/1 00:00:00 grep --color=auto php
でもって、プロセス間通信用に UNIXドメインソケットも持っています。
シンボリックリンクがありますので、[/run/php/php-fpm.sock]を使いましょう。
(Alternativesの機能で、8.1のやつにリンクされているはず)
subro@UbuntuServer2204-2:~$ ls -l /run/php
合計 4
lrwxrwxrwx 1 root root 30 5月 4 10:28 php-fpm.sock -> /etc/alternatives/php-fpm.sock
-rw-r--r-- 1 root root 5 5月 4 10:28 php8.1-fpm.pid
srw-rw---- 1 www-data www-data 0 5月 4 10:28 php8.1-fpm.sock
2.NGINXの設定変更
ここでは [/etc/nginx/sites-available/default]ファイルを書き換えてしまいますが、実際は WEBサイトの構成によってそれぞれのサイトの設定ファイルを作ると思うので、そちらに書いて下さい。
以下の通り変更しました。
ピンクのところが追加です。
[/etc/nginx/sites-available/default]
index index.html index.htm index.nginx-debian.html;
↓
index index.html index.htm index.php index.nginx-debian.html;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
設定ファイルのフォーマットのテストも通りました。
subro@UbuntuServer2204-2:~$ sudo nginx -T
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
〜〜〜 以下略〜〜〜
NGINXを再起動します。
subro@UbuntuServer2204-2:~$ sudo systemctl restart nginx
再起動しました。
それでは PHPを使った HTMLファイルを作ります。
PHPの最初のテストのいつものアレですね。
[/var/www/html/index.php]
<?php phpinfo(); ?>
WEBブラウザでアクセスします。
我が家の環境では [http://UbuntuServer2204-2/index.php]になります。
出ましたね。いつものが。
==========
PHPを動かせるようになりましたので、目的の掲示板のテストをば。
さくらインターネットのライトプランでは SQLiteという DBも使えるようですが、とりあえずシンプルにファイルのデータベース(?)のやつをどこぞからパクってきました。
うん、動きました。
でもデータのサニタイズもしてないので、これをそのまま使うわけにはいかんな…。
どこかでセキュリティのしっかりしたのを探してこないといけません。
というわけで、この回はおしまい。
よろしければメッセージを残してやって下さい。
掲示板
まぁPHPは本には困らないですね。
![]() | PHP本格入門[上] 〜プログラミングとオブジェクト指向の基礎からデータベース連携まで [ 大家正登 ] 価格:3,938円 |
![](https://www15.a8.net/0.gif?a8mat=3NAB73+1DF0RE+2HOM+BWGDT)
![]() | 価格:3,740円 |
![](https://www19.a8.net/0.gif?a8mat=3NAB73+1DF0RE+2HOM+BWGDT)
![]() | いきなりはじめるPHP ワクワク・ドキドキの入門教室 [ 谷藤賢一 ] 価格:1,980円 |
![](https://www18.a8.net/0.gif?a8mat=3NAB73+1DF0RE+2HOM+BWGDT)