Drupalは、世界中で最も人気のあるオープンソースCMSプラットフォームの1つです。 PHPで記述されており、小規模な個人ブログから大規模な企業、政治、政府のサイトに至るまで、さまざまな種類のWebサイトを構築するために使用できます。
このチュートリアルでは、Ubuntu18.04マシンにDrupal8.6をインストールする方法を示します。 Drupalをインストールする方法は複数あります。このチュートリアルでは、drupal-projectと呼ばれるDrupalプロジェクトのコンポーザーテンプレートを使用してDrupal8.6をインストールするために必要な手順について説明します。
NginxをWebサーバーとして使用し、最新のPHP7.2とMySQL/MariaDBをデータベースサーバーとして使用します。
前提条件#
このチュートリアルを続行する前に、次の前提条件を満たしていることを確認してください。
- パブリックサーバーのIPを指すドメイン名があります。
example.com
を使用します 。 - 次の手順に従ってNginxをインストールしました。
- ドメインにSSL証明書がインストールされています。次の手順に従って、無料のLet’sEncryptSSL証明書をインストールできます。
始める前に#
パッケージインデックスとシステムパッケージを最新バージョンに更新します:
sudo apt update && sudo apt upgrade
1。 MySQLデータベースを作成する#
サーバーにMySQLまたはMariaDBがインストールされている場合は、この手順をスキップできます。インストールされていない場合は、次のように入力して、UbuntuのデフォルトリポジトリからMySQL5.7サーバーパッケージをインストールできます。
sudo apt install mysql-server
MySQLを新しくインストールする場合は、mysql_secure_installation
を実行することをお勧めします。 MySQLサーバーのセキュリティを向上させるコマンド。 次に、MySQLシェルにログインし、新しいデータベースとユーザーアカウントを作成して、ユーザーに適切な権限を付与する必要があります。
MySQLシェルにログインするには、次のコマンドを入力し、プロンプトが表示されたらパスワードを入力します。
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';
2。 PHPをインストールする#
Ubuntu18.04のデフォルトのPHPバージョンであるPHP7.2は完全にサポートされており、Drupal8.6で推奨されています。 NginxをWebサーバーとして使用するため、PHP-FPMもインストールします。
必要なすべてのPHPモジュールをインストールするには、次のコマンドを実行します。
sudo apt install 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 2018-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
3。 Composerをインストールします#
ComposerはPHPの依存関係マネージャーであり、これを使用してDrupalテンプレートをダウンロードし、必要なすべてのDrupalコンポーネントをインストールします。
composerをグローバルにインストールするには、curl
を使用してComposerインストーラーをダウンロードします。 ファイルを/usr/local/bin
に移動します ディレクトリ:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
コンポーザーのバージョンを印刷して、インストールを確認します。
composer --version
出力は次のようになります。
Composer version 1.6.5 2018-05-04 11:44:59
4。 Drupalをインストールする#
コンポーザーがインストールされたので、/var/www/my_drupal
内のコンポーザーテンプレートを使用して新しいDrupalプロジェクトを作成できます。 ディレクトリ:
sudo 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
Create a sites/default/files directory with chmod 0777
次のステップは、Drushを使用してDrupalをインストールすることです。以下のコマンドでは、ステップ1で作成したMySQLデータベースとユーザー情報を渡します。
cd /var/www/my_drupal
sudo vendor/bin/drush site-install --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) [yes]:
インストールが完了すると、スクリプトは管理者のユーザー名とパスワードを出力します。出力は次のようになります。
[notice] Starting Drupal installation. This takes a while. Consider using the --notify global option.
[success] Installation complete. User name: admin User password: XRkC9Q5WN9
最後に、Webサーバーがサイトのファイルとディレクトリに完全にアクセスできるように、適切なアクセス許可を設定する必要があります。 NginxとPHPの両方がwww-data
として実行されています ユーザーとwww-data
グループなので、次のコマンドを発行する必要があります:
sudo chown -R www-data: /var/www/my_drupal
5。 Nginxを構成する#
このチュートリアルの前提条件を確認しない場合は、これまでに、SSL証明書を使用したNginxがシステムにインストールされているはずです。
新しいDrupalプロジェクトの新しいサーバーブロックを作成するには、公式のNginxサイトのNginxレシピを使用します。
テキストエディタを開き、次のファイルを作成します。
sudo 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
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
root /var/www/my_drupal/web;
# SSL parameters
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
# log files
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ \..*/.*\.php$ {
return 403;
}
location ~ ^/sites/.*/private/ {
return 403;
}
# Block access to scripts in site files directory
location ~ ^/sites/[^/]+/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 ~ (^|/)\. {
return 403;
}
location / {
try_files $uri /index.php?$query_string;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1;
}
# Don't allow direct access to PHP files in the vendor directory.
location ~ /vendor/.*\.php$ {
deny all;
return 404;
}
location ~ '\.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
location ~ ^/sites/.*/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/ { # For Drupal >= 7
try_files $uri /index.php?$query_string;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
try_files $uri @rewrite;
expires max;
log_not_found off;
}
}
example.comをDrupalドメインに置き換え、SSL証明書ファイルへの正しいパスを設定することを忘れないでください。すべてのHTTPリクエストはHTTPSにリダイレクトされます。この構成で使用されるスニペットは、このガイドで作成されます。
sites-enabled
へのシンボリックリンクを作成して、サーバーブロックを有効にします ディレクトリ:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Nginxサービスを再起動する前に、構文エラーがないことを確認するためのテストを行います。
sudo nginx -t
エラーがない場合、出力は次のようになります。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
最後に、次のように入力してNginxサービスを再起動します。
sudo systemctl restart nginx
6。インストールをテストします#
ブラウザを開き、ドメインを入力すると、インストールが成功したと仮定して、次のような画面が表示されます。
管理者としてログインして、新しいDrupalインストールのカスタマイズを開始できます。
7。 Drupalモジュールとテーマをインストールする#
Drupalプロジェクトがインストールされたので、いくつかのモジュールとテーマをインストールする必要があります。 Drupalモジュールとテーマは、drupal-projectがすぐに構成できるカスタムcomposerリポジトリでホストされます。
モジュールまたはテーマをインストールするには、cd
するだけです。 プロジェクトディレクトリに移動し、「composer require drupal/module_or_theme_name
」と入力します。 。たとえば、Pathautomoduleをインストールする場合は、次のコマンドを実行する必要があります。
cd /var/www/my_drupal
sudo -u www-data composer require drupal/pathauto
sudo -u www-data
を先頭に追加する ユーザーwww-data
としてコマンドを実行しています Using version ^1.3 for drupal/pathauto
./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%)
- Installing drupal/ctools (3.2.0): Downloading (100%)
- Installing drupal/pathauto (1.3.0): Downloading (100%)
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating autoload files
> DrupalProject\composer\ScriptHandler::createRequiredFiles
上記の出力からわかるように、composerはすべてのパッケージ依存関係もインストールします。
8。 Drupalコアを更新する#
アップグレードする前に、ファイルとデータベースのバックアップを取ることをお勧めします。 Backup and Migratemoduleを使用するか、データベースとファイルを手動でバックアップすることができます。
インストールファイルをバックアップするには、もちろん、次のrsyncコマンドを使用できます。もちろん、インストールディレクトリへの正しいパスを使用する必要があります。
sudo rsync -a /var/www/my_drupal/ /var/www/my_drupal_$(date +%F)
データベースをバックアップするには、標準のmysqldump
を使用できます。 コマンド:
mysqldump -u root -p > /var/www/my_drupal_database_$(date +%F).sql
またはdrush sql-dump
:
cd /var/www/my_drupal
vendor/bin/drush sql-dump > /var/www/my_drupal_database_$(date +%F).sql
バックアップを作成したので、次のコマンドを実行して、すべてのDrupalコアファイルを続行および更新できます。
sudo -u www-data composer update drupal/core webflo/drupal-core-require-dev symfony/* --with-dependencies