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

Drupal是基于PHP的着名的开源内容管理系统。 它是免费的,根据GNU通用公共许可证发布。 Drupal可用于各种规模的网站,从巨大的国际网站到个人博客以及企业或政府网站。 drupal的核心部分被命名为“Drupal Core”,它包含基本内容管理系统,用户管理,菜单管理,布局定制和系统管理。 Drupal Core可以通过插件扩展,直到现在,drupal社区为Drupal提供了31.000多个模块。

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

先决条件

  • Ubuntu 16.04 - 64bit版本。
  • 根权限

第1步 - 更新Ubuntu系统

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

sudo su
sudo apt-get update

第2步 - 安装Nginx和PHP-FPM

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

使用以下apt命令作为sudo / root用户安装Nginx:

sudo apt-get install nginx -y

接下来,使用drupal core所需的php-gd扩展名安装php7.0-fpm:

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是否正常工作。

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

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

第4步 - 安装和配置MariaDB

MariaDB是MYSQL关系数据库管理系统的数据库服务器fork,它为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 ”的新数据库,并使用密码“ drupaluser @ ”创建新的MariaDB / MySQL用户“ drupaluser ”,然后最终向数据库授予用户权限。 请选择安全密码而不是“drupaluser @”进行安装!

mysql -u root -p


create database drupaldb;
create user drupaluser@localhost identified by 'drupaluser@';
grant all privileges on drupaldb.* to drupaluser@localhost identified by 'drupaluser@';
flush privileges;
\q

数据库“ drupaldb ”与用户“ drupaluser ”已创建。

第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步 - 配置VirtualHost for Drupal

我们将在“/ var / www / drupal8”目录中安装Drupal 8,域名为“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 *

现在,您可以使用Web浏览器访问您的Drupal站点(在我的情况下为http://drupal8.me) ,将自动重定向到https连接,并显示Drupal安装程序页面。

请注意,本指南刚刚从Drupal 8.1.8更新为8.1.10,其中包含了Drupal发布的最新安全补丁,截图仍然显示8.1.8版本号,因为界面没有更改。 您应该始终使用最新稳定的Drupal版本进行安装,并替换上述install命令中的版本号。

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

点击“保存并继续”

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

现在将显示数据库配置页面。 填写我们为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请求。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏