Drupal是全球最受欢迎的开源CMS平台之一。它是用PHP编写的,可用于构建各种类型的,从小型个人教程 到大型企业,政治和政府。
在本教程中,我们将向我们展示如何在Ubuntu 18.04计算机上安装Drupal 8.6.有多种安装Drupal的方法。本教程介绍了使用Composer模板为Drupal项目(称为drupal-project)安装Drupal 8.6的必要步骤。
我们将使用Nginx作为网络服务器,使用最新的PHP 7.2和MySQL/MariaDB作为数据库服务器。
在继续本教程之前,请确保我们已满足以下准备工作:
将软件包索引和系统软件包更新为最新版本:
sudo
apt update &&
apt upgrade
如果服务器上安装了MySQL或者MariaDB,则可以跳过此步骤;如果没有,则可以通过输入以下内容从Ubuntu的默认存储库中安装MySQL 5.7服务器软件包:
apt
install
mysql-server
对于全新的MySQL安装,建议运行“ mysql_secure_installation”命令以提高MySQL服务器的安全性。
现在,我们需要登录到MySQL Shell,并创建一个新的数据库和用户帐户,并为用户提供适当的授予权限。
要登录到MySQL Shell,请输入以下命令,并在出现提示时输入密码:
mysql -u root -p
要创建名为'drupal'的数据库,名为'drupaluser'的用户并向用户授予必要的权限,请运行以下命令:
CREATE DATABASE drupal CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON drupal.* TO
'drupaluser'
@
'localhost'
IDENTIFIED BY
'change-with-strong-password'
;
PHP 7.2是Ubuntu 18.04中的默认PHP版本,完全受支持,建议在Drupal 8.6中使用。
由于我们将Nginx用作网络服务器,因此我们还将安装PHP-FPM。
要安装所有必需的PHP模块,请运行以下命令:
php7.2-cli php7.2-fpm php7.2-mysql php7.2-json php7.2-opcache php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl
PHP-FPM服务将在安装过程完成后自动启动,我们可以通过打印服务状态来进行验证:
systemctl status php7.2-fpm
输出应指示fpm服务处于活动状态并且正在运行。
● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
Loaded: loaded (
/lib/systemd/system/php7
.2-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2016-05-19 19:54:13 UTC; 9h ago
Docs:
man
:php-fpm7.2(8)
Main PID: 17781 (php-fpm7.2)
Status:
"Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 507)
CGroup:
/system
.slice
/php7
.2-fpm.service
├─17781 php-fpm: master process (
/etc/php/7
.2
/fpm/php-fpm
.conf)
├─17796 php-fpm: pool www
└─17797 php-fpm: pool www
Composer是PHP的依赖管理器,我们将使用它来下载Drupal模板并安装所有必需的Drupal组件。
要全局安装composer,请使用“ curl”下载Composer安装程序,并将文件移至“/usr/local/bin”目录:
curl -sS https:
//getcomposer
.org
/installer
|
php -- --
-
dir
=
/usr/local/bin
--filename=composer
通过打印composer版本来验证安装:
composer --version
输出应如下所示:
Composer version 1.6.5 2016-05-04 11:44:59
现在我们已经安装了composer,我们可以继续使用'/var/www/my_drupal'目录中的composer模板来创建一个新的Drupal项目:
composer create-project drupal-composer
/drupal-project
:8.x-dev
/var/www/my_drupal
--stability dev --no-interaction
上面的命令将下载模板,获取所有必需的php软件包,并运行一些脚本来准备我们的项目以进行安装。该过程可能需要几分钟,如果成功,则输出结束应类似于以下内容:
Create a sites
/default/settings
.php
file
with
chmod
0666
/default/files
directory with
0777
下一步是使用Drush安装Drupal。在下面的命令中,我们传递在步骤1中创建的MySQL数据库和用户信息:
cd
/var/www/my_drupalsudo
vendor
/bin/drush
site-
--db-url=mysql:
//drupaluser
:change-with-strong-password@localhost
/drupal
安装程序将提示我们以下消息,只需按Enter即可继续。
You are about to DROP all tables
in
your
'drupal'
database. Do you want to
continue
? (
yes
/no
) [
]:
安装完成后,脚本将打印管理用户名和密码。输出应类似于以下内容:
[notice] Starting Drupal installation. This takes a
while
. Consider using the --notify global option.
[success] Installation complete. User name: admin User password: XRkC9Q5WN9
最后,我们需要设置正确的权限,以便网络服务器可以完全访问该的文件和目录。Nginx和PHP都以“ www-data”用户和“ www-data”组身份运行,因此我们需要发出以下命令:
chown
-R www-data:
到目前为止,如果没有检查本教程的准备工作,则应该已经在系统上安装了带有SSL证书的Nginx。
为了为我们新的Drupal项目创建一个新的服务器块,我们将使用Nginx官方站点上的Nginx配方。
打开文本编辑器并创建以下文件:
nano
/etc/nginx/sites-available/example
.com
/etc/nginx/sites-available/example.com
# Redirect HTTP -> HTTPS
server {
listen 80;
server_name www.example.com example.com;
include snippets
/letsencrypt
.conf;
return
301 https:
//example
.com$request_uri;
}
# Redirect WWW -> NON WWW
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate
/etc/letsencrypt/live/example
/fullchain
.pem;
ssl_certificate_key
/privkey
ssl_trusted_certificate
/chain
/ssl
server_name example.com;
root
/var/www/my_drupal/web
# SSL parameters
# log files
access_log
/var/log/nginx/example
.com.access.log;
error_log
.com.error.log;
location =
/favicon
.ico {
log_not_found off;
access_log off;
/robots
.txt {
allow all;
location ~ \..*/.*\.php${
403;
location ~ ^
/sites/
.*
/private/
{
# Block access to scripts in site files directory
[^/]+
/files/
.*\.php${
deny all;
# 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 ~ (^|/)\. {
location/{
try_files $uri
/index
.php?$query_string;
location @rewrite {
rewrite ^/(.*)$
.php?q=;
# Don't allow direct access to PHP files in the vendor directory.
location ~
/vendor/
404;
'\.php$|^/update.php'
fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
include fastcgi_params;
# Block httpoxy attacks. See https://httpoxy.org/.
fastcgi_param HTTP_PROXY
""
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param QUERY_STRING $query_string;
fastcgi_intercept_errors on;
fastcgi_pass unix:
/run/php/php7
.2-fpm.sock;
# Fighting with Styles? This little gem is amazing.
# location ~ ^/sites/.*/files/imagecache/{ # For Drupal <= 6
/files/styles/
# For Drupal >= 7
try_files $uri @rewrite;
# Handle private files through Drupal. Private file's path can come
# with a language prefix.
location ~ ^(/[a-z\-]+)?
/system/files/
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)${
expires max;
不要忘记用Drupal域替换example.com并为SSL证书文件设置正确的路径。所有HTTP请求都将重定向到HTTPS。
本教程中创建了此配置中使用的摘录。
通过创建指向'sites-enabled'目录的符号链接来启用服务器块:
ln
-s
/etc/nginx/sites-enabled/
在重新启动Nginx服务之前,请进行测试以确保没有语法错误:
nginx -t
如果没有错误,则输出应如下所示:
nginx: the configuration
/etc/nginx/nginx
.conf syntax is ok
nginx: configuration
.conf
test
is successful
最后,通过键入以下命令重新启动Nginx服务:
systemctl restart nginx
打开浏览器,键入域,并假设安装成功,将出现类似于以下的屏幕:
我们可以以管理员身份登录并开始自定义新的Drupal安装。
现在,我们已经安装了Drupal项目,我们将需要安装一些模块和主题。Drupal模块和主题托管在一个自定义的Composer信息库中,Drupal-project可以直接为我们进行配置。
要安装模块或者主题,我们所需要做的就是将其“ cd”到项目目录,然后键入“ composer require drupal/module_or_theme_name”。例如,如果要安装Pathauto模块,则需要运行以下命令:
-u www-data composer require drupal
/pathauto
通过在前面加上“ sudo -u www-data”,我们以用户“ www-data”的身份运行命令
Using version ^1.3
for
drupal
.
/composer
.json has been updated
> DrupalProject\composer\ScriptHandler::checkComposerVersion
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 3 installs, 0 updates, 0 removals
- Installing drupal
/token
(1.5.0): Downloading (100%)
/ctools
(3.2.0): Downloading (100%)
(1.3.0): Downloading (100%)
Package phpunit
/phpunit-mock-objects
is abandoned, you should avoid using it. No replacement was suggested.
Writing lock
Generating autoload files
> DrupalProject\composer\ScriptHandler::createRequiredFiles
从上面的输出中可以看到,composer还为我们安装了所有软件包依赖项。
升级之前,最好备份文件和数据库。我们可以使用“备份和迁移”模块,也可以手动备份数据库和文件。
要备份安装文件,我们可以使用以下rsync命令,当然,我们需要使用正确的安装目录路径:
rsync
-a
/var/www/my_drupal/
/var/www/my_drupal_
$(
date
+%F)
要备份数据库,我们可以使用标准的“ mysqldump”命令:
mysqldump -u root -p >
/var/www/my_drupal_database_
+%F).sql
或者'drush sql-dump':
/var/www/my_drupalvendor/bin/drush
sql-dump >
现在我们已经创建了备份,我们可以通过运行以下命令继续并更新所有Drupal核心文件:
-u www-data composer update drupal
/core
webflo
/drupal-core-require-dev
symfony/* --with-dependencies
原文链接:https://codingdict.com/