Tento tutoriál vám ukáže, jak zkompilovat PHP7.0/PHP7.1 na Arch Linux a nainstalovat jej spolu s PHP7.2. Arch Linux je postupná distribuce s nejnovějším a nejlepším softwarem. PHP7.2 přistálo v úložišti Arch Linux. Některé webové aplikace, jako je WordPress, fungují dobře s PHP7.2, ale jiné jako NextCloud v současnosti PHP7.2 nepodporují. Nadcházející verze NextCloud – NextCloud 13 – je údajně kompatibilní s PHP7.2.
Včera jsem provedl upgrade na mém serveru Arch Linux, což mělo za následek nahrazení PHP7.1 PHP7.2 a moje webové rozhraní NextCloud přestalo fungovat. AUR (Arch User Repository) poskytuje PHP7.0. Zkoušel jsem to nainstalovat pomocí Yaourt, ale ověření podpisu se nezdařilo, takže mi nezbylo nic jiného, než PHP7.0/PHP7.1 zkompilovat sám.
Jak zkompilovat PHP7.0/PHP7.1 na Arch Linuxu
Nejprve upgradujte veškerý software.
sudo pacman -Syu
Nainstalujte si wget a stáhněte si zdrojový kód PHP. Používám nejnovější verzi PHP7.0. Nahraďte číslo verze svou preferovanou verzí.
sudo pacman -S wget wget http://php.net/distributions/php-7.0.26.tar.gz
Extrahujte tarball.
tar xvf php-7.0.26.tar.gz
Cd do nově vytvořeného adresáře.
cd php-7.0.26
Nainstalujte sestavení nástroje a závislosti.
sudo pacman -S gcc make bison gawk re2c libxml2 libwebp freetype2 c-client libmcrypt libxslt
Nakonfigurujte prostředí pomocí následujících parametrů. Zkopírujte celý příkaz a vložte jej do okna terminálu.
./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
Až bude hotovo, zkompilujme PHP7 pomocí příkazu make. Nahraďte 2 počtem jader CPU na vašem počítači. Ve výchozím nastavení make
používá 1 jádro, můžete proces kompilace urychlit použitím všech dostupných jader.
make -j2
Proces kompilace může nějakou dobu trvat, v závislosti na výkonu vašeho procesoru. Po dokončení spusťte test.
make test
Nyní nainstalujte PHP. Instalační adresář je /opt/php-7.0.26/
.
sudo make install
Na snímku obrazovky vidíme, že binární PHP-FPM je nainstalováno do /opt/php-7.0.26/sbin/
a konfigurační adresář PHP-FPM je /opt/php-7.0.26/etc/
. Před spuštěním PHP-FPM musíme vytvořit konfigurační soubor PHP-FPM. Existují dva vzorové konfigurační soubory, takže je můžeme pouze zkopírovat.
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
Upravte www.conf
konfigurační soubor.
sudo nano /opt/php-7.0.26/etc/php-fpm.d/www.conf
Ve výchozím nastavení PHP-FPM naslouchá na TCP socketu 127.0.0.1:9000, můžeme jej přimět naslouchat na Unix socketu. Najděte následující řádek.
listen = 127.0.0.1:9000
Přidejte středník na začátek, abyste to okomentovali. Poté pod něj přidejte následující řádek.
listen = /run/php-fpm/php7.0-fpm.sock
Dále najděte následující 3 řádky a odkomentujte je.
;listen.owner = http ;listen.group = http ;listen.mode = 0660
Uložte a zavřete soubor. Dále zkopírujte soubor php.ini.
sudo cp ~/php-7.0.26/php.ini-production /opt/php-7.0.26/etc/php.ini
Upravte soubor.
sudo nano /opt/php-7.0.26/etc/php.ini
Přidejte následující na konec souboru.
include_path = "/opt/php-7.0.26/lib/php"
Uložte a zavřete soubor. Nyní můžeme spustit PHP-FPM pomocí:
sudo /opt/php-7.0.26/sbin/php-fpm
Vytvořit Systemd Service Unit
Vytvořte servisní jednotku Systemd pro PHP7.0.
sudo nano /etc/systemd/system/php7.0-fpm.service
Zkopírujte a vložte následující řádky do souboru.
[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
Uložte a zavřete soubor. Nyní můžeme zabít aktuálně běžící PHP7.0-FPM a spustit jej přes systemd. Najděte PID hlavního procesu PHP7.0-FPM.
ps aux | grep php-fpm
Jak vidíte, PID je na mém stroji 5066. Takže to můžu zabít pomocí:
sudo kill 5066
Všimněte si, že binární soubor PHP7.2-FPM se také jmenuje php-fpm
.Pokud používáte pkill php-fpm
, pak se PHP7.2-FPM i PHP7.0-FPM zastaví. Nyní spusťte php7.0-fpm přes systemd.
sudo systemctl start php7.0-fpm
Povolit automatické spouštění při spouštění.
sudo systemctl enable php7.0-fpm
Zkontrolujte jeho stav.
systemctl status php-fpm
Nechte Nginx používat PHP7.0-FPM
Chcete-li, aby Nginx používal PHP7.0 místo PHP7.2, otevřete soubor bloku serveru Nginx a najděte následující řádek.
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
Změňte jej na
fastcgi_pass unix:/run/php-fpm/php7.0-fpm.sock;
Může existovat více než jeden výskyt tohoto řádku. Musíte je změnit všechny. Poté vytvořte http
(uživatel webového serveru na Arch Linuxu) jako vlastník /run/php-fpm/php7.0-fpm.sock
soubor.
sudo chown http:http /run/php-fpm/php7.0-fpm.sock
Otestujte konfiguraci Nginx.
sudo nginx -t
Pokud bude test úspěšný, znovu načtěte Nginx, aby se změny projevily.
sudo systemctl reload nginx
A je to! Doufám, že vám tento tutoriál pomohl zkompilovat PHP7.0/7.1 ze zdroje na Arch Linuxu. Jako vždy, pokud pro vás byl tento příspěvek užitečný, přihlaste se k odběru našeho bezplatného zpravodaje a získejte další užitečné tipy a triky.