Tutorial ini menunjukkan cara mengkompilasi PHP7.0/PHP7.1 di Arch Linux dan menginstalnya bersama PHP7.2. Arch Linux adalah distribusi rilis bergulir dengan perangkat lunak terbaru dan terhebat. PHP7.2 mendarat di repositori Arch Linux. Beberapa aplikasi web seperti WordPress bekerja dengan baik dengan PHP7.2, tetapi yang lain seperti NextCloud saat ini tidak mendukung PHP7.2. Versi NextCloud yang akan datang – NextCloud 13 – dikatakan kompatibel dengan PHP7.2.
Kemarin saya melakukan upgrade pada server Arch Linux saya, yang mengakibatkan PHP7.2 menggantikan PHP7.1 dan antarmuka web NextCloud saya berhenti bekerja. AUR (Arch User Repository) menyediakan PHP7.0. Saya mencoba menginstalnya dengan Yaourt, tetapi verifikasi tanda tangan gagal, jadi saya tidak punya pilihan lain selain mengkompilasi PHP7.0/PHP7.1 sendiri.
Cara Kompilasi PHP7.0/PHP7.1 di Arch Linux
Pertama, perbarui semua perangkat lunak.
sudo pacman -Syu
Instal wget dan unduh kode sumber PHP. Saya menggunakan versi terbaru dari PHP7.0. Ganti nomor versi dengan versi pilihan Anda.
sudo pacman -S wget wget http://php.net/distributions/php-7.0.26.tar.gz
Ekstrak tarballnya.
tar xvf php-7.0.26.tar.gz
Cd ke direktori yang baru dibuat.
cd php-7.0.26
Instal alat dan dependensi build.
sudo pacman -S gcc make bison gawk re2c libxml2 libwebp freetype2 c-client libmcrypt libxslt
Konfigurasikan lingkungan dengan parameter berikut. Salin seluruh perintah dan tempel ke jendela terminal Anda.
./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
Setelah selesai, mari kita kompilasi PHP7 dengan perintah make. Ganti 2 dengan jumlah inti CPU pada mesin Anda. Secara default make
menggunakan 1 inti, Anda dapat mempercepat proses kompilasi dengan menggunakan semua inti yang tersedia.
make -j2
Proses kompilasi dapat memakan waktu, tergantung pada daya CPU Anda. Setelah selesai, jalankan pengujian.
make test
Sekarang instal PHP. Direktori instalasi adalah /opt/php-7.0.26/
.
sudo make install
Dari tangkapan layar, kita dapat melihat biner PHP-FPM diinstal ke /opt/php-7.0.26/sbin/
dan direktori konfigurasi PHP-FPM adalah /opt/php-7.0.26/etc/
. Sebelum menjalankan PHP-FPM, kita perlu membuat file konfigurasi PHP-FPM. Ada dua contoh file konfigurasi jadi kita tinggal menyalinnya saja.
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
Edit www.conf
file konfigurasi.
sudo nano /opt/php-7.0.26/etc/php-fpm.d/www.conf
Secara default, PHP-FPM mendengarkan pada soket TCP 127.0.0.1:9000, kita dapat membuatnya mendengarkan pada soket Unix. Temukan baris berikut.
listen = 127.0.0.1:9000
Tambahkan titik koma di awal untuk mengomentarinya. Kemudian tambahkan baris berikut di bawahnya.
listen = /run/php-fpm/php7.0-fpm.sock
Selanjutnya, temukan 3 baris berikut dan batalkan komentarnya.
;listen.owner = http ;listen.group = http ;listen.mode = 0660
Simpan dan tutup file. Selanjutnya salin file php.ini.
sudo cp ~/php-7.0.26/php.ini-production /opt/php-7.0.26/etc/php.ini
Edit filenya.
sudo nano /opt/php-7.0.26/etc/php.ini
Tambahkan berikut ini di bagian bawah file.
include_path = "/opt/php-7.0.26/lib/php"
Simpan dan tutup file. Sekarang kita dapat memulai PHP-FPM dengan:
sudo /opt/php-7.0.26/sbin/php-fpm
Buat Unit Layanan Systemd
Buat unit layanan Systemd untuk PHP7.0.
sudo nano /etc/systemd/system/php7.0-fpm.service
Salin dan tempel baris berikut ke dalam file.
[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
Simpan dan tutup file. Sekarang kita dapat mematikan PHP7.0-FPM yang sedang berjalan dan menjalankannya melalui systemd. Temukan PID dari proses master PHP7.0-FPM.
ps aux | grep php-fpm
Seperti yang Anda lihat, PID adalah 5066 di mesin saya. Jadi saya bisa membunuhnya dengan:
sudo kill 5066
Perhatikan bahwa biner PHP7.2-FPM juga bernama php-fpm
.Jika Anda menggunakan pkill php-fpm
, maka PHP7.2-FPM dan PHP7.0-FPM akan berhenti. Sekarang mulai php7.0-fpm melalui systemd.
sudo systemctl start php7.0-fpm
Aktifkan mulai otomatis saat boot.
sudo systemctl enable php7.0-fpm
Periksa statusnya.
systemctl status php-fpm
Membuat Nginx Menggunakan PHP7.0-FPM
Untuk membuat Nginx menggunakan PHP7.0 alih-alih PHP7.2, buka file blok server Nginx, temukan baris berikut.
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
Ubah ke
fastcgi_pass unix:/run/php-fpm/php7.0-fpm.sock;
Mungkin ada lebih dari satu contoh dari baris ini. Anda perlu mengubah semuanya. Kemudian buat http
(pengguna server web di Arch Linux) sebagai pemilik /run/php-fpm/php7.0-fpm.sock
berkas.
sudo chown http:http /run/php-fpm/php7.0-fpm.sock
Uji konfigurasi Nginx.
sudo nginx -t
Jika pengujian berhasil, muat ulang Nginx agar perubahan diterapkan.
sudo systemctl reload nginx
Itu dia! Saya harap tutorial ini membantu Anda mengkompilasi PHP7.0/7.1 dari sumber di Arch Linux. Seperti biasa, jika menurut Anda postingan ini bermanfaat, berlangganan newsletter gratis kami untuk mendapatkan tips dan trik yang lebih bermanfaat.