GNU/Linux >> Linux の 問題 >  >> Debian

Nginxを使用してDrupalをインストールし、Debian11にSSLを暗号化する方法

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サブドメインを使用しない場合はオプション)レコードを作成します。

  1. www以外のドメイン名(例:itzgeek.net)>> A サーバーIPへのレコードポイント
  2. 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 --nginx
1.メールアドレスを入力 緊急の更新およびセキュリティ通知に関する通知を受け取るため
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-website

1.言語を選択 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を暗号化する方法を学んだことを願っています。


Debian
  1. Ubuntu 15.10にNginx、PHP-FPM、SSLを使用してDrupal8をインストールする方法

  2. Lets Encrypt and Secure Nginx with SSL/TLSをDebian9にインストールする

  3. Nginxを使用してUbuntu18.04にLet'sEncryptSSLをインストールする方法

  1. Nginxを使用してDrupalをインストールし、Ubuntu20.04LTSでSSLを暗号化する方法

  2. Drupal 9をNginxでインストールし、Debian10でSSLを暗号化する方法

  3. DrupalをApacheでインストールし、Debian11でSSLを暗号化する方法

  1. Debian11にNginxとSSLを使用してAbanteCartをインストールする方法

  2. Nginxと無料でDiscourseForumをインストールする方法Debian11でSSLを暗号化する

  3. Debian11にNginxとSSLを使用してEtherpadをインストールする方法