このチュートリアルでは、PHP 7(PHP-FPMを介して)とMySQLをサポートするUbuntu16.04サーバーにApacheWebサーバーをインストールする方法を示します。 PHP-FPM(FastCGI Process Manager)は、あらゆるサイズのサイト、特に忙しいサイトに役立ついくつかの追加機能を備えた、代替のPHPFastCGI実装です。
1予備メモ
このチュートリアルでは、ホスト名server1.example.comとIPアドレス192.168.1.100を使用します。これらの設定はユーザーによって異なる場合があるため、必要に応じて置き換える必要があります。
このチュートリアルのすべてのステップをroot権限で実行しているので、rootとしてログインしていることを確認してください:
sudo su
2MySQLまたはMariaDBのインストール
UbuntuはMySQLとMariaDBパッケージを提供します。 MariaDBは、元のMySQL開発者であるMontyWideniusによって提供されたMySQLフォークです。 2.1章または2.2章に従って、データベースサーバーをインストールします。
2.1MySQL5.7のインストール
まず、MySQL5.7を次のようにインストールします。
apt-get -y install mysql-server mysql-client
MySQLルートユーザーのパスワードを入力するように求められます。このパスワードは[メール保護]ユーザーと[メール保護]ユーザーに有効であるため、後でMySQLルートパスワードを手動で指定する必要はありません。
MySQLの「root」ユーザーの新しいパスワード:<-yourrootsqlpassword
MySQLの「root」ユーザーのパスワードを繰り返します:<-yourrootsqlpassword
mysql_secure_installationを実行します MySQLデータベースを保護し、テストデータベースへのアクセスを無効にします。
mysql_secure_installation
次の質問があります:
Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y
2.2MariaDBのインストール
次のコマンドを実行して、MariaDBサーバーとクライアントをインストールします。
apt-get -y install mariadb-server mariadb-client
次に、MariaDBのルートパスワードを設定します。
mysql_secure_installation
次の質問があります:
Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y
3Apacheのインストール
Apache2.4はUbuntuパッケージとして利用できます。次のようにインストールできるapache2パッケージが必要です:
apt-get -y install apache2
次に、ブラウザをhttp://192.168.1.100に移動すると、Apacheプレースホルダーページが表示されます(機能します!):
ApacheのデフォルトのドキュメントルートはUbuntuでは/var/ www / htmlであり、設定ファイルは/etc/apache2/apache2.confです。追加の設定は、/ etc / apache2 / mods-enabled(Apacheモジュールの場合)、/ etc / apache2 / sites-enabled(仮想ホストの場合)、/ etc / apache2/confなどの/etc/apache2ディレクトリのサブディレクトリに保存されます。 .d。
4PHP7のインストール
PHP-FPMと次のようにインストールするApacheのmod_fastcgiモジュールを使用して、Apache2でPHP7を機能させることができます。
apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.0
PHP-FPMは、ソケット/var/run/php/php7.0-fpm.sockでFastCGIサーバーを実行するデーモンプロセス(systemdユニットphp7.0-fpm.serviceを使用)です。
次に、次のApacheモジュールを有効にします...
a2enmod actions fastcgi alias
...そしてApacheを再起動します:
systemctl restart apache2.service
5Apacheの構成
ApacheをPHP-FPMで動作させるには、次の構成が必要です。
<IfModule mod_fastcgi.c> AddHandler php7-fcgi .php Action php7-fcgi /php7-fcgi Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization </IfModule>
たとえば、/ etc / apache2 / conf.d / php7.0-fpm.conf(このファイルは存在しないため、作成する必要があります)などのグローバルApache構成に配置できます(すべての仮想ホストで有効になります)。 、またはPHP-FPMを使用する必要がある各仮想ホストに配置できます。デフォルトの仮想ホストでPHP-FPMを使用したいので、その仮想ホスト構成ファイル/etc/apache2/sites-available/000-default.confを開きます。
nano /etc/apache2/sites-available/000-default.conf
...そして次のセクションを
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
<IfModule mod_fastcgi.c> SetHandler php7-fcgi .php Action php7-fcgi /php7-fcgi virtual Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization </IfModule>
その後、Apacheを再起動します:
systemctl restart apache2.service
次に、ドキュメントルート/ var/wwwに次のPHPファイルを作成します。
nano /var/www/html/info.php
<?php phpinfo();
次に、そのファイルをブラウザ(http://192.168.1.100/info.phpなど)で呼び出します。
ご覧のとおり、PHP 7は機能しており、サーバーAPI行に示されているように、FPM/FastCGIを介して機能しています。さらに下にスクロールすると、PHPですでに有効になっているすべてのモジュールが表示されます。 MySQLはそこにリストされていません。つまり、PHPではMySQLがまだサポートされていません。
注意: PHP 7 Apacheモジュール(mod_php)がインストールされている場合、これは発生する可能性があります。このチュートリアルで行ったように空のサーバーではなく、ISPのLAMPサーバーのセットアップから開始する場合は、以下に示すようにmod_phpを無効にする必要がある場合があります。
a2dismod php7.0
apacheを再起動します:
systemctl restart apache2.service
6PHP7でのMySQL/MariaDBサポートの取得
PHPでMySQLをサポートするには、php7.0-mysqlパッケージをインストールします。他のPHPモジュールをインストールすることをお勧めします。また、アプリケーションでそれらが必要になる場合もあります。次のような利用可能なPHPモジュールを検索できます:
apt-cache search php7.0
必要なものを選び、次のようにインストールします:
apt-get install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php7.0-imap php7.0-mcrypt php7.0-ps php7.0-pspell php7.0-recode php7.0-snmp php7.0-sqlite php7.0-tidy php7.0-xmlrpc php7.0-xsl
PHP-FPMをリロードします:
systemctl reload php7.0-fpm.service
次に、ブラウザにhttp://192.168.1.100/info.phpをリロードし、モジュールセクションまでスクロールダウンします。これで、MySQLiモジュールを含む多くの新しいモジュールが見つかるはずです:
7 phpMyAdmin
phpMyAdminは、MySQLデータベースを管理するためのWebインターフェイスです。インストールすることをお勧めします:
apt-get -y install phpmyadmin
次の質問が表示されます:
Web server to reconfigure automatically:<-- apache2
Configure database for phpmyadmin with dbconfig-common? <-- Yes
MySQL application password for phpmyadmin: <-- Press enter
その後、http://192.168.1.100/phpmyadmin/
からphpMyAdminにアクセスできます。
8 PHP-FPMにTCP接続を使用させる(オプション)
注: この章では、PHP-FPMoverTCPの構成について説明します。これを構成例として示します。これが必要な場合は、セットアップが必要になる可能性があります。 fastcgiプロセスが2番目のサーバーで実行される場合、ただし一般的にはソケットを使用する方が高速です。したがって、この章はスキップすることをお勧めします。
デフォルトでは、PHP-FPMはソケット/var/run/php/php7.0-fpm.sockをリッスンしています。 PHP-FPMにTCP接続を使用させることも可能です。これを行うには、/ etc / php5 / fpm / pool.d / www.conf ...
を開きます。nano /etc/php/7.0/fpm/pool.d/www.conf
...そしてリッスンラインを次のように見せます:
[...] ;listen = /var/run/php/php7.0-fpm.sock listen = 127.0.0.1:9000 [...]
これにより、PHP-FPMはIP 127.0.0.1(localhost)のポート9000でリッスンします。システムで使用されていないポートを使用していることを確認してください。
次に、PHP-FPMをリロードします:
systemctl reload php7.0-fpm.service
次に、Apache構成とすべてのvhostを確認し、FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock-pass-headerAuthorizationの行をFastCgiExternalServerに変更します。 / usr / lib / cgi-bin / php7-fcgi -host 127.0.0.1:9000 -pass-header Authorization、例:このように:
nano /etc/apache2/sites-available/000-default.conf
[...] <Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
<IfModule mod_fastcgi.c>
AddHandler php7-fcgi .php
Action php7-fcgi /php7-fcgi virtual
Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -host 127.0.0.1:9000 -pass-header Authorization
</IfModule> [...]
最後にApacheをリロードします:
systemctl reload apache2.service
9リンク
- Apache:http://httpd.apache.org/
- PHP:http://www.php.net/
- PHP-FPM:http://php-fpm.org/
- MySQL:http://www.mysql.com/
- Ubuntu:http://www.ubuntu.com/
- phpMyAdmin:http://www.phpmyadmin.net/