如何在 Ubuntu 22.04 LTS 上安装 Drupal with Docker。

Drupal是一个开源平台,用于构建令人惊叹的数字体验。它是由一个专门的社区制作的。Drupal使用模块化架构,允许开发人员通过安装和配置模块向核心系统添加功能。Drupal有数千个模块可用,它们提供了广泛的功能,例如电子商务,论坛和社交媒体集成。drupal-logo

Ubuntu 22.04 LTS Jammy Jellyfish 上安装 Drupal with Docker(Docker)

第 1 步。首先,通过在终端中运行以下命令,确保所有系统软件包都是最新的。apt

sudo apt update
sudo apt upgrade

第 2 步。安装 Docker。

默认情况下,Docker 在 Ubuntu 22.04 基础存储库上不可用。现在运行以下命令将 Docker 存储库添加到系统中:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list

接下来,将 GPG 密钥导入您的系统:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

启用存储库后,现在使用以下命令安装最新版本的 Docker 包:

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

您可以验证 Docker 是否已安装以及当前版本:

docker -v

成功安装后,启用 Docker(在系统启动时自动启动)、启动并使用以下命令验证状态:

sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker

默认情况下,Docker 需要根权限。如果要避免在每次运行命令时使用,请将用户名添加到组中:sudodockerdocker

sudo usermod -aG docker $(whoami)
su - ${USER}

确认您的用户已添加到 Docker 组:

groups

有关安装和管理 Docker 的其他资源,请阅读下面的帖子:

  • 如何在 Ubuntu Linux √ 上安装 Docker。

第 3 步。为 Drupal 创建 Docker Compose 文件。

首先,为 Drupal 配置创建一个目录:

mkdir ~/drupal
cd ~/drupal

现在我们使用您喜欢的文本编辑器创建并打开 Docker 撰写文件:

nano docker-compose.yml

添加以下文件:

services:
  mysql:
    image: mysql:8.0
    container_name: mysql
    restart: unless-stopped
    env_file: .env
    volumes:
      - db-data:/var/lib/mysql
    networks:
      - internal
  
  drupal:
    image: drupal:10-fpm-alpine
    container_name: drupal
    depends_on:
      - mysql
    restart: unless-stopped
    networks:
      - internal
      - external
    volumes:
      - drupal-data:/var/www/html
  
  webserver:
    image: nginx:1.22.1-alpine
    container_name: webserver
    depends_on:
      - drupal
    restart: unless-stopped
    ports:
      - 80:80
    volumes:
      - drupal-data:/var/www/html
      - ./nginx-conf:/etc/nginx/conf.d
      - certbot-etc:/etc/letsencrypt
    networks:
      - external
  
  certbot:
    depends_on:
      - webserver
    image: certbot/certbot
    container_name: certbot
    volumes:
      - certbot-etc:/etc/letsencrypt
      - drupal-data:/var/www/html
    command: certonly --webroot --webroot-path=/var/www/html --email admin@your-domain --agree-tos --no-eff-email --staging -d your-domain.com -d www.your-domain.com

networks:
  external:
    driver: bridge
  internal:
    driver: bridge

volumes:
  drupal-data:
  db-data:
  certbot-etc:

保存并关闭文件。

第 4 步。为 nginx 配置 Docker Compose。

首先,我们为 Nginx 配置创建目录:

mkdir nginx-conf

接下来,使用您喜欢的文本编辑器创建并打开 Nginx 文件:

nano nginx-conf/drupal.conf

添加以下文件:

server {
    listen 80;
    listen [::]:80;

    server_name your-domain.com;

    index index.php index.html index.htm;

    root /var/www/html;

    location ~ /.well-known/acme-challenge {
        allow all;
        root /var/www/html;
    }

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    rewrite ^/core/authorize.php/core/authorize.php(.*)$ /core/authorize.php$1;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass drupal:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    location ~ /\.ht {
        deny all;
    }

    location = /favicon.ico { 
        log_not_found off; access_log off; 
    }
    location = /robots.txt { 
        log_not_found off; access_log off; allow all; 
    }
    location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
        expires max;
        log_not_found off;
    }
}

完成后,保存并关闭文件。

第5步。配置 Docker for SSL。

在生成 SSL 证书之前,我们使用以下命令启动容器:

docker compose up -d

接下来,使用以下命令打开 docker 撰写文件:

nano docker-compose.yml

替换 Certbot 服务部分中的标志并将其替换为标志:--staging--force-renewal

certbot:
    depends_on:
      - webserver
    image: certbot/certbot
    container_name: certbot
    volumes:
      - certbot-etc:/etc/letsencrypt
      - drupal-data:/var/www/html
    command: certonly --webroot --webroot-path=/var/www/html --email admin@your-domain.com --agree-tos --no-eff-email --staple-ocsp --force-renewal -d your-domain.com

保存并关闭文件,然后再次运行命令以重新创建 Certbot 容器:docker compose up

docker compose up --force-recreate --no-deps certbot

第 6 步。为 SSL 配置 Nginx。

首先,我们使用以下命令停止 Nginx 服务器:

docker stop webserver

接下来,为 SSL 配置创建一个新的 Nginx 文件:

nano nginx-conf/drupal-ssl.conf

添加以下文件:

server {
    listen 80;
    listen [::]:80;

    server_name your-domain.com;

    location ~ /.well-known/acme-challenge {
        allow all;
        root /var/www/html;
    }

    location / {
        rewrite ^ https://$host$request_uri? permanent;
    }
}
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name your-domain.com;

    index index.php index.html index.htm;

    root /var/www/html;

    server_tokens off;

    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/your-domain.com/chain.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_ecdh_curve secp384r1;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    # OCSP stapling
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;

    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Referrer-Policy "no-referrer-when-downgrade" always;
    add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    rewrite ^/core/authorize.php/core/authorize.php(.*)$ /core/authorize.php$1;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass drupal:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    location ~ /\.ht {
        deny all;
    }

    location = /favicon.ico {
        log_not_found off; access_log off;
    }
    location = /robots.txt {
        log_not_found off; access_log off; allow all;
    }
    location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
        expires max;
        log_not_found off;
    }
}

保存并关闭文件,然后确保 Nginx 容器侦听端口 443:

nano docker-compose.yml

按照配置:

webserver:
    image: nginx:1.22.1-alpine
    container_name: webserver
    depends_on:
      - drupal
    restart: unless-stopped
    ports:
      - 80:80
      - 443:443
    volumes:
      - drupal-data:/var/www/html
      - ./nginx-conf:/etc/nginx/conf.d
      - certbot-etc:/etc/letsencrypt
      - /etc/ssl/certs/dhparam.pem:/etc/ssl/certs/dhparam.pem
    networks:
      - external

保存并关闭该文件,然后使用以下命令删除较旧的 HTTP 配置文件:

rm nginx-conf/drupal.conf

接下来,生成一个我们已经在上面配置的 Diffie-Hellman 组证书:

sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

最后,重新创建 Nginx 容器:

docker compose up -d --force-recreate --no-deps webserver

步骤 7.配置防火墙。

现在我们使用Drupal设置了一个简单防火墙(UFW),以允许在默认Web端口80和443上进行公共访问:

sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw enable

第8步。访问Drupal Web界面。

现在打开您的Web浏览器并使用URL访问Drupal Web UI。您将被重定向到以下页面:https://your-domain.com

drupal-interface-install

感谢您使用本教程在 Ubuntu 系统上安装 Drupal with Docker。有关其他帮助或有用信息,我们建议您查看Drupal官方网站

原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun224552.html

(0)
打赏 微信扫一扫不于多少! 微信扫一扫不于多少! 支付宝扫一扫礼轻情意重 支付宝扫一扫礼轻情意重
上一篇 2023年3月11日 上午10:35
下一篇 2023年3月11日 上午10:49

相关推荐

  • 如何在 Ubuntu 22.04 LTS 上安装 CockroachDB

    CockroachDB因其弹性而受到青睐,因为它提供了强大的一致性,并且可以在硬件或网络故障中幸存下来。它特别适合需要高可用性和低延迟数据访问的应用程序。 在 Ubuntu 22.…

    Linux命令 2023年10月14日
  • 如何在 Ubuntu 22.04 LTS 上安装 Streama

    在不断发展的媒体流世界中,Streama 作为托管您自己的媒体库的多功能开源解决方案脱颖而出。通过自托管 Streama,您可以完全控制您的内容,并可以在自己的服务器上舒适地欣赏流…

    Linux命令 2023年10月8日
  • 如何在 Ubuntu 22.04 LTS 上安装 Apache Kafka

    Apache Kafka以其有效处理实时数据流的能力而闻名。它是日志聚合、数据管道和事件驱动应用程序等方案的完美选择。 在 Ubuntu 22.04 LTS Jammy Jelly…

    Linux命令 2023年9月27日
  • 如何在 Ubuntu 22.04 LTS 上安装 GlusterFS

    GlusterFS是一个分布式文件系统,旨在高效可靠地处理大量数据。它通过在多个存储服务器上分布数据来实现这一目标,从而创建一个统一且可扩展的存储池。无论您需要高可用性解决方案、分…

    Linux命令 2023年9月22日
  • 如何在 Ubuntu 22.04 LTS 上安装 Lazygit

    在快节奏的软件开发世界中,高效的版本控制至关重要。Git 凭借其强大的功能,已成为跟踪项目更改的事实标准。但对于寻求一种更加用户友好的方式来与 Git 存储库交互的新手甚至经验丰富…

    Linux命令 2023年9月20日
  • 如何在 Ubuntu 22.04 LTS 上安装 WebERP

    WebERP是一个强大的开源基于Web的会计和业务管理系统,可以为各种规模的企业简化财务和运营流程。 在 Ubuntu 22.04 LTS Jammy Jellyfish 上安装 …

    Linux命令 2023年9月18日
  • 如何在 Ubuntu 22.04 LTS 上安装 Vtiger CRM

    客户关系管理 (CRM) 系统是各种规模企业必不可少的工具。Vtiger CRM作为一种多功能的开源CRM解决方案脱颖而出,可以帮助您简化运营,增强沟通并最终提高利润。 在 Ubu…

    Linux命令 2023年9月18日
  • 如何在 Ubuntu 22.04 LTS 上安装 WezTerm

    在 Linux 世界中,拥有一个功能强大且用途广泛的终端仿真器可以极大地增强您的工作流程和生产力。一个这样杰出的终端模拟器是WezTerm。它为您的命令行任务提供了一个功能丰富的现…

    Linux命令 2023年9月14日
  • 如何在 Ubuntu 22.04 LTS 上安装 Certbot

    在当今的数字时代,确保网站的安全性至关重要。网络安全的一个基本方面是使用SSL / TLS证书来加密您的网站与其访问者之间传输的数据。Certbot是一个免费的开源工具,简化了获取…

    Linux命令 2023年9月7日
  • 如何在 Ubuntu 22.04 LTS 上安装 CyberPanel

    在不断发展的SEO环境中,网站性能在决定搜索引擎排名方面起着关键作用。CyberPanel 是一个尖端的控制面板,提供了一套全面的工具来优化您的网站在 Ubuntu 22.04 L…

    Linux命令 2023年9月6日
  • 如何在 Ubuntu 22.04 LTS 上安装 Bauh

    Bauh 是一个适用于 Linux 的多功能应用程序管理器,它弥合了多个包管理器之间的差距,使其成为管理软件的强大而高效的工具。在本指南结束时,您将掌握利用 Bauh 的潜力满足您…

    Linux命令 2023年9月6日
  • 如何在 Ubuntu 22.04 LTS 上安装 Kotlin

    Kotlin 作为一种现代编程语言迅速崛起,它提供了增强的表现力、简洁性和安全性,使其成为各种软件项目的热门选择。作为使用 Ubuntu 22.04 的开发人员,将 Kotlin …

    Linux命令 2023年9月6日
  • 如何在 Ubuntu 22.04 LTS 上安装 FreeIPA

    FreeIPA 是一个开源身份管理系统,为 Linux/UNIX 系统、服务和应用程序提供集中的身份验证、授权和帐户信息。它建立在众所周知的开源组件之上,如LDAP,Kerbero…

    2023年4月1日
  • 如何在 Ubuntu 22.04 LTS 上安装 Tasksel

    Tasksel是一个功能强大的实用程序,可以简化Ubuntu系统管理员的软件包管理。使用Tasksel,用户可以轻松地将多个相关软件包安装为一个单元。Tasksel 按功能对软件包…

    2023年3月31日
  • 如何在 Ubuntu 22.04 LTS 上安装 Pi-Hole

    Pi-hole是一个强大的工具,它提供了一种简单有效的方法来阻止网络级别的广告和互联网跟踪器,从而带来更快,更干净,更私密的互联网浏览体验。 在 Ubuntu 22.04 LTS …

    2023年3月30日
  • 如何在 Ubuntu 22.04 LTS 上安装 Rancher

    Rancher是一个流行的开源容器管理平台,用于部署和管理Kubernetes集群,Docker容器和其他容器化技术。它提供了一个集中式用户界面,用于管理容器化应用程序、扩展资源和…

    Linux命令 2023年3月28日
  • 如何在 Ubuntu 22.04 LTS 上安装 MyPaint

    MyPaint是一款免费的开源图形应用程序,专为数字绘画和绘图而设计。它提供了各种画笔和工具来创建复杂的设计和插图,并以其用户友好的界面和可自定义的功能而闻名。MyPaint最初是…

    Linux命令 2023年3月27日
  • 如何在 Ubuntu 22.04 LTS 上安装 ProcessWire

    ProcessWire是一个免费的开源内容管理系统(CMS),以其灵活性,可扩展性和安全性而闻名。它旨在使开发人员能够轻松构建和管理任何复杂的网站,从小型个人博客到大型企业网站。它…

    Linux命令 2023年3月27日
  • 如何在 Ubuntu 22.04 LTS 上安装 Mixxx

    Mixxx 是一款免费的开源 DJ 软件,可让您混合音乐曲目并创建专业品质的 DJ 集。它支持各种音频格式,包括 MP3、OGG、FLAC 和 WAV。Mixxx DJ具有用户友好…

    Linux命令 2023年3月26日
  • 如何在 Ubuntu 22.04 LTS 上安装 KubeSphere

    KubeSphere 是一个企业级容器平台,使用户能够在 Kubernetes 上部署、管理和扩展容器化应用程序。它为管理 Kubernetes 集群提供了统一的界面,并简化了开发…

    2023年3月24日
  • 如何在 Ubuntu 22.04 LTS 上安装 Geeqie

    Geeqie是一个快速,轻量级,功能丰富的Linux系统图像查看器和组织者。它对各种图像格式和元数据的支持使其成为需要快速轻松地查看和组织图像的摄影师和其他用户的绝佳工具。易于安装…

    2023年3月24日
  • 如何在 Ubuntu 22.04 LTS 上安装 Avidemux

    Avidemux 是一款免费的开源视频编辑软件,可用于 Windows、macOS 和 Linux 操作系统。它专为简单的视频编辑任务而设计,例如剪切、过滤和编码。该软件以其用户友…

    Linux命令 2023年3月22日
  • 如何在 Ubuntu 22.04 LTS 上安装 YOURLS

    YOURLS代表您自己的URL缩短器,这是一个免费的开源PHP脚本,可让您创建自定义URL缩短服务。它允许您创建简短和自定义的URL,跟踪点击统计信息并控制您的数据。 在 Ubun…

    2023年3月22日
  • 如何在 Ubuntu 22.04 LTS 上安装 Smartctl

    Smartctl 是一个命令行工具,允许用户监控存储设备(如硬盘驱动器、固态驱动器和 USB 驱动器)的运行状况和性能。该工具的开发是为了与内置于许多存储设备中的自我监控、分析和报…

    2023年3月20日
  • 如何在 Ubuntu 22.04 LTS 上安装 Xfce 桌面

    Xfce 是一个基于 GTK+ 工具包的轻量级开源桌面环境。它被设计为快速、稳定且易于使用,使其成为 Linux 用户的热门选择。虽然 Ubuntu 的默认桌面环境是 GNOME,…

    2023年3月18日