在 Ubuntu 16.04 上使用 PHP-FPM 和 Apache在 Ubuntu 16.04 上使用 PHP-FPM 和 Apache在 Ubuntu 16.04 上使用 PHP-FPM 和 Apache在 Ubuntu 16.04 上使用 PHP-FPM 和 Apache
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

在 Ubuntu 16.04 上使用 PHP-FPM 和 Apache

本教程适用于这些操作系统版本

  • Ubuntu 16.04(Xenial Xerus)
  • Ubuntu 11.10(Oneiric Ocelot)

在此页

  1. 1 条初步说明
  2. 2 安装 MySQL 或 MariaDB
    1. 2.1 安装MySQL 5.7
    2. 2.2 安装MariaDB

    本教程展示了如何在支持 PHP 7(通过 PHP-FPM)和 MySQL 的 Ubuntu 16.04 服务器上安装 Apache 网络服务器。 PHP-FPM(FastCGI 进程管理器)是一种替代的 PHP FastCGI 实现,具有一些对任何规模的站点都非常有用的附加功能,尤其是繁忙的站点。

    1 初步说明

    在本教程中,我将使用 IP 地址为 192.168.1.100 的主机名 server1.example.com。这些设置可能因您而异,因此您必须在适当的地方替换它们。

    我以 root 权限运行本教程中的所有步骤,因此请确保您以 root 身份登录:

    sudo su

    2 安装 MySQL 或 MariaDB

    Ubuntu 提供了 MySQL 和 MariaDB 包。 MariaDB 是由原始 MySQL 开发人员 Monty Widenius 提供的 MySQL 分支。按照第 2.1 或 2.2 章安装数据库服务器。

    2.1 安装MySQL 5.7

    首先,我们像这样安装 MySQL 5.7:

    apt-get -y install mysql-server mysql-client

    系统将要求您提供 MySQL root 用户的密码 - 此密码对用户 [email 有效,因此我们以后不必手动指定 MySQL root 密码:

    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.2 安装MariaDB

    运行以下命令来安装 MariaDB 服务器和客户端:

    apt-get -y install mariadb-server mariadb-client

    现在我们为 MariaDB 设置一个 root 密码。

    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

    3 安装阿帕奇

    Apache 2.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 目录的子目录中,例如 /etc/apache2/mods-enabled(用于 Apache 模块)、/etc/apache2/sites-enabled(用于虚拟主机)和 /etc/apache2/conf .d.

    4 安装 PHP 7

    我们可以通过 PHP-FPM 和我们安装的 Apaches mod_fastcgi 模块使 PHP 7 在 Apache2 中工作,如下所示:

    apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.0

    PHP-FPM 是一个守护进程(带有 systemd 单元 php7.0-fpm.service),它在套接字 /var/run/php/php7.0-fpm.sock 上运行 FastCGI 服务器。

    接下来,启用以下 Apache 模块...

    a2enmod actions fastcgi alias

    ...并重新启动 Apache:

    systemctl restart apache2.service

    5 配置阿帕奇

    为了使 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>

    你可以把它放在全局 Apache 配置中(所以它对所有虚拟主机都启用),例如 /etc/apache2/conf.d/php7.0-fpm.conf (这个文件不存在,所以你必须创建它) ,或者你可以将它放在每个应该使用 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 正在运行,并且它通过 FPM/FastCGI 运行,如服务器 API 行所示。如果进一步向下滚动,您将看到所有已在 PHP 中启用的模块。那里没有列出 MySQL,这意味着我们还没有在 PHP 中支持 MySQL。

    请注意:如果您安装了 PHP 7 apache 模块 (mod_php),这可能会发生,例如当您从 ISP 的 LAMP 服务器设置开始,而不是像我在本教程中那样使用空服务器时,您可能必须禁用 mod_php,如下所示。

    a2dismod php7.0

    并重新启动apache:

    systemctl restart apache2.service

    6 在 PHP 7 中获得 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 php我的管理员

    phpMyAdmin 是一个 Web 界面,您可以通过它管理 MySQL 数据库。安装它是个好主意:

    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-FPM over TCP 的配置。我将把它作为配置示例展示,并且可能有您需要的设置,例如当 fastcgi 进程在第二台服务器上运行时,但通常使用套接字会更快。所以你可能想跳过这一章。

    默认情况下,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 行如下所示:

    [...]
    ;listen = /var/run/php/php7.0-fpm.sock
    listen = 127.0.0.1:9000
    [...]

    这将使 PHP-FPM 侦听 IP 127.0.0.1(本地主机)上的端口 9000。确保您使用的端口未在您的系统上使用。

    然后重新加载 PHP-FPM:

    systemctl reload php7.0-fpm.service

    接下来检查您的 Apache 配置和所有虚拟主机并将行 FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization 更改为 FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -host 127.0.0.1:9000 -pass-header 授权,例如像这样:

    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个链接

    • 阿帕奇: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/

©2015-2025 艾丽卡 support@alaica.com