GNU/Linux >> Linux の 問題 >  >> Arch Linux

ArchLinuxでソースからPHP7.0/PHP7.1をコンパイルする方法

このチュートリアルでは、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をコンパイルするのに役立つことを願っています。いつものように、この投稿が役に立った場合は、無料のニュースレターを購読して、より役立つヒントやコツを入手してください。


Arch Linux
  1. Ubuntu18.04LTSでソースからBrotliをコンパイルする方法

  2. CentOS7でソースからBrotliをコンパイルする方法

  3. Debian9でソースからBrotli圧縮ツールをコンパイルする方法

  1. Fedora29でソースからBrotli圧縮ツールをコンパイルする方法

  2. ArchLinuxでのアップグレードからパッケージを無視する方法

  3. LinuxMint19にPHPをインストールする方法

  1. ArchLinuxをインストールする方法

  2. ArchLinuxでPacmanを使用する方法

  3. Linux でソース コードからソフトウェアをコンパイルしてインストールする方法