※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