SysAdminが奇妙なリクエストを受け取ることがあります。例:数日前、クライアントが新しいサイトをアップロードする必要があります。サーバーがPHP7.2で実行されている間、この新しいサイトにはPHP7.4が必要です。 7.4をインストールしましたが、他のすべてのVirtualHost(少なくとも重要なもの)はphp7.4で壊れました。最初はある種のコンテナについて考えていましたが、もっと簡単なものを見つけました。これは、同じサーバーで異なるPHPバージョンを実行する方法です。
私の設定
私は常に、ここにあるすべての記事に対して仮想マシンを作成または再利用しています。重要なことを壊す前に常にテストする必要があるからです。
このチュートリアルでは、古いものの新規インストールを作成しましたか? Ubuntuサーバー18.04。 sitio1というサイトを作成します (sitioはスペイン語のサイトです)PHP7.2が必要です。 PHP 7.4を必要とする別のサイト、 sitio2 。
1。 Ondrejphpリポジトリを追加する
私の時代には、設定ファイルを手動で編集する必要がありました。しかし今では、ディストリビューションと独立系ソフトウェアベンダーのソフトウェアソースを簡単に管理するためのこのパッケージsoftware-properties-commonがあります。
したがって、最初のステップはそのパッケージをインストールすることです:
sudo apt-get install software-properties-common
2番目のステップは、次のコマンドを実行して実際にリポジトリを追加することです。
sudo add-apt-repository ppa:ondrej / php
画面上のメッセージに注意を払い、指示に従ってください。次に実行します
sudo apt-get update
2。 2つの異なるPHPバージョンをインストールする
2.1。 PHP 7.2
このチュートリアルの目的は、同じサーバーでさまざまなバージョンのphpを実行する方法を示すことです。私は(ほとんど)phpモジュールをインストールしていませんが、これを読んでいる場合は、確かにそれらのいくつか、たとえばmysqlサポートが必要です。それらをインストールすることを忘れないでください。
sudo apt-get install php7.2 php7.2-fpm libapache2-mod-php7.2 libapache2-mod-fcgid
2.2 PHP 7.4
ここで、php7.4でこのプロセスを繰り返します。必要なphpモジュールをインストールすることを忘れないでください。
sudo apt-get install php7.4 php7.4-fpm libapache2-mod-php7.4
3。 fpmサービスを開始する
次に、両方のバージョンのfpmサービスを開始する必要があります
sudo systemctl start php7.2-fpm sudo systemctl start php7.4-fpm
次に、実行中のサービスのステータスを確認できます。
sudo systemctl status php7.x-fpm
4。 VirtualHostsの作成
4.1VirtualHostデータ
すべての仮想ホストの/var/wwwの下に最初のディレクトリを作成します。
mkdir /var/www/sitio1 mkdir /var/www/sitio2 chown -R www-data:www-data /var/www
次に、php情報のみを表示するために、次のコンテンツのみを含むphpファイルをすべてのディレクトリに作成します。
<?php
phpinfo();
?>
4.2VirtualHostの構成
次の内容で、すべてのサイトの.confファイルを作成する必要があります。
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>
別のファイル/etc/apache2/sites-available/sitio2.confを作成して、適切な情報を変更します(sitio1はsitio2になり、php7.2はphp7.4になります)
5。 DNS情報を追加する
か否か。つまり、実際には、両方のサイトに適切なDNSレコードを作成する必要があります。これはテストと学習のみを目的としているため、/etc/hosts
にのみレコードを作成しています。 ファイル。この仮想マシンのIPアドレスは192.168.122.14
私がsitio1とsitio2を解決できることを知ってください。
6。すべてを有効にする
この構成を処理するために必要ないくつかのapacheモジュールを有効にする必要があります。次に、これらの仮想ホストを有効にし、最後にapacheを開始します。
sudo a2enmod actions fcgid alias proxy_fcgi sudo a2ensite sitio1 sudo a2ensite sitio2 sudo systemctl start apache2
apachetcl configtest
を使用して、スペルミス、モジュールの欠落、またはその他の問題について構成をテストすることもできます。 。
7。テスト時間
次に、ブラウザでhttp:// sitio1とhttp:// sitio2を指定し、それらが正しいPHPバージョンを実行しているかどうかを確認する必要があります。
わーい!。そして、これは同じサーバー上で異なるPHPバージョンを実行する方法です。今、私は他にどのような組み合わせを試すことができるのか興味があります。
ボーナス:古いubuntus
私のクライアントには、実際には2021年4月にサポートが終了したUbuntu16があります。追加する必要のあるリポジトリはppa:tomvlk/php-archive
でした。