もっと詳しく

Drupal は非常に人気のあるオープンソースのコンテンツ管理システムであり、コーディングの知識がなくても、誰でもWebサイトのコンテンツを構築、管理、および保守できます。

多くの異なるコンテンツ管理ソリューションが利用可能ですが、すべてがすべてのプロジェクトに適しているわけではありません。 柔軟で強力なWebサイトを構築したい場合は、Drupalコンテンツ管理システムをご覧ください。

ここでは、Ubuntu22.04にNginxとLet’sEncryptSSLを使用してDrupalをインストールする方法を説明します。

セットアップ環境

LEMPスタックをインストールする

DrupalをインストールするためにDebianシステムにLEMPスタックをインストールするには、以下のリンクをたどってください。

Ubuntu 22.04に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用にPHPを構成する

デフォルトのPHP値はすべての人に適しているわけではなく、要件に基づいて変更する必要がある場合があります。 だから、更新します /etc/php/8.1/fpm/php.ini 要件に従ってファイルします。 以下の値から始めて、必要に応じて値を増減できます。

memory_limit = 256M

upload_max_filesize = 64M

post_max_size = 64M

realpath_cache_size = 256k

realpath_cache_ttl = 3600

sudo sed -i 's/^memory_limit = .*/memory_limit = 256M/g' /etc/php/8.1/fpm/php.ini

sudo sed -i 's/^upload_max_filesize = .*/upload_max_filesize = 64M/g' /etc/php/8.1/fpm/php.ini

sudo sed -i 's/^post_max_size = .*/post_max_size = 64M/g' /etc/php/8.1/fpm/php.ini

sudo sed -i 's/;realpath_cache_size = .*/realpath_cache_size = 256k/' /etc/php/8.1/fpm/php.ini

sudo sed -i 's/;realpath_cache_ttl = .*/realpath_cache_ttl = 3600/' /etc/php/8.1/fpm/php.ini

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
サーバーブロックファイル/etc/nginx/conf.d/www.itzgeek.net.conf

UbuntuリポジトリからNginxをインストールした場合は、サーバーブロック構成ファイルを作成する必要があります。 /etc/nginx/sites-available ディレクトリとWordPressファイルの下に /var/www/html ディレクトリ

まず、仮想ホスト構成ファイルを作成します。

sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf

次に、次のコンテンツを上記の構成ファイルに配置します。 ただし、変更する必要があります server_nameroot、 と fastcgi_pass あなたの要件に従って。

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/php8.1-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ファイルとログを配置するためのディレクトリを作成します。

sudo mkdir -p /usr/share/nginx/www.itzgeek.net/html/

sudo mkdir -p /usr/share/nginx/www.itzgeek.net/logs/

最後に、NginxおよびPHP-FPMサービスを再起動します。

sudo systemctl reload nginx php8.1-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クライアントをインストールします

The CertbotクライアントLet’s Encrypt SSL証明書をNginxで生成してインストールするのに役立つ、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.1。 メールアドレスを入力してください 緊急の更新およびセキュリティ通知に関する通知を受け取るため
2.タイプします Yキーを押してEnterキーを押します ACMEサーバーに登録するには
3.次のように入力します YまたはN EFFのニュース、キャンペーン、ニュースレターに関するメールを受信するため。
4. CertbotはDrupalドメインを自動的に検出し、次のように要求します HTTPSをアクティブ化 DrupalWebサイト用。 タイプ 1またはカンマで区切られた適切な数字 複数のウェブサイトがある場合。

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サイトからWWWWHTTPSサイト(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.1。 言語を選択 DrupalのインストールとWebサイトについては、をクリックします 保存して続行

2.2。 インストールプロファイルを選択します それはあなたに適しています、そしてクリックしてください 保存して続行

3.Drupalデータベースの詳細を データベース構成 ページをクリックしてからクリックします 保存して続行

4.Drupalのインストールが完了するのを待ちます

5.次のことを行う必要があります サイトを構成する 入力して サイト情報、サイトメンテナンスアカウント、リージョン設定、および更新通知。 最後に、をクリックします 保存して続行

6.完了すると、インストーラーはインストールを管理するためにDrupalバックエンドにリダイレクトします。 または、次のURLにアクセスしてDrupalバックエンドにアクセスすることもできます。 https:// your-drupal-website / user / login

DrupalWebサイトにアクセスする

これで、ドメイン名を使用してサイトにアクセスできるようになります。

https:// your-drupal-website

Drupalフロントエンド
Drupalフロントエンド

Drupal CMSバックエンドのスクリーンショット:

インストール後、有効にします 信頼できるホスト設定 DrupalWebサイトをHTTPHOSTヘッダー攻撃から保護します。

結論

それで全部です。 DrupalをNginxでインストールし、Let’sEncryptSSLをUbuntu22.04にインストールする方法を学んだことを願っています。

The post Nginxを使用してDrupalをインストールし、Ubuntu22.04でSSLを暗号化する方法 appeared first on Gamingsym Japan.