使用Docker Compose部署WordPress,并解决会出现的问题

ㅤㅤ在使用Docker部署WordPress时,会出现几个需要解决的问题,在此记录一下,以免太久以后需要重新部署却忘了办法。

一、新建Mysql数据库,记住数据库信息,在第二步要用

二、新建一个docker-compose.yaml文件

下方5046可以自行修改为宿主机启动服务的端口号,volumes也可以修改冒号前的路径为挂载到的本机路径

version: "3.9"

services:
  wordpress:
    image: wordpress:latest
    volumes:
      - /home/nginxWebUI/alist/WWW/blog:/var/www/html
    ports:
      - "5046:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: 数据库地址和端口号
      WORDPRESS_DB_USER: 数据库用户名
      WORDPRESS_DB_NAME: 数据库名
      WORDPRESS_DB_PASSWORD: 数据库密码

三、一行命令启动WordPress

docker-compose up -d

问题出现:

1.导入数据时,最大上传大小限制2MB

解决办法:直接改之前启动时挂载的到的宿主机目录下的 .hcatass 文件,添加以下内容即可,大小根据需要自己更改:

php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value memory_limit 256M
php_value max_execution_time 300
php_value max_input_time 300

2.首次启动并且在设置中修改了域名后,无法访问站点

解决办法:在外部连接数据库,新建sql文件,旧字符串填入WordPress的http地址,新字符串填入反代后的地址,直接在拖拽到数据库上运行批量替换

SET @DatabaseName = '数据库名';
SET @OldText = '要被替换掉的旧字符串';
SET @NewText = '替换后的新字符串';

DROP PROCEDURE IF EXISTS ReplaceTextInDatabase;
DELIMITER $$

CREATE PROCEDURE ReplaceTextInDatabase()
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE tableName VARCHAR(255);
    DECLARE fieldName VARCHAR(255);
    DECLARE cur CURSOR FOR SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS 
        WHERE TABLE_SCHEMA = @DatabaseName 
        AND DATA_TYPE IN ('varchar', 'text', 'mediumtext', 'longtext');
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        GET DIAGNOSTICS CONDITION 1
        @sqlstate = RETURNED_SQLSTATE, @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT;
        SET @full_error = CONCAT("ERROR ", @errno, " (", @sqlstate, "): ", @text);
        SELECT @full_error;
    END;

    OPEN cur;

    read_loop: LOOP
        FETCH cur INTO tableName, fieldName;
        IF done THEN
            LEAVE read_loop;
        END IF;

        SET @SQL = CONCAT('UPDATE ', @DatabaseName, '.', tableName, ' SET ', fieldName, ' = REPLACE(', fieldName, ', ''', @OldText, ''', ''', @NewText, ''') WHERE ', fieldName, ' LIKE ''%', @OldText, '%''');
        PREPARE stmt FROM @SQL;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    END LOOP;

    CLOSE cur;
END$$

DELIMITER ;

CALL ReplaceTextInDatabase();

DROP PROCEDURE IF EXISTS ReplaceTextInDatabase;
暂无评论

发送评论 编辑评论


				
上一篇
下一篇