0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CentOS6.10にPHP8.1をインストールしてPHP-FPMを動かす方法

Last updated at Posted at 2022-10-21

※CentOS6は2020年11月にサポート終了しました

  • ※opcache,iconv,argon2を有効にしてのphp8.1のビルドが通りませんでしたので無効にしていますが
  • 最後にphpizeでopcacheをインストールします
  • サポート終了しているのでガッツリ使う人はいないと思いますが一応...
  • CentOS6.10のminimal.isoを使いインストール済み
/etc/ssh/sshd_config (rootログイン禁止/空文字パスワード禁止)
- #PermitRootLogin yes
+ PermitRootLogin no
---
- #PermitEmptyPasswords no
+ PermitEmptyPasswords no
sshd再起動
/etc/rc.d/init.d/sshd restart
repoファイルのURL書き換え(そのままではyum updateできないため)
sudo sed -i -e "s/^mirrorlist=http:\\/\\/mirrorlist.centos.org/#mirrorlist=http:\\/\\/mirrorlist.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo
sudo sed -i -e "s/^#baseurl=http:\\/\\/mirror.centos.org/baseurl=http:\\/\\/vault.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo

yum -y update
apache2.2とphp5.3をインストール
yum -y install httpd php php-mbstring
gccとか開発ツールを入れておく
yum -y groupinstall "Development Tools"
yum -y install wget
  • 作業は /usr/local/src内で行う
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib64/pkgconfig
libxml2(https://download.gnome.org/sources/libxml2/2.9/libxml2-2.9.14.tar.xz)
./configure \
--with-history \
--with-python=/usr/bin

make
make install
python3のためにzlibを入れる(https://zlib.net/zlib-1.2.13.tar.gz)
./configure -s
make
make install
# python3(https://www.python.org/ftp/python/3.10.8/Python-3.10.8.tgz)
./configure --enable-optimizations

make altinstall

ln -sfn /usr/local/bin/python3.10 /usr/bin/python3.10

警告 make install は python3 バイナリを上書きまたはリンクを破壊してしまうかもしれません。そのため、make install の代わりに exec_prefix/bin/pythonversion のみインストールする make altinstall が推奨されています。
2. Unix プラットフォームで Python を使う – 2.2. Python のビルド

いらない?
# http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
./configure
make
make install
OpenSSL(https://www.openssl.org/source/openssl-1.1.1q.tar.gz)
./Configure \
no-shared \
linux-x86_64 \
no-md2 \
no-mdc2 \
no-rc5 \
no-rc4 \
enable-ssl2 \
enable-ssl3

make
make install
sqlite3(https://www.sqlite.org/2022/sqlite-autoconf-3390400.tar.gz)
./configure

make
make install
curl(https://curl.se/download/curl-7.85.0.tar.gz)
./configure \
--with-ssl

make
make install
oniguruma(https://github.com/kkos/oniguruma/releases/download/v6.9.8/onig-6.9.8.tar.gz)
./configure

make
make install
libpng(https://download.sourceforge.net/libpng/libpng-1.6.38.tar.gz)
./configure

make
make install
libjpeg(https://www.ijg.org/files/jpegsrc.v9e.tar.gz)
./configure

make
make install
freetype2(https://download.savannah.gnu.org/releases/freetype/freetype-2.12.1.tar.gz)
# freetype2
./configure
make
make install
libsodium(https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable.tar.gz)
./configure
make
make install
# libgd 2.3.3
./configure \
--with-jpeg \
--with-png \
--with-webp \
LIBWEBP_CFLAGS=-I/usr/local/libwebp/include \
LIBWEBP_LIBS=-L/usr/local/libwebp/lib

make
make install
# iconv 1.17
./configure

make
make install
/usr/local/cmake-3.24.2-linux-x86_64/bin/cmake -DCMAKE_INSTALL_PREFIX=/usr/local/libzip-1.9.2
php8.1のインストール
wget --no-check-certificate https://www.php.net/distributions/php-8.1.11.tar.gz
./configure \
--prefix=/usr/local/php-8.1.11 \
--with-config-file-path=/etc/php8 \
--with-config-file-scan-dir=/etc/php8/php.d \
--with-fpm-user=apache \
--with-fpm-group=apache \
--enable-fpm \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv \
--with-freetype \
--with-jpeg \
--with-zlib \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-exif \
--enable-sysvsem \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--with-sodium \
--enable-gd \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--enable-ftp \
--with-gettext \
--enable-soap \
--disable-debug \
--with-pear \
--disable-opcache \
--without-iconv

make -j $(nproc)
make install

php.iniとphp-fpmを作る

mkdir /etc/php8
cp /usr/local/src/php-8.1.11/php.ini-production  /etc/php8/php.ini
cp /usr/local/src/php-8.1.11/sapi/fpm/init.d.php-fpm /etc/init.d/php8-fpm
chmod 700 /etc/init.d/php8-fpm
chkconfig php8-fpm on
You may want to add: /usr/local/php-8.1.11/lib/php to your php.ini include_path
  • make install後、上記のようなメッセージが表示されるので下記のようにする
/etc/php8/php.ini
- ;include_path = ".:/php/includes"
+ include_path = ".:/usr/local/php-8.1.11/lib/php"

php-fpmの設定

# 設定ファイルのサンプルがあるのでリネームして使う
cd /usr/local/php-8.1.11/etc
mv php-fpm.conf.default php-fpm.conf
cd php-fpm.d
mv www.conf.default www.conf
vim /usr/local/php-8.1.11/etc/php-fpm.d/www.conf
- listen 127.0.0.1:9000
+ listen 127.0.0.1:9081 # ポート変更

- pm = dynamic
+ pm = ondemand
service php8-fpm start

apach2.2(古い)でphp-fpmを使うためにmod_fastcgiを入れる

cd /usr/local/src
wget https://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/mod_fastcgi-2.4.6-2.el6.rf.x86_64.rpm
yum install mod_fastcgi-2.4.6-2.el6.rf.x86_64.rpm

mod_fastcgiの設定

/etc/httpd/conf.d/fastcgi.conf
- #FastCgiWrapper On
+ FastCgiWrapper Off

# global FastCgiConfig can be overridden by FastCgiServer options in vhost config
- FastCgiConfig -idle-timeout 20 -maxClassProcesses 1
+ #FastCgiConfig -idle-timeout 20 -maxClassProcesses 1

# 末尾に追記
+ ScriptAlias /fcgi-bin/ /var/www/fcgi-bin/
+  
+ # PHP 8.1
+ FastCgiExternalServer /var/www/fcgi-bin/php-fpm81 -host 127.0.0.1:9081 -pass-header Authorization 
+ Action php-fastcgi81 /fcgi-bin/php-fpm81
上記ScriptAliasを使うために用意
mkdir /var/www/fcgi-bin

Apacheの設定

/etc/httpd/conf/httpd.conf
- #NameVirtualHost *:80
+ NameVirtualHost *:80
/etc/httpd/conf.d/vhost_php81.conf
<VirtualHost *:80>
    DocumentRoot /var/www/php81.centos6.test
    ServerName php81.centos6.test
 
    <FilesMatch ".+\.php$">
        SetHandler php-fastcgi81
    </FilesMatch>
 
    ErrorLog logs/php81.centos6.test-error_log
    CustomLog logs/php81.centos6.test-access_log combined
</VirtualHost>
mkdir /var/www/php81.centos6.test
cd /var/www/php81.centos6.test
vi index.php
<?php phpinfo();

SELINUXをオフにする

/etc/selinux/config
- SELINUX=enforcing
+ SELINUX=disabled

composerをインストール

  • phpコマンドをphp8.1を使うようにする
.bashrc
export PATH=/usr/local/php-8.1.11/bin:/usr/local/php-8.1.11/sbin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/php-8.1.11/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
グローバルにインストールする場合
wget https://getcomposer.org/installer -O composer-setup.php
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer
ローカルにインストールする場合(各ユーザーのホームディレクトリで)
wget https://getcomposer.org/installer -O composer-setup.php
mkdir bin
php composer-setup.php --install-dir=bin --filename=composer
php -r "unlink('composer-setup.php');"

LaravelをComposerでインストール

composer create-project laravel/laravel app --prefer-dist

以上で、Laravel9のwelcomeページの表示までできました

phpizeでopcacheを入れる

  • 通常PHPのビルド時にしか拡張機能を有効化できない(./configure --enable-XXX --with-XXXなど)
  • phpizeを使うと拡張用ライブラリ(.so)をビルド、インストールすることができる
  • peclの方が簡単ではあるが一部の機能しか対応していない、phpizeは全機能対応らしい
  • php.iniのextension = を有効化する
autoconfを2.68以上にする
wget https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.gz
./configure
make
make install
opcacheのビルド・インストール
cd /usr/local/src/php-8.1.11/ext/opcache
phpize
./configure --with-php-config=/usr/local/php-8.1.11/bin/php-config
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/src/php-8.1.11/ext/opcache/modules
make; make install
/etc/php8/php.ini
- ;zend_extension=opcache
+ zend_extension=opcache
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?