如何在 Ubuntu 16.04 上使用 Nginx、PHP-FPM 和 SSL 安装 Drupal 8.1如何在 Ubuntu 16.04 上使用 Nginx、PHP-FPM 和 SSL 安装 Drupal 8.1如何在 Ubuntu 16.04 上使用 Nginx、PHP-FPM 和 SSL 安装 Drupal 8.1如何在 Ubuntu 16.04 上使用 Nginx、PHP-FPM 和 SSL 安装 Drupal 8.1
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

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

如何在 Ubuntu 16.04 上使用 Nginx、PHP-FPM 和 SSL 安装 Drupal 8.1

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

  • Ubuntu 15.10(狡猾的狼人)

在此页

  1. 先决条件
  2. 第 1 步 - 更新 Ubuntu 系统
  3. 第 2 步 - 安装 Nginx 和 PHP-FPM
  4. 第 3 步 - 配置 Nginx 和 PHP-FPM
  5. 第 4 步 - 安装和配置 MariaDB
  6. 第 5 步 - 生成自签名 SSL 证书
  7. 第 6 步 - 为 Drupal 配置虚拟主机
  8. 第 7 步 - 安装和配置 Drupal
  9. 结论

Drupal 是一个著名的基于 PHP 的开源内容管理系统。它是免费提供的,并根据 GNU 通用公共许可证发布。 Drupal 可用于各种规模的网站,从大型国际网站到个人博客和公司或政府网站。 drupal的核心部分被命名为“Drupal Core”,它包含了基本的内容管理系统、用户管理、菜单管理、布局定制和系统管理。 Drupal Core 可以通过插件进行扩展,到目前为止,drupal 社区已经为 Drupal 提供了超过 31,000 个模块。

在本教程中,我们将安装带有 Nginx 网络服务器的 Drupal 8.1.10、作为数据库服务器的 MariaDB 10 以及用于处理 PHP 请求的 PHP-FPM (PHP 7.0)。我还将向您展示如何安装 SSL 证书来保护 Drupal 网站。

先决条件

  • Ubuntu 16.04 - 64 位版本。
  • 根特权。

第 1 步 - 更新 Ubuntu 系统

使用 ssh 登录到 ubuntu 服务器,然后成为 root 用户并更新 ubuntu 存储库:

sudo su
sudo apt-get update

第 2 步 - 安装 Nginx 和 PHP-FPM

Nginx 或 \engine-x\ 是一种快速的 HTTP 服务器,专注于高性能和低内存/RAM 使用率。我们也可以使用 Nginx 作为反向代理,用于 HTTP、HTTPS、POP3 和 IMAP 协议。在本教程中,我们将使用 Nginx 作为启用 SSL 的 HTTP 服务器。

以 sudo/root 用户身份使用以下 apt 命令安装 Nginx:

sudo apt-get install nginx -y

接下来,安装 php7.0-fpm 以及 drupal 核心所需的 php-gd 扩展:

sudo apt-get install php7.0-fpm php7.0-cli php7.0-gd php7.0-mysql php7.0-xml -y

在下一步中,我们将配置 Nginx。

第 3 步 - 配置 Nginx 和 PHP-FPM

在此步骤中,我们将配置 Nginx 以使用 php-fpm 为 PHP 页面提供 HTTP 请求。进入php-fpm目录“/etc/php/7.0/fpm”,编辑“php.ini”文件:

cd /etc/php/7.0/fpm/
vim php.ini

在第 761 行,取消注释 cgi.fix_pathinfo 行并将值更改为“0”。

cgi.fix_pathinfo=0

保存文件并退出编辑器。

现在我们修改默认的 Nginx 虚拟主机配置。编辑“默认”文件并启用 php-fpm 指令。

cd /etc/nginx/sites-available/
vim default

取消注释第 51 - 58 行以将 php-fpm 与 nginx 结合使用。

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
        #
        #       # With php7.0-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php7.0-fpm:
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

保存文件并退出。

然后使用命令\nginx -t\测试Nginx配置,确保其有效:

nginx -t

如果没有报错,重启nginx和php-fpm服务:

systemctl restart nginx
systemctl restart php7.0-fpm

接下来,通过在 Web 目录 \/var/www/html\ 中创建新的 php 信息文件来测试 php-fpm 是否与 nginx 一起正常工作。

cd /var/www/html/
echo "<?php phpinfo(); ?>" > info.php

在网络浏览器中访问服务器 IP 上的 info.php 文件(在我的例子中是 http://192.168.1.4/info.php)。结果应该类似于下面的屏幕截图。

第 4 步 - 安装和配置 MariaDB

MariaDB 是 MYSQL 关系数据库管理系统的数据库服务器分支,它提供了 MySQL 的直接替代功能。

使用 apt-get 命令安装最新版本的 MariaDB:

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

安装完成后,启动 MariaDB:

systemctl start mysql

MariaDB 服务名称是 \mysql\,这就是 systemctl 命令在这里使用 mysql 一词的原因。

现在我们将使用以下命令配置 MariaDB 用户名和密码:

mysql_secure_installation
mysql_secure_installation

Set root password? [Y/n] Y
New password:
Re-enter new password:

Remove anonymous users? [Y/n] Y
 ... Success!

Disallow root login remotely? [Y/n] Y
 ... Success!

Remove test database and access to it? [Y/n] Y
 ... Success!

Reload privilege tables now? [Y/n] Y
 ... Success!

使用您的密码登录到 MariaDB shell,并为 drupal 创建一个名为“drupaldb”的新数据库,并使用密码“[email ”创建新的 MariaDB/MySQL 用户“drupaluser”!

mysql -u root -p


create database drupaldb;
create user ';
flush privileges;
\q

已创建用户为 \drupaluser\ 的数据库 \drupaldb\。

第 5 步 - 生成自签名 SSL 证书

转到 /etc/nginx 目录并为 SSL 配置文件创建一个名为 \ssl\ 的新目录。

mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl

然后使用下面的 openssl 命令生成一个新的自签名 SSL 证书:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/drupal.key -out /etc/nginx/ssl/drupal.crt

填写要求的信息。 SSL证书文件已经生成,现在修改私钥文件“drupal.key”的权限为600:

chmod 600 drupal.key

第 6 步 - 为 Drupal 配置 VirtualHost

我们将Drupal 8 安装在目录\/var/www/drupal8\ 中,域名为\drupal8.me\。请将安装中的域名替换为您要使用此 drupal 安装的网站的域名。所以让我们创建目录:

mkdir -p /var/www/drupal8

然后进入Nginx虚拟主机目录\/etc/nginx/sites-available/\,用vim编辑器新建一个文件\drupal8\:

cd /etc/nginx/sites-available/
vim drupal8

将下面 drupal 的 Nginx 配置粘贴到文件 drupal8 中:

server {
    server_name drupal8.me;
    root /var/www/drupal8; ## <-- Your only path reference.

    listen 80;
    listen [::]:80;
    listen 443 default ssl;

    ssl_certificate      /etc/nginx/ssl/drupal.crt;
    ssl_certificate_key  /etc/nginx/ssl/drupal.key;

    # Redirect HTTP to HTTPS
    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # Very rarely should these ever be accessed outside of your lan
    location ~* \.(txt|log)$ {
        allow 192.168.0.0/16;
        deny all;
    }

    location ~ \..*/.*\.php$ {
        return 403;
    }

    location ~ ^/sites/.*/private/ {
        return 403;
    }

    # Block access to "hidden" files and directories whose names begin with a
    # period. This includes directories used by version control systems such
    # as Subversion or Git to store control files.
    location ~ (^|/)\. {
        return 403;
    }

    location / {
        # try_files $uri @rewrite; # For Drupal <= 6
        try_files $uri /index.php?$query_string; # For Drupal >= 7
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }

    # In Drupal 8, we must also match new paths where the '.php' appears in the middle,
    # such as update.php/selection. The rule we use is strict, and only allows this pattern
    # with the update.php front controller.  This allows legacy path aliases in the form of
    # blog/index.php/legacy-path to continue to route to Drupal nodes. If you do not have
    # any paths like that, then you might prefer to use a laxer rule, such as:
    #   location ~ \.php(/|$) {
    # The laxer rule will continue to work if Drupal uses this new URL pattern with front
    # controllers other than update.php in a future release.
    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        include fastcgi_params;
        include snippets/fastcgi-php.conf;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    # Fighting with Styles? This little gem is amazing.
    # location ~ ^/sites/.*/files/imagecache/ { # For Drupal <= 6
    location ~ ^/sites/.*/files/styles/ { # For Drpal >= 7
        try_files $uri @rewrite;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

保存文件并退出编辑器。

Drupal 虚拟主机文件已创建,现在我们必须通过在 \sites-enabled\ 目录中创建文件的符号链接来激活它:

ln -s /etc/nginx/sites-available/drupal8 /etc/nginx/sites-enabled/

测试 Nginx 配置并重启 Nginx:

nginx -t
systemctl restart nginx

第 7 步 - 安装和配置 Drupal

在开始安装 Drupal 之前,我们必须安装 git 和 drush。 Drush 是 Drupal 的命令行 shell 和 Unix 脚本接口。使用以下命令安装它:

sudo apt-get install git drush -y

然后进入我们之前创建的drupal8目录,用wget或者drush下载Drupal。我将在这里使用 wget:

cd /var/www/drupal8
wget https://ftp.drupal.org/files/projects/drupal-8.1.10.tar.gz

如果您想使用 drush,请改为运行以下命令:

drush dl drupal-8

等到下载完成,然后将所有 Drupal 文件移动到主目录:

tar -xzvf drupal-8.1.10.tar.gz
mv drupal-8.1.10/* .
rm -rf drupal-8.1.10

在下一步中,我们将配置 Drupal 设置文件。从 Drupal 主目录,转到 \sites/default\ 目录并复制两个配置文件 \settings.php\ 和 \services.yml\:

cd sites/default
cp default.settings.php settings.php
cp default.services.yml services.yml

然后我们必须在 \sites/default\ 目录中创建一个名为 \files\ 的新目录。 \chmod\ 命令确保配置文件和 \files\ 目录对于 Drupal 安装是可写的:

mkdir files/
chmod a+w *

现在使用网络浏览器访问您的 Drupal 站点(在我的例子中是http://drupal8.me),您将被自动重定向到 https 连接并显示 Drupal 安装程序页面。

请注意,本指南刚刚在命令中从 Drupal 8.1.8 更新到 8.1.10,以包含今天发布的 Drupal 最新安全补丁,屏幕截图仍显示 8.1.8 版本号,因为界面没有变化.您应该始终使用最新的稳定 Drupal 版本进行安装,并替换上面安装命令中的版本号。

选择您的语言,我将在这里使用“英语”。

点击“保存并继续”。

现在选择安装类型。您可以使用标准或最小类型。我将使用“标准”。

现在您将看到数据库配置页面。为我们为 Drupal 创建的数据库填写数据库详细信息。

等到安装完成。

现在我们必须配置站点配置文件设置,例如站点名称、用户和管理员密码、电子邮件地址等。

现在安装了 Drupal。您将被重定向到 Drupal 主页。

您可能会看到有关 drupal 配置文件 \settings.php\ 和 \services.yml\ 权限的错误消息。只需使用以下命令更改它们的权限:

cd sites/default/
chmod 644 settings.php services.yml

现在 Drupal 8.1 在 ubuntu 16.04 上安装了 Nginx 和 SSL。

结论

Drupal 是一个基于 PHP 的免费开源内容管理框架。它可用于个人博客、私人主页或公司网站。 Drupal 在 GNU-GPL 许可下发布。 Drupal 的主要组件称为“Drupal 核心”,到目前为止,Drupal 社区开发了超过 31,000 个模块来扩展它。当前的稳定版本是 8.1.10。 Drupal 易于安装和配置,我们可以使用 Nginx 或 Apache 作为 Web 服务器和 PHP-FPM 来处理 Drupal 服务器上的 PHP 请求。

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