1
manami 2020-01-19 17:17:22 +08:00 via Android
More detail…看日志报错信息,一些目录文件的写入 /读取权限是否给了?修改配置文件后是否重启了相关服务?
|
2
sleepm 2020-01-19 17:23:28 +08:00
你把报错贴出来才能帮你排查问题
|
3
programV2 OP |
4
gefranks 2020-01-19 17:38:37 +08:00 via iPhone
看下 aceess log,ngnix 默认的网页是不是设好了 在 nginx.conf 里
|
6
programV2 OP 谢谢 V 友们, @gefranks @manami @sleepm 虽然我重新搭建导入数据库后网站可以打开, 但由于原来老网站开启了 reCAPTCHA 模块, 旧域名弃用了, 现在进不了后台了, 连后台密码也忘记了, 我访问容器登陆数据库尝试关闭模块, 执行 UPDATE system SET status = 0 WHERE name = "recaptcha"; 出现如下错误 :
ERROR 1146 (42S02): Table 'drupal.system' doesn't exist, 我的数据库名 是 drupal , 是我这个命令写错了吗? 另外请教 V 友们 你们是如何在 docker 上安装 drush 的, 谢谢! |
7
sleepm 2020-01-20 20:32:08 +08:00 via Android
这个错误是说 drupal.system 这个表不存在,也就是你可能没有把数据库恢复回去
或者你进 mysql 之后没有执行 use drupal; 数据库基础。。。 |
8
sleepm 2020-01-20 20:40:02 +08:00 via Android
一步一步把你不懂的东西,转换成你懂的东西,就比如英文报错,慢慢你就能自己找到解决方法
|
9
programV2 OP @sleepm 谢谢 V 友指点, 但我执行了 mysql -u user -p drupal 已经选中了数据库呀
我第一次接触 Drupal 并且官方文档没有 docker 内容,网上关于这个的内容也很少,找不到一个可以参考的, |
10
sleepm 2020-01-20 21:17:43 +08:00
那你就看看 docker 的知识吧。。重点不是 drupal on docker,是 docker
|
11
programV2 OP @sleepm 请问 Drupal 关闭 recaptcha 模块是在 System 这个表吗?如何查看在哪个 table 关闭 recaptcha 模块?
|
12
programV2 OP @sleepm 确认已经有把数据库恢复回去了,不然网站上内容都会是空的,现在是由于这个 recaptcha +忘了后台密码就进不了后台的
|
13
programV2 OP @sleepm 查看文档也是用 UPDATE system SET status = 0 WHERE name = "recaptcha"; 不知道为什么提示表名不存在? system table 有不同的名称?
|
14
merryfreespace 2020-01-21 05:01:10 +08:00
For D8:
1. remove module 2. truncate table cache_config |
15
sleepm 2020-01-21 07:56:38 +08:00
不要看网站有内容数据库就恢复回去了,你要在 mysql 里 show tables;
drupal 我不懂,但是 docker 我知道 |
16
programV2 OP @merryfreespace thank you for your help. in this case i would like to disable captcha module manually in the database, reCaptcha has blocked me out of admin panel of my website, now i have access to my server and database thru SSH, when i ran command:
UPDATE system SET status = 0 WHERE name = "recaptcha"; Seeing an error “ERROR 1146 (42S02): Table 'drupal.system' doesn't exist, When i ran the following command to show table , i can not find the table named "system" of 131 rows in set: select table_name from information_schema.tables where table_schema='drupal' and table_type='base table'; So wondering if I use the right table name? how to find the exact system table name to disable captcha module in Drupal ? my Drupal version is 8.5.5 Thank you very much. |
17
programV2 OP @merryfreespace when i ran command to show database, it looks like :
| information_schema | | drupal | +--------------------+ 2 rows in set |
18
programV2 OP @sleepm 谢谢🙏我运行 show database :
| information_schema | | drupal | +--------------------+ 2 rows in set 然后 show table 没有看到任何包含 System 的记录,这个可能是什么原因呢? |
19
sleepm 2020-01-21 13:19:09 +08:00
大哥
mysql> show tables; 如果列出来有 system 那就看下面的 drush cache-clear http://alejandro.bio/node/113 |
20
programV2 OP @sleepm 是的, 我就是执行 show tables; 没有看到任何包含 System 的记录,这个可能是什么原因呢?
|
21
sleepm 2020-01-21 14:19:04 +08:00
备份数据库文件是.sql 还是 mysql/data 目录
是 sql 的话,你打开看有没有 system 表,没有的话,重装 drupal 吧,然后原来的文章啥的,直接把数据表替换掉 |
22
programV2 OP @sleepm 谢谢大佬, 我备份的数据库文件是 .sql , 打开看没有 system 表, 请问我重装 drupal 后该怎么操作? 把数据表替换成什么?
|
23
sleepm 2020-01-21 15:26:29 +08:00
安装一个新的 drupal,然后备份数据库,把备份出来的 sql 和前面备份的做 diff,
然后找出你的文章之类的,把那些 sql 语句复制出来,弄一个新的.sql ,再做导入 |
24
programV2 OP @sleepm 我的备份数据库应该是成功导入了, 因为我尝试用网站上的站内搜索功能, 一切正常的, 所以现在问题是我该在哪个数据表关闭模块? 谢谢. 祝好.
|
25
sleepm 2020-01-21 15:57:28 +08:00
http://alejandro.bio/node/113
|
26
programV2 OP @sleepm 谢谢🙏 这博客之前我看过, 可是不知道为什么我的备份数据库没有 system 表?第一步就卡住了,请问除了把备份出来的 sql 和前面备份的做 diff,
把 sql 语句复制出来弄一个新的.sql 外还有别的办法吗? |
27
sleepm 2020-01-21 17:32:37 +08:00
其他方法也是搞数据库,把缺失的表补回去
|
28
programV2 OP @sleepm 谢谢! 我用 cat drupal/backup.sql | docker exec -i drupal8_mysql /usr/bin/mysql -u root --password=password drupal 导入数据库和下面这种方式有什么区别吗?
docker exec -i drupal8_mysql /usr/bin/mysql -u root --password=password drupal < drupal/backup.sql |
29
sleepm 2020-01-21 21:55:55 +08:00
如果结果都一样,应该没啥区别。。
| 是管道符 < 是重定向符号 |
30
merryfreespace 2020-01-22 07:05:09 +08:00
Drupal 8 没有 system table.
删除掉 recaptcha module truncate table cache_config 用来清空缓存表的 如果你熟悉 drupal console: Disable module ./vendor/bin/drupal mou module_name Enable module ./vendor/bin/drupal moi module_name Drush 命令上面有人介绍了。 |
31
programV2 OP @merryfreespace 非常感谢 V 友的帮助!! 我试着把 recaptcha 和 captcha 两个文件夹都删除掉了, 然后进入数据库执行了下列命令清除缓存, 并重启所有容器, 但是 captcha 错误提示还是出现(见附图)
TRUNCATE cache_config; TRUNCATE cache_container; TRUNCATE cache_data; TRUNCATE cache_default; TRUNCATE cache_discovery; TRUNCATE cache_dynamic_page_cache; TRUNCATE cache_entity; TRUNCATE cache_menu; TRUNCATE cache_render; TRUNCATE cache_toolbar; 附图:![PNG]( https://i.loli.net/2020/01/23/OFRub36ecsyAJfD.png) 已多次重启本地电脑和浏览器使用隐私模式 |
32
programV2 OP @merryfreespace 两位 V 友好, 经过假期折腾 删掉 recaptcha 和 captcha 两文件夹并进入数据库清缓存,现在没有出现验证码终于进入管理后台, 但是点击后台任意菜单都出错, 请问这可能是什么原因呢?
@sleepm error log: 2020/02/07 07:58:56 [error] 6#6: *108 FastCGI sent in stderr: "PHP message: Uncaught PHP Exception Drupal\Component\Plugin\Exception\PluginException: "Plugin (captcha) instance class "Drupal\captcha\Element\Captcha" does not exist." at /var/www/html/core/lib/Drupal/Component/Plugin/Factory/DefaultFactory.php line 97" while reading response header from upstream, client: 1.2.3.4, server: example.com, request: "GET /user/1/edit HTTP/1.1", upstream: "fastcgi://172.19.0.3:9000", host: "example.com", referrer: "http://example.com/user/1" 2020/02/07 07:59:19 [error] 6#6: *170 FastCGI sent in stderr: "PHP message: Uncaught PHP Exception Drupal\Component\Plugin\Exception\PluginException: "Plugin (captcha) instance class "Drupal\captcha\Element\Captcha" does not exist." at /var/www/html/core/lib/Drupal/Component/Plugin/Factory/DefaultFactory.php line 97" while reading response header from upstream, client: 1.2.3.4, server: example.com, request: "GET /admin HTTP/1.1", upstream: "fastcgi://172.19.0.3:9000", host: "example.com", referrer: "http://example.com/user/1" access log: 1.2.3.4 - - [07/Feb/2020:07:58:56 +0000] "GET /user/1/edit HTTP/1.1" 500 537 "http://example.com/user/1" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36" 1.2.3.4 - - [07/Feb/2020:07:58:56 +0000] "GET /modules/admin_toolbar/admin_toolbar_tools/misc/icons/ffffff/d8-item.svg HTTP/1.1" 200 1499 "http://example.com/modules/admin_toolbar/admin_toolbar_tools/css/tools.css?pc5ppi" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36" 1.2.3.4 - - [07/Feb/2020:07:59:00 +0000] "GET /modules/coffee/images/icons/bebebe/coffee.svg HTTP/1.1" 200 1947 "http://example.com/modules/coffee/css/coffee.css?pc5ppi" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36" 1.2.3.4 - - [07/Feb/2020:07:59:19 +0000] "GET /admin HTTP/1.1" 500 537 "http://example.com/user/1" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36" 1.2.3.4 - - [07/Feb/2020:07:59:23 +0000] "GET /core/misc/icons/ffffff/hamburger.svg HTTP/1.1" 200 510 "http://example.com/core/modules/toolbar/css/toolbar.icons.theme.css?pc5ppi" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36" |
33
programV2 OP |
34
gefranks 2020-02-08 03:38:18 +08:00
以我浅薄的知识看还是 captcha 那边出错了,没清干净吧
|
35
merryfreespace 2020-02-11 05:05:33 +08:00
通過 drupal 後臺清空 cache 試試。再看看 compose.json 和 lock 是否有相關插件。
|
36
programV2 OP @merryfreespace @gefranks
@sleepm @sleepm 非常感谢几位热心 V 友🙏🙏 我 docker-compose.yml 部分设置如下 version: "3" services: nginx: image: nginx:$NGINX_TAG container_name: "${PROJECT_NAME}_nginx" ports: - $NGINX_PORTA volumes: - "./drupal/web:/var/www/html" - "./drupal/logs/nginx:/var/log/nginx" - "./drupal/nginx/nginx.conf:/etc/nginx/conf.d/default.conf" - "./drupal/ssl:/etc/ssl" depends_on: - php drupal: image: drupal:$DRUPAL_TAG container_name: "${PROJECT_NAME}_drupal" volumes: - "./drupal/web:/var/www/html" - "./drupal/mysql:/var/lib/mysql" restart: always depends_on: - mysql 之前安装网站时赶时间运行了 chmod -R 777, 现在想把主机上挂载的网站源码文件夹./drupal/web 的 owner 改为 www-data 用户, 我进 nginx 容器发现没有 www-data 这个用户名,请问 nginx 服务访问 /drupal/web 用的是哪个用户名? P.S. 我 主机建了 3 个 docker 容器:Nginx,Drupal, MySQL, 其中 Nginx 和 Drupal 容器都是挂载到 ./drupal/web , 这样我是不是需要同时改这两个容器的 uid gid? 我现在在主机新建普通用户 foo: useradd -m -s -u 2005 -g 2005 foo , 还要分别进这两个容器执行下列命令吗? 但 nginx 容器发现没有 www-data 这个用户名 usermod -u 2005 www-data groupmod -g 2005 www-data find / -user 82 -exec chown -h www-data {} \; find / -group 82 -exec chgrp -h www-data {} \; |
37
sleepm 2020-02-13 22:45:25 +08:00
depends_on:
- php 改 php 的 nginx 做最靠近用户浏览器的 用户访问一个网页,会请求到静态的,比如图片,css,js 动态的,比如.php 静态的不需要处理,nginx 直接返回给用户 动态的,nginx 会交给后端 fastcgi_pass (在 nginx 配置中),然后 php 返回给 nginx,再给用户 那就是 php 容器了 |
38
programV2 OP @sleepm 谢谢🙏, 我上面手抖写錯了,drupal 容器=php 容器(镜像是 drupal + php); 好的,我只要改 php 容器内的 www-data 用户 uid
|
39
programV2 OP @sleepm V 友您好有两个疑惑想向您请教:
我 docker-compose.yml 设置 nginx 容器 ports: - 80:80 -443:443 发现主机上监听的只有 IPV6 的端口, root@abc:~# netstat -tnlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:42303 0.0.0.0:* LISTEN 2835/containerd tcp6 0 0 :::443 :::* LISTEN 2483/docker-proxy tcp6 0 0 :::80 :::* LISTEN 2471/docker-proxy 疑惑: 1. 我进 nginx 容器内执行 netstat -tnlp, 发现 ipv4 的 80 和 443 都在监听, 但是我在 nginx.conf 配置文件中只设置 listen 443;为什么还会监听 80 的端口呢?? 是因为上面的 docker-compose.yml 中已经开启所以没法在 nginx.conf 配置中关闭 80 端口吗? 2.我用 v4 地址还可以访问主机网站, 据V友讲是内核默认会把 v4 过来的地址转换成特殊的 v6 地址, 但是我 nginx 容器内只监听 v4 的地址,那是不是说系统还得把这个特殊的 v6 地址再次转换成 v4 地址才能与容器内的 nginx 服务通信? |
40
sleepm 2020-02-14 17:02:07 +08:00 via Android
第一个问题
docker-compose.yml 里面的设置是映射端口,map,不管容器内有没监听,只管映射 第二个问题 如果只监听 v4 的,那客户访问 v6 的地址,会得到 connection refused 响应 |
41
programV2 OP @merryfreespace V 友,您好, 请问能推荐一个适合英文站的 drupal 主题吗? 谢谢!
|
42
programV2 OP @sleepm v 友你好,不好意思来挖老贴。 我在同一个 mysql 容器创建了两个数据库(第一个数据库是用 docker-compose.yml 创建, 第二个 dB 是后面手动登录 MySQL 容器手动创建的, 为什么第一个网站成功运行, 第二个却数据库连接出错, 但是我确认用户名密码信息都是正确的, 数据库 host 跟第一个 database 也是一样的。 请问我怎么样排查?我连的是跟前一个 DB 相同的 host. 这是报错日志 , 谢谢指点🙏🙏🙏 2020/11/09 10:57:29 [error] 6#6: *72 FastCGI sent in stderr: "PHP message: PDOException: SQLSTATE[HY000] [1044] Access denied for user 'drupal'@'%' to database 'abc' in /var/www/html/core/lib/Drupal/Component/DependencyInjection/PhpArrayContainer.php on line 79 #0 /var/www/html/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php(149): PDO->__construct('mysql:host=drup...', 'drupal', '123456789', Array) #1 /var/www/html/core/lib/Drupal/Core/Database/Database.php(376): Drupal\Core\Database\Driver\mysql\Connection::open(Array) #2 /var/www/html/core/lib/Drupal/Core/Database/Database.php(166): Drupal\Core\Database\Database::openConnection('default', 'default') #3 [internal function]: Drupal\Core\Database\Database::getConnection('default') #4 /var/www/html/core/lib/Drupal/Component/DependencyInjection/PhpArrayContainer.php(79): call_user_func_array('Drupal\Core\Dat...', Array) #5 /var/www/html/core/lib/Drupal/Component/DependencyInjection/Container.php(171): Drupal\Component\DependencyInjection\PhpArrayContainer->createService(Array, 'database') #6 /var/ww" while reading response header from upstream, client: 104.160.45.251, server: www.abc.com, request: "GET /user/login HTTP/1.1", upstream: "fastcgi://172.18.0.2:9000", host: "www.abc.com"
|
43
sleepm 2020-11-25 16:22:13 +08:00
哪里不懂搜哪里。。
在 phpmyadmin 检查用户 drupal 的权限,允不允许任意主机链接,也就是%,看样子是不允许,要不然报错可能是找不到主机 drupal |
44
programV2 OP @sleepm 谢谢大佬的指点🙏🙏 我自己也 google 搜索了非常多的资料 确实没有头绪才上来打扰,默认情况下 docker 会为容器分配随机(某种......) IP 地址,请问您知道如何通过使用链接,将条目添加到容器的 hosts 文件中吗?并使用其 IP 地址映射另一个容器的名称。 这样就不需要知道其 IP 地址,只需使用其名称即可通过网络访问同一宿主机下面的其他容器。
|
45
sleepm 2020-11-26 08:02:27 +08:00 via Android
不知道。。docker 不是添加的,是自动解析的
|
46
programV2 OP @sleepm 谢谢大佬回复。🙏 但是我看文档上介绍说默认 bridge 只能通过 IP 互连的限制,只有用户自定义创建的 bridge 才能自动提供容器间的 DNS 解析功能,容器间才可以通过容器名进行通信。 难道现在默认的 bridge 也提供自动 DNS 解析了吗?
|
47
sleepm 2020-11-26 11:23:35 +08:00 1
你把我问倒了。。
应该是有的,因为容器间用 link 也是解析的 |
48
programV2 OP @sleepm 谢谢大佬! 多次测试发现只有自定义创建的 bridge 才有 dns 解析. 另外想请问您是如何让 docker daemon 守护进程不退出的? 突然收到服务监控通知, 发现 docker 上 4 个容器服务同时挂掉了, journalctl -u docker.service 进入日志查看发现了这个, 该如何排错呢? 另外想请教您现在都在用哪种方法让 docker daemon 守护进程不退出? 谢谢您的指点!
Docker version 18.09.7, build 2d0083d linux 版本: 4.15.0-123-generic #126~16.04.1-Ubuntu SMP systemd[1]: Stopping Docker Application Container Engine... 074627-05:00" level=info msg="Processing signal 'terminated'" 049975-05:00" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete" 444047-05:00" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete" 699341-05:00" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete" 441246-05:00" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete" 204594-05:00" level=info msg="stopping event stream following graceful shutdown" error="<nil>" module=libcontainerd namespace=moby 664254-05:00" level=info msg="stopping event stream following graceful shutdown" error="context canceled" module=libcontainerd namespace=plugins.moby systemd[1]: Stopped Docker Application Container Engine. |
49
sleepm 2020-12-02 19:14:50 +08:00
不是大佬。。我都是照着官网文档加密钥,apt 安装的。。
看你的日志看着没啥问题。。你排查下内存是不是不够,或者硬盘是不是占满了 |
50
programV2 OP @sleepm 谢谢您🙏 解決了是 docker 的问题。V 友,还有一事困扰我很久想请教你,我宿主机是创建一个普通用户 user1 ( uid 83 )来安装部署容器,目前 nginx 容器和 php 容器的共享卷 web 挂载目录用 755 权限,他们 uid 是 user1 的 83,请问这样设置有文件权限问题?是否需要将 nginx 容器和 php 容器内服务的启动用户改为 user1 uid 83?
|
51
programV2 OP |
52
sleepm 2020-12-21 13:56:27 +08:00
容器能正常启动就不用管容器外的权限问题,
如果 drupal 或者 nginx 报权限错误,那就只需要在容器内改权限 |