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_name
、 root
、 と 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サブドメインを使用する場合はオプション)レコードを作成します。
- www以外のドメイン名(例:itzgeek.net)>> A サーバーIPへのレコードポイント
- 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 CMSバックエンドのスクリーンショット:
インストール後、有効にします 信頼できるホスト設定 DrupalWebサイトをHTTPHOSTヘッダー攻撃から保護します。
結論
それで全部です。 DrupalをNginxでインストールし、Let’sEncryptSSLをUbuntu22.04にインストールする方法を学んだことを願っています。
The post Nginxを使用してDrupalをインストールし、Ubuntu22.04でSSLを暗号化する方法 appeared first on Gamingsym Japan.