본문 바로가기
프로그램 활용/웹서버

docker drupal8 postgresql 구축

by 3604 2023. 7. 27.
728x90

출처: 2018/10/24:Drupal8 | 个人技术分享 (proteanbear.xyz)

导航
一、镜像运行Drupal8
1、目录分配
2、docker-compose.yml
二、Drupal8安装
1、选择语言
2、选择安装方式
3、检查安装需求
4、设置数据库
5、安装网站
6、安装翻译
7、设置网站
8、完成翻译
9、收尾(恢复安全权限)
三、修改配置
附:纯净版
↑ 回到顶部

 

Drupal8

2018/10/24:Drupal8

 
  ProteanBear 发表于 2018年10月25日

一、镜像运行Drupal8

1、目录分配

虽然网站使用容器运行服务,但是数据还是保存在单独的目录中比较好。网站目录分配如下

  • ~/proteanbear.xyz:域名下内容
  • ~/proteanbear.xyz/blog:个人博客
  • ~/proteanbear.xyz/blog/drupal:Drupal内容
  • ~/proteanbear.xyz/blog/drupal/storage:存储
  • ~/proteanbear.xyz/blog/drupal/storage/modules:模块
  • ~/proteanbear.xyz/blog/drupal/storage/profiles:配置
  • ~/proteanbear.xyz/blog/drupal/storage/themes:主题
  • ~/proteanbear.xyz/blog/drupal/storage/sites:网站
  • ~/proteanbear.xyz/blog/drupal/storage/sites/default:默认站点
  • ~/proteanbear.xyz/blog/drupal/storage/data:数据文件
  • ~/proteanbear.xyz/blog/drupal/storage/pg_data:PostgreSQL数据库文件

2、docker-compose.yml

编写docker-compose.yml配置,可以直接运行多个容器服务。 搭建两个容器分别运行数据库(PostgreSQL)和Drupal(Apache+PHP7.2)服务,配置内容如下:

  # Blog building with Drupal8+PostgreSQL.
  # Access via 'https://proteanbear.xyz/'

  version: "3.1"

  services:
      drupal:
      image: drupal:8-apache
      ports:
          - 8000:80
      volumes:
          - ./storage/modules:/var/www/html/modules
          - ./storage/profiles:/var/www/html/profiles
          - ./storage/themes:/var/www/html/themes
          - ./storage/sites:/var/www/html/sites
      restart: always
      postgre:
          image: postgres:10
          environment:
              POSTGRES_PASSWORD: 数据库密码
              PGDATA: /var/lib/postgresql/data/pgdata
              restart: always
              volumes:
                  - ./storage/data/pg_data:/var/lib/postgresql/data/pgdata
复制

关于version,需根据docker的版本不同对应不同的版本,参见如下(也可查看官方文档):

  • 3.7:18.06.0+
  • 3.6:18.02.0+
  • 3.5:17.12.0+
  • 3.4:17.09.0+
  • 3.3:17.06.0+
  • 3.2:17.04.0+
  • 3.1:1.13.1+
  • 3.0:1.13.0+
  • 2.4:17.12.0+
  • 2.3:17.06.0+
  • 2.2:1.13.0+
  • 2.1:1.12.0+
  • 2.0:1.10.0+
  • 1.0:1.9.1.+

使用docker -v查看当前docker版本后,填写对应的version

关于ports:先设置为8000,等备案通过后更改为80

关于restart:默认值为 no ,即在任何情况下都不会重新启动容器;当值为 always 时,容器总是重新启动;当值为 on-failure 时,当出现 on-failure 报错容器退出时,容器重新启动。

然后在~/proteanbear.xyz/blog/drupal下运行:

  $ docker-compose up
复制

开启服务。

常用命令 docker-compose up:启动容器 docker-compose up -d:启动容器(后台) docker-compose ps:显示当前运行的容器 docker-compose down:关闭容器 详细参见官方文档

二、Drupal8安装

启动服务后,通过http://ip:8000/ 即可访问Drupal8,未安装则进入安装程序。

1、选择语言

有多种语言可以选择,选择中文。

选择非英文后会下载翻译包,多出翻译安装的步骤。

2、选择安装方式

安装方式包括标准、最小和自定义,这里选择标准。

3、检查安装需求

这里就会出现一些问题了,当然主要是我们缺少了些准备动作。

a:找不到文件目录

安装程序会在sites目录下创建default/files目录用作存储目录,这里可能因为权限原因无法创建,所以需要开启default目录的写入权限:

  $ chmod a+w sites/default
复制

也可以自己创建这个files目录并设置写入权限:

  $ mkdir -p sites/default/files
  $ chmod a+w sites/default/files
复制

b:找不到默认配置文件/找不到配置文件

安装程序会在sites/default目录下创建settings.php配置文件,有可能创建失败。

实际上我猜想程序就是通过同目录下的default.settings.php复制创建的,但是我通过容器运行下连这个文件都没有,所以还提示了找不到默认配置文件这个错误。

可以手动创建它。因为连默认配置文件都没有,而且又是通过docker运行的,只能去镜像里寻找默认配置文件(default.settings.php)或者下载一个Drupal的包。我选择了后者,通过官网下载最新包(tar.gz的),解压(tar -xzvf tar.gz)后在对应目录中的sites/default中找到了default.settings.php默认配置文件。 复制文件到我们自己的目录中,通过默认配置文件(default.settings.php)创建配置文件(settings.php),并给予配置文件写入权限:

  $ cp default.settings.php ~/proteanbear.xyz/blog/drupal/storage/sites/default
  $ cd ~/proteanbear.xyz/blog/drupal/storage/sites/default
  $ cp default.settings.php settings.php
  $ chmod a+w settings.php
复制

4、设置数据库

通过安装需求检查后,就进入数据库设置。填入如下:

  • 数据库名:postgres
  • 数据库用户:postgres
  • 登录密码:docker-compose.yml中设置的密码
  • 高级选项>主机名:drupal_postgres_1
  • 高级选项>端口号:5432
  • 高级选项>表前缀:drupal_

关于主机名:需要注意的是默认的高级选项中的主机名为localhost,因为是docker部署的这里需要修改,可以通过docker-compose ps命令查看当前运行的postgresql的服务主机名,这里为drupal_postgre_1。

然后就开始运行安装了。 这里还发生个小插曲,可能是网络原因这里没进入安装就卡死了,只好重启服务而应该是安装了一部分,还好是Docker下运行的,删除全部数据重新来了一次ㄟ( ▔, ▔ )ㄏ。

5、安装网站

6、安装翻译

7、设置网站

8、完成翻译

p>

9、收尾(恢复安全权限)

安装完成后需要最后收尾,为了安全起见要将刚刚授予了写权限的文件和目录的权限收回,包括sites/default目录和settings.php配置文件(sites/default/files目录需要存储上传文件,写权限需要保留),运行命令:

  $ chmod go-w sites/default
  $ chmod go-w settings.php
复制

三、修改配置

完成后进入主页,选择管理下的配置功能,会有一个状态报告进入后有一个错误:

需要对配置进行修改,设置信任主机,编辑settings.php文件:

  $ vim sites/default/settings.php
复制

找到trusted_host_patterns加入自己的域名,详情参见官方说明

附:纯净版

// 1.docker安装
$ yum update
$ yum install docker docker-compose
$ service docker start

// 2.docker-compose.yml配置
$ mkdir -p ~/proteanbear.xyz/blog/drupal/storage/modules
$ mkdir -p ~/proteanbear.xyz/blog/drupal/storage/profiles
$ mkdir -p ~/proteanbear.xyz/blog/drupal/storage/themes
$ mkdir -p ~/proteanbear.xyz/blog/drupal/storage/sites/default
$ mkdir -p ~/proteanbear.xyz/blog/drupal/storage/data/pg_data
$ vim ~/proteanbear.xyz/blog/drupal/docker-compose.yml
  
  version: "3.1"
  services:
      drupal:
      image: drupal:8-apache
      ports:
          - 8000:80
      volumes:
          - ./storage/modules:/var/www/html/modules
          - ./storage/profiles:/var/www/html/profiles
          - ./storage/themes:/var/www/html/themes
          - ./storage/sites:/var/www/html/sites
      restart: always
      postgre:
          image: postgres:10
          environment:
              POSTGRES_PASSWORD: 数据库密码
              PGDATA: /var/lib/postgresql/data/pgdata
              restart: always
              volumes:
                  - ./storage/data/pg_data:/var/lib/postgresql/data/pgdata

:wq

// 3.配置目录权限
$ wget https://www.drupal.org/download-latest/tar.gz
$ tar -xzvf tar.gz
$ cp drupal-*/sites/default/default.settings.php ~/proteanbear.xyz/blog/drupal/storage/sites/default/
$ cd ~/proteanbear.xyz/blog/drupal/
$ cp storage/sites/default/default.settings.php storage/sites/default/settings.php
$ chmod a+w storage/sites/default/
$ chmod a+w storage/sites/default/settings.php
$ mkdir storage/sites/default/files
$ chmod a+w storage/sites/default/files

//4.运行并访问安装
$ docker-compose up -d
//安装完成后
$ chmod go-w storage/sites/default/
$ chmod go-w storage/sites/default/settings.php
$ vim storage/sites/default/settings.php

  $settings['trusted_host_patterns'] = [
    '^www\.example\.com$',
  ];
  
  -- INSERT
  
$ docker-compose down
$ docker-compose up -d
$ docker-compose ps
728x90