Drupalは、コーディングの知識がなくてもWebサイトのコンテンツを構築、管理、および保守できるオープンソースのコンテンツ管理システムです。
選択できるコンテンツ管理ソリューションは多数ありますが、すべてのプロジェクトに適しているわけではありません。柔軟で強力なものを使用してWebサイトを構築または再構築したい場合は、Drupal以外の何物でもありません。
Drupal Webサイトを開発するためのWebホスティングをまだ持っていない場合は、ローカルのDebianマシンまたはVPSにインストールすることをお勧めします。
ここでは、Drupal with NginxとLet’sEncryptSSLをDebian11にインストールします。
前提条件
LEMPスタックのインストール
DrupalをインストールするためにDebianシステムにLEMPスタックをインストールするには、以下のリンクをたどってください。
Debian 11にEMP(Nginx、MariaDB、PHP)をインストールする
Drupal用のPHP拡張機能をインストールする
apt
を使用する Drupalインストール用のPHP拡張機能をインストールするコマンド。
sudo apt update sudo apt install -y php-mysql php-gd php-dom php-curl php-imagick php-zip php-xml php-mbstring php-json php-pdo php-cli php-apcu sudo apt install --no-install-recommends -y php-uploadprogress
Drupal用のNginx仮想ホストのセットアップ
Drupalインストール用の仮想ホストの作成から始めます。 Nginxのすべての仮想ホスト構成ファイルは/etc/nginx/conf.d
にあります。 ディレクトリ。
通常、仮想ホストファイルには、ドメイン名、ポート番号、ドキュメントルート、ログの場所、高速CGIなどが含まれます。
私は次のことを想定しています
ドメイン名: itzgeek.net、www.itzgeek.net
ポート番号: 80
ドキュメントルート: /usr/share/nginx/www.itzgeek.net/html
ログ: /usr/share/nginx/www.itzgeek.net/logs
まず、仮想ホスト構成ファイルを作成します。
sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf
次に、次のコンテンツを上記の構成ファイルに配置します。 server_name
を変更する必要があります 要件に応じて。
server { server_name itzgeek.net www.itzgeek.net; root /usr/share/nginx/www.itzgeek.net/html; index index.php index.html; access_log /usr/share/nginx/www.itzgeek.net/logs/access.log; error_log /usr/share/nginx/www.itzgeek.net/logs/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 ~* \.(txt|log)$ { deny all; } location ~ \..*/.*\.php$ { return 403; } location ~ ^/sites/.*/private/ { return 403; } # Block access to scripts in site files directory location ~ ^/sites/[^/]+/files/.*\.php$ { deny all; } # Allow "Well-Known URIs" as per RFC 5785 location ~* ^/.well-known/ { allow 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; # For Drupal >= 7 } location @rewrite { rewrite ^ /index.php; # For Drupal >= 7 } # Don't allow direct access to PHP files in the vendor directory. location ~ /vendor/.*\.php$ { deny all; return 404; } # Protect files and directories from prying eyes. location ~* \.(engine|inc|install|make|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\.(?!well-known).*|Entries.*|Repository|Root|Tag|Template|composer\.(json|lock)|web\.config)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig|\.save)$ { deny all; return 404; } location ~ '\.php$|^/update.php' { fastcgi_split_path_info ^(.+?\.php)(|/.*)$; try_files $fastcgi_script_name =404; include fastcgi_params; 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:/var/run/php/php7.4-fpm.sock; } location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { try_files $uri @rewrite; expires max; log_not_found off; } # Fighting with Styles? This little gem is amazing. 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; } # Enforce clean URLs # Removes index.php from urls like www.example.com/index.php/my-page --> www.example.com/my-page # Could be done with 301 for permanent or other redirect codes. if ($request_uri ~* "^(.*/)index\.php/(.*)") { return 307 $1$2; } }
DrupalファイルとNginxログを配置するためのディレクトリを作成します。
sudo mkdir -p /usr/share/nginx/www.itzgeek.net/html/ sudo mkdir -p /usr/share/nginx/www.itzgeek.net/logs/
以下のコマンドを使用して、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およびPHP-FPMサービスを再起動します。
sudo systemctl reload nginx php7.4-fpm
インストールLet'sEncryptSSL証明書
DNSレコードの作成
ドメインレジストラに移動し、ドメインのAおよびCNAME(wwwサブドメインを使用しない場合はオプション)レコードを作成します。
- www以外のドメイン名(例:itzgeek.net)>> A サーバーIPへのレコードポイント
- wwwドメイン名(例:www.itzgeek.net)>> CNAME itzgeek.netへの記録ポイント
このデモでは、DrupalのWebサイト(www.itzgeek.net)にアクセスできるように2つのレコードを作成します。
Certbotクライアントのインストール
Let’s Encrypt SSL証明書をNginxで生成してインストールするのに役立つCertbotクライアントが、Debianのスナップパッケージとして利用できるようになりました。したがって、最初に、システムにsnapdデーモンをインストールします。
sudo apt update sudo apt install -y snapd
次に、更新を最新バージョンにスナップします。
sudo snap install core && sudo snap refresh core
最後に、以下のコマンドを使用してCertbotクライアントをインストールします。
sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot
SSL証明書をインストールする
以下のコマンドを使用して、Let’sEncryptSSL証明書を生成してNginxWebサーバーにインストールします。
sudo certbot --nginx1.メールアドレスを入力 緊急の更新およびセキュリティ通知に関する通知を受け取るため
2。 Yと入力し、Enterキーを押します ACMEサーバーに登録するには
3。 YまたはNと入力します EFFのニュース、キャンペーン、ニュースレターに関するメールを受信する。
4。 CertbotはDrupalドメインを自動的に検出し、HTTPSをアクティブ化するように要求します DrupalWebサイト用。 1またはカンマで区切った適切な数字を入力します 複数のWebサイトがある場合。
Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: itzgeek.net 2: www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 1,2
SSLのインストールが完了するのを待ちます。これで、HTTPSを使用してWebサイトにアクセスできるようになります。
注: 今すぐWebサイトにアクセスすると、Drupalファイルをまだ配置していないため、403forbiddenエラーが発生します。
www以外のHTTPリクエストをNginxを使用してwwwHTTPSにリダイレクトする
www以外のHTTPサイトからWWWHTTPSサイト、つまりhttp://itzgeek.net>>https://www.itzgeek.netにトラフィックをリダイレクトするようにNginxサーバーを構成する必要があります。
SSL証明書の自動更新
Certbotクライアントには、systemdを介したSSL証明書の自動更新が含まれるようになりました。したがって、証明書を手動で更新する必要はありません。
NginxでDrupalをインストールする
Drupal用のデータベースを作成する
まず、MariaDB/MySQLデータベースサーバーにログインします。
sudo mysql -u root -p
次に、データベースのユーザーとパスワードとともにDrupalインストール用のデータベースを作成します。
CREATE DATABASE drupaldb; CREATE USER 'drupaluser'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON drupaldb.* TO 'drupaluser'@'localhost'; EXIT
Drupalパッケージをダウンロード
次のコマンドを使用して、Drupalインストーラーの最新バージョンをダウンロードします。
wget https://www.drupal.org/download-latest/tar.gz -O drupal-latest.tar.gz
次に、ダウンロードしたファイルを抽出します。
tar -zxvf drupal-latest.tar.gz
次に、ファイルをWebサイトのドキュメントルートディレクトリに移動します。
sudo mv drupal-*/* /usr/share/nginx/www.itzgeek.net/html/
DrupalWebサイトディレクトリの所有権とグループを更新します。
sudo chown -R www-data:www-data /usr/share/nginx/www.itzgeek.net/
DrupalCMSをインストールする
ブラウザを開き、Drupalドメインにアクセスして、Drupalのインストールを実行します。
https:// your-drupal-website1.言語を選択 DrupalのインストールとWebサイトについては、保存して続行をクリックします。
2.インストールプロファイルを選択します それがあなたに適しているので、保存して続行
をクリックします
3.データベース構成にDrupalデータベースの詳細を入力します ページをクリックし、[保存して続行]をクリックします
4.Drupalのインストールが完了するのを待ちます
5.サイトの構成が必要になります サイト情報、サイトメンテナンスアカウント、地域設定、更新通知を入力します 。最後に、[保存して続行
]をクリックします
6.完了すると、インストーラーはインストールを管理するためにDrupalバックエンドにリダイレクトします。または、 https:// your-drupal-website / user / login にアクセスして、Drupalバックエンドにアクセスすることもできます。
DrupalWebサイトにアクセス
これで、自分のドメイン名でサイトにアクセスできるようになります。
https:// your-drupal-website
Drupal CMSバックエンドのスクリーンショット:
インストール後、信頼できるホスト設定を有効にして、DrupalWebサイトをHTTPHOSTヘッダー攻撃から保護します。
結論
それで全部です。 DrupalをNginxでインストールし、Debian11にSSLを暗号化する方法を学んだことを願っています。