GNU/Linux >> Belajar Linux >  >> Linux

Cara menjalankan versi PHP yang berbeda di server yang sama

Terkadang SysAdmin menerima permintaan aneh. Misalnya:beberapa hari yang lalu klien saya perlu mengunggah situs baru, situs baru ini membutuhkan PHP7.4 sementara server mereka berjalan dengan PHP7.2. Saya telah menginstal 7.4 tetapi semua VirtualHost lainnya (setidaknya yang penting) rusak di bawah php7.4. Awalnya saya memikirkan beberapa jenis wadah tetapi saya menemukan sesuatu yang lebih sederhana. Ini adalah cara menjalankan versi PHP yang berbeda di server yang sama.

Penyiapan saya

Saya selalu membuat atau menggunakan kembali mesin virtual untuk semua artikel saya di sini. Karena Anda harus selalu menguji sebelum memecahkan sesuatu yang penting.
Untuk tutorial ini saya telah membuat instalasi baru dari file lama? Server Ubuntu 18.04. Saya akan memiliki situs, sitio1 (sitio adalah situs dalam bahasa Spanyol) yang membutuhkan PHP 7.2; dan situs lain yang membutuhkan PHP 7.4, sitio2 .

1. Tambahkan repositori php Ondrej

Kembali di hari-hari saya, Anda harus mengedit file konfigurasi dengan tangan. Tetapi sekarang kami memiliki paket perangkat lunak-properti-umum untuk mengelola distribusi Anda dan sumber perangkat lunak vendor perangkat lunak independen dengan mudah.

Jadi langkah pertama kami adalah menginstal paket itu:

sudo apt-get install software-properties-common

Langkah kedua kami adalah menambahkan repositori dengan menjalankan:

sudo add-apt-repository ppa:ondrej/php

Perhatikan pesan di layar dan ikuti petunjuknya. Kemudian jalankan

sudo apt-get update

2. Instal dua versi PHP yang berbeda

2.1. PHP 7.2

Tujuan dari tutorial ini adalah untuk menunjukkan kepada Anda bagaimana saya berhasil menjalankan versi php yang berbeda di server yang sama. Saya tidak menginstal (hampir) modul php apa pun tetapi jika Anda membaca ini, Anda pasti membutuhkan beberapa di antaranya, dukungan mysql misalnya. Jangan lupa untuk menginstalnya.

sudo apt-get install php7.2 php7.2-fpm libapache2-mod-php7.2 libapache2-mod-fcgid

2.2 PHP 7.4

Sekarang ulangi proses dengan php 7.4. Ingatlah untuk menginstal modul php yang diperlukan.

sudo apt-get install php7.4 php7.4-fpm libapache2-mod-php7.4

3. Mulai layanan fpm

Sekarang kita perlu memulai layanan fpm untuk kedua versi

sudo systemctl start php7.2-fpm
sudo systemctl start php7.4-fpm

Anda kemudian dapat memeriksa status layanan yang berjalan:

sudo systemctl status php7.x-fpm

4. Membuat VirtualHost

4.1 data VirtualHost

Kami akan membuat direktori pertama di bawah /var/www untuk setiap VirtualHost.

mkdir /var/www/sitio1
mkdir /var/www/sitio2
chown  -R www-data:www-data /var/www

Kedua, buat file php di setiap direktori dengan konten berikut hanya untuk menampilkan informasi php:

<?php 
phpinfo(); 
?>

4.2 Konfigurasi VirtualHost

Kita perlu membuat file .conf untuk setiap situs, dengan konten berikut:

nano /etc/apache2/sites-available/sitio1.conf
<VirtualHost *:80>
     ServerAdmin admin@sitio1
     ServerName sitio1
     DocumentRoot /var/www/sitio1
     DirectoryIndex info.php
     <Directory /var/www/sitio1>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
     </Directory>

    <FilesMatch \.php$>
      # this part do the trick
      SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
    </FilesMatch>

     ErrorLog ${APACHE_LOG_DIR}/sitio1_error.log
     CustomLog ${APACHE_LOG_DIR}/sitio1_access.log combined
</VirtualHost>

Buat file lain /etc/apache2/sites-available/sitio2.conf mengubah informasi yang benar (sitio1 menjadi sitio2, php7.2 menjadi php7.4 dll)

5. Tambahkan informasi DNS

Atau tidak. Maksud saya, di kehidupan nyata Anda perlu membuat catatan DNS yang tepat untuk kedua situs. Karena ini hanya untuk tujuan pengujian dan pembelajaran, saya hanya membuat catatan di /etc/hosts saya mengajukan. Alamat IP mesin virtual ini adalah 192.168.122.14

Ketahuilah bahwa saya dapat menyelesaikan sitio1 dan sitio2.

6. Mengaktifkan semuanya

Kita perlu mengaktifkan beberapa modul apache yang diperlukan untuk menangani konfigurasi ini. Kemudian untuk mengaktifkan virtualhost tersebut, dan terakhir untuk memulai Apache:

sudo a2enmod actions fcgid alias proxy_fcgi
sudo a2ensite sitio1
sudo a2ensite sitio2
sudo systemctl start apache2

Anda juga dapat menguji konfigurasi untuk kesalahan ejaan, modul yang hilang, atau masalah lainnya dengan apachetcl configtest .

7. waktu ujian

Sekarang kita perlu mengarahkan browser ke http://sitio1 dan http://sitio2 dan memeriksa apakah mereka menjalankan versi PHP yang benar:

¡Ya!. Dan ini adalah cara menjalankan versi PHP yang berbeda di server yang sama. Sekarang saya ingin tahu kombinasi apa lagi yang bisa saya coba.

Bonus:Ubuntu lama

Klien saya sebenarnya memiliki Ubuntu 16 yang tidak lagi didukung pada April 2021. Repositori yang harus saya tambahkan adalah ppa:tomvlk/php-archive


Linux
  1. Cara mendapatkan versi MySQL/Apache/PHP

  2. Bagaimana Cara Menjalankan Beberapa versi PHP dengan Nginx di Ubuntu?

  3. Bagaimana cara menjalankan server web Golang saya di latar belakang?

  1. Jalankan beberapa versi PHP untuk domain yang berbeda di NGNIX

  2. Bagaimana Cara Menggunakan Dua Versi Anggur Yang Berbeda Pada Instalasi Yang Sama?

  3. bagaimana cara memulai server kucing jantan di linux?

  1. Bagaimana saya bisa menjalankan perintah yang berbeda tetapi dengan argumen yang sama?

  2. Bagaimana cara menetapkan alamat IP statis yang berbeda ke mesin yang sama tergantung pada OS-nya?

  3. Bagaimana cara mengarahkan subdomain ke port lain di server yang sama?