ここまで、Linuxの基礎、Apache、MariaDB(MySQL)を学んできました。
今回の講座はPHPをソースコードからコンパイルしてインストールします。
これでCMSの土台となるLAMPが完成します。
目次
LAMP
LAMP(ランプ)は、OSであるLinux、Apache、MariaDB(MySQL)、スクリプト言語であるPHP、Perl、Pythonを総称した頭文字から成る造語です。
- Linux(サーバーの基本OS)
- Apache(Webサーバーアプリケーション)
- MariaDB・MySQL(データベースサーバーアプリケーション)
- PHP・Perl・Python(Web系プログラミング言語)
LAMPの依存関係
今回のLAMPの「P」はPHPのことを指し、Apacheのモジュールとしてインストールします。
LAMP環境を構築するには順番があります。
特にPHPは、Apacheのモジュール、mysqlのドライバーをコンパイルオプションに明示する必要があるので、概ね以下の順番でインストールするのが一般的です。
- Linux
- Apache
- MariaDB
- PHP
PHP7.4系のインストール
ソースコードの設置場所、PHPをインストールするために必要なパッケージのインストールなど、これまでの経験を活かしながら進めてください。
PHPのソースコードは以下の公式サイト、php.netから7.4系をダウンロードをします。
PHPのコンパイルオプション
./configure \
--prefix=/usr/local/php \
--sysconfdir=/etc/php \
--with-config-file-path=/etc/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysqli=mysqlnd \
--with-pdo_mysql=mysqlnd \
--with-mysql-sock=/var/lib/mysql/mysql.sock \
--with-openssl \
--with-zlib-dir=/usr/lib \
--with-curl \
--with-iconv \
--with-jpeg \
--with-xpm \
--with-freetype \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--enable-fpm \
--enable-gd \
--enable-ftp \
--enable-mbstring \
--enable-json \
--enable-shared \
--enable-cli \
--enable-debug \
--enable-maintainer-zts \
--enable-sysvshm \
--enable-sysvsem
途中ライブラリーが見つからないなどのエラーでコンパイルが停止すると思います。
必要なパッケージをyumでインストールして対処してください。
対処のヒントは「02-05 コンパイルするための準備」に書かれています。
configureが成功してMakefileが作られると、Thank you for using PHP. と表示されます。
Generating files
configure: patching main/php_config.h.in
configure: creating ./config.status
creating main/internal_functions.c
creating main/internal_functions_cli.c
+--------------------------------------------------------------------+
| *** WARNING *** |
| |
| You have built PHP for Apache's current non-threaded MPM. |
| If you change Apache to use a threaded MPM you must reconfigure |
| PHP with --enable-maintainer-zts |
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/fpm/php-fpm.conf
config.status: creating sapi/fpm/www.conf
config.status: creating sapi/fpm/init.d.php-fpm
config.status: creating sapi/fpm/php-fpm.service
config.status: creating sapi/fpm/php-fpm.8
config.status: creating sapi/fpm/status.html
config.status: creating sapi/phpdbg/phpdbg.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
Thank you for using PHP.
この後に、makeとmake installでPHPをインストールします。
PHPインストール後の設定
今回インストールしたPHP7.4はApacheのモジュールとして組み込みます。
httpd.confの確認
PHPをmake installした後に、Apacheのhttpd.confに以下の行が追加されていることを確認してください。
LoadModule php7_module modules/libphp7.so
追加されていれば、PHPのインストールは成功です。
httpd.confの確認
次に、ApacheがPHPの拡張子「.php」を認識するようhttpd.confに以下を追記。
<FilesMatch "\.php$">
AddHandler php7-script .php
AddType text/html .php
</FilesMatch>
「AddHandler cgi-script .cgi」の下に追記してhttpd.confを保存します。
ApacheのSyntaxチェックを行い、問題なければApacheを再起動。
PHPの設定ファイルを設置
PHPをコンパイルしたディレクトリの中に「php.ini-production」というファイルがあります。
そのファイルをphp.iniとして、/etc/phpの中にコピーしてください。
cp php.ini-production /etc/php/php.ini
php.iniの編集
php.iniにもいくつか設定をする箇所があり、特に以下の3つは設定を忘れずに行ってください。
- expose_php = Off
- disable_functions = phpinfo
- date.timezone=”Asia/Tokyo”
expose_php
expose_phpの値はデフォルトがOnとなっています。
デフォルトのままだとHTTPヘッダーにPHPのバージョンが表示されてしまうのでOffにします。
expose_php = Off
disable_functions
phpには現在の設定情報を出力する関数があります。
<?php phpinfo(); ?>
↑この内容をドキュメントルートにindex.phpとして保存し、ブラウザで確認すると以下のようなPHPの設定情報が表示されます。
例)https://su-campXXX.superusers.jp/index.php
phpinfoで表示された内容は一般に公開されるべきものではないので、php.iniの中でdisable_functionsを検索しphpinfo関数を無効化します。
disable_functions = phpinfo
date.timezone=”Asia/Tokyo”
PHPを使って現在の時刻を取得する場合、date.timezoneにAsia/Tokyoがセットされていなければグリニッジ標準時 (GMT)の時刻(-9h)が表示されます。
<?php echo date(“Y/m/d H:i:s”); ?>
ドキュメントルートにdate.phpを作成して、↑上記内容を記述しブラウザで確認してください。
例)https://su-campXXX.superusers.jp/date.php
php.iniにはdate.timezoneの記述がないので、最終行に以下の内容を追記してください。
date.timezone=”Asia/Tokyo”
以上で、CentOSを使ってLAMPサーバー構築してきました。
後はご自身でドメインを取得し、WordPressなどのCMSをインストールするなどしてみてください。
コメント