このチュートリアルでは、ArchLinuxでPHP7.0/ PHP7.1をコンパイルし、PHP7.2と一緒にインストールする方法を説明します。 Arch Linuxは、最新かつ最高のソフトウェアを備えたローリングリリースディストリビューションです。 PHP7.2はArchLinuxリポジトリに到達しました。 WordPressなどの一部のWebアプリケーションはPHP7.2で適切に動作しますが、NextCloudなどの他のWebアプリケーションは現在PHP7.2をサポートしていません。今後のNextCloudバージョン– NextCloud 13 –はPHP7.2と互換性があると言われています。
昨日、Arch Linuxサーバーでアップグレードを行った結果、PHP7.1がPHP7.2に置き換わり、NextCloudWebインターフェイスが機能しなくなりました。 AUR(Arch User Repository)はPHP7.0を提供します。 Yaourtでインストールしようとしましたが、署名の検証に失敗したため、PHP7.0/PHP7.1を自分でコンパイルするしかありませんでした。
ArchLinuxでPHP7.0/PHP7.1をコンパイルする方法
まず、すべてのソフトウェアをアップグレードします。
sudo pacman -Syu
wgetをインストールし、PHPソースコードをダウンロードします。 PHP7.0の最新バージョンを使用しています。バージョン番号をお好みのバージョンに置き換えてください。
sudo pacman -S wget wget http://php.net/distributions/php-7.0.26.tar.gz
tarballを抽出します。
tar xvf php-7.0.26.tar.gz
新しく作成されたディレクトリにCdします。
cd php-7.0.26
ビルドツールと依存関係をインストールします。
sudo pacman -S gcc make bison gawk re2c libxml2 libwebp freetype2 c-client libmcrypt libxslt
以下のパラメーターで環境を構成します。コマンド全体をコピーして、ターミナルウィンドウに貼り付けます。
./configure \ --prefix=/opt/php-7.0.26 \ --with-config-file-path=/opt/php-7.0.26/etc \ --with-zlib-dir \ --with-freetype-dir \ --enable-mbstring \ --with-libxml-dir=/usr \ --enable-soap \ --enable-calendar \ --with-curl \ --with-mcrypt \ --with-zlib \ --with-gd \ --disable-rpath \ --enable-inline-optimization \ --with-bz2 \ --with-zlib \ --enable-sockets \ --enable-sysvsem \ --enable-sysvshm \ --enable-pcntl \ --enable-mbregex \ --enable-exif \ --enable-bcmath \ --with-mhash \ --enable-zip \ --with-pcre-regex \ --with-pdo-mysql \ --with-mysqli \ --with-mysql-sock=/var/run/mysqld/mysqld.sock \ --with-jpeg-dir=/usr \ --with-png-dir=/usr \ --enable-gd-native-ttf \ --with-openssl \ --with-fpm-user=http \ --with-fpm-group=http \ --enable-ftp \ --with-imap \ --with-imap-ssl \ --with-kerberos \ --with-gettext \ --with-xmlrpc \ --with-xsl \ --enable-opcache \ --enable-fpm
完了したら、makeコマンドを使用してPHP7をコンパイルしましょう。 2をマシンのCPUコアの数に置き換えます。デフォルトでは、make
1コアを使用する場合、使用可能なすべてのコアを使用することで、コンパイルプロセスを高速化できます。
make -j2
CPUパワーによっては、コンパイルプロセスに時間がかかる場合があります。終了したら、テストを実行します。
make test
次に、PHPをインストールします。インストールディレクトリは/opt/php-7.0.26/
です。 。
sudo make install
スクリーンショットから、PHP-FPMバイナリが/opt/php-7.0.26/sbin/
にインストールされていることがわかります。 PHP-FPM構成ディレクトリは/opt/php-7.0.26/etc/
です。 。 PHP-FPMを実行する前に、PHP-FPM構成ファイルを作成する必要があります。 2つのサンプル構成ファイルがあるので、それらをコピーするだけです。
sudo cp /opt/php-7.0.26/etc/php-fpm.conf.default /opt/php-7.0.26/etc/php-fpm.conf sudo cp /opt/php-7.0.26/etc/php-fpm.d/www.conf.default /opt/php-7.0.26/etc/php-fpm.d/www.conf
www.conf
を編集します 構成ファイル。
sudo nano /opt/php-7.0.26/etc/php-fpm.d/www.conf
デフォルトでは、PHP-FPMはTCPソケット127.0.0.1:9000でリッスンしますが、Unixソケットでリッスンさせることができます。次の行を見つけます。
listen = 127.0.0.1:9000
コメントアウトするには、先頭にセミコロンを追加します。次に、その下に次の行を追加します。
listen = /run/php-fpm/php7.0-fpm.sock
次に、次の3行を見つけて、コメントを外します。
;listen.owner = http ;listen.group = http ;listen.mode = 0660
ファイルを保存して閉じます。次に、php.iniファイルをコピーします。
sudo cp ~/php-7.0.26/php.ini-production /opt/php-7.0.26/etc/php.ini
ファイルを編集します。
sudo nano /opt/php-7.0.26/etc/php.ini
ファイルの最後に以下を追加します。
include_path = "/opt/php-7.0.26/lib/php"
ファイルを保存して閉じます。これで、PHP-FPMを次のコマンドで開始できます:
sudo /opt/php-7.0.26/sbin/php-fpm
CreateSystemdサービスユニット
PHP7.0用のSystemdサービスユニットを作成します。
sudo nano /etc/systemd/system/php7.0-fpm.service
次の行をコピーしてファイルに貼り付けます。
[Unit] Description=The PHP FastCGI Process Manager After=network.target [Service] Type=simple PIDFile=/run/php-fpm/php7.0-fpm.pid ExecStart=/opt/php-7.0.26/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.0.26/etc/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID [Install] WantedBy=multi-user.target
ファイルを保存して閉じます。これで、現在実行中のPHP7.0-FPMを強制終了し、systemdを介して実行できます。 PHP7.0-FPMマスタープロセスのPIDを見つけます。
ps aux | grep php-fpm
ご覧のとおり、私のマシンではPIDは5066です。だから私はそれを殺すことができます:
sudo kill 5066
PHP7.2-FPMバイナリの名前もphp-fpm
であることに注意してください。 。pkill php-fpm
を使用する場合 、その後、PHP7.2-FPMとPHP7.0-FPMの両方が停止します。次に、systemdを介してphp7.0-fpmを起動します。
sudo systemctl start php7.0-fpm
起動時に自動起動を有効にします。
sudo systemctl enable php7.0-fpm
ステータスを確認してください。
systemctl status php-fpm
NginxにPHP7.0-FPMを使用させる
NginxにPHP7.2ではなくPHP7.0を使用させるには、Nginxサーバーブロックファイルを開き、次の行を見つけます。
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
に変更
fastcgi_pass unix:/run/php-fpm/php7.0-fpm.sock;
この行には複数のインスタンスが存在する可能性があります。それらすべてを変更する必要があります。次に、http
を作成します (Arch LinuxのWebサーバーユーザー)/run/php-fpm/php7.0-fpm.sock
の所有者として ファイル。
sudo chown http:http /run/php-fpm/php7.0-fpm.sock
Nginx構成をテストします。
sudo nginx -t
テストが成功した場合は、変更を有効にするためにNginxをリロードします。
sudo systemctl reload nginx
それでおしまい!このチュートリアルが、ArchLinuxのソースからPHP7.0/7.1をコンパイルするのに役立つことを願っています。いつものように、この投稿が役に立った場合は、無料のニュースレターを購読して、より役立つヒントやコツを入手してください。