豪哥的世界

Mac Mini M2本地部署wordpress过程中的坑

为了自己和孩子写日记,就开始在家里的Mac Mini M2上部署wordpress,因为我的技术不过硬,过程实现曲折,记录一下。

花了我一整天,最终部署成功,还是值得的。

过程

想过Mac上直接安装数据库,apache,php,自己配置完成,但为了省事,就找了docker来部署。

参考教程

关键步骤见下:

docker pull wordpress

docker pull mysql

docker run -d --name mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress mysql

docker run -d --name my_wordpress -e WORDPRESS_DB_HOST=mysql:3306 --link mysql -p 8083:80 wordpress

一路上遇到了很多障碍。

1.不知道怎么进入docker容器环境去拿wp-config.php的路径,修改配置。

1)用下面的命令找到正在运行的docker容器。

docker ps

2)找到了wordpress的docker名字比如my_wordpress之后输入

docker exec -it my_wordpress bash

3)进入docker容器环境,用pwd获取wp-config.php所在路径输入exit退出docker容器环境回到宿主机(本机)

4)拷贝docker容器环境下的wp-config.php文件到宿主机(本机)

docker cp ~/tmp my_wordpress://var/www/html/wp-config.php

5)用本地编辑器编辑打开tmp,修改下面的语句

/** Database username */
define( 'DB_USER', getenv_docker('WORDPRESS_DB_USER', 'root') );

/** Database password */
define( 'DB_PASSWORD', getenv_docker('WORDPRESS_DB_PASSWORD', 'root') );

6)拷贝宿主机(本机)tmp文件到docker容器环境下覆盖wp-config.php

至此避坑。

2. 要在家庭局域网里,其他电脑或手机访问这个网站呢?怎么办?

1)修改wp-config.php,按照第1节方法进入docker容器环境,拷贝docker容器环境下的wp-config.php文件到宿主机(本机),接着把下面这段代码放入 define('ABSPATH', dirname(FILE) . '/'); 这条语句后面

function get_dynamic_home_url(){
    $base_dir  = ABSPATH; // Absolute path
    $doc_root  = preg_replace("!${_SERVER['SCRIPT_NAME']}$!", '', $_SERVER['SCRIPT_FILENAME']);
    $base_url  = preg_replace("!^${doc_root}!", '', $base_dir);
    $protocol  = empty($_SERVER['HTTPS']) ? 'http' : 'https';
    $port      = $_SERVER['SERVER_PORT'];
    $disp_port = ($protocol == 'http' && $port == 80 || $protocol == 'https' && $port == 443) ? '' : ":$port";
    $domain    = $_SERVER['SERVER_NAME'];
    $home_url  = "${protocol}://${domain}${disp_port}${base_url}";

    return $home_url;
}
$url = get_dynamic_home_url();
define('WP_SITEURL', $url);
define('WP_HOME', $url);

修改完成后,仍然拷贝宿主机(本机)tmp文件到docker容器环境下覆盖wp-config.php

2)重启docker容器my_wordpress

docker restart my_wordpress

3. 访问网站慢怎么办?

因为网站加载了Google的一些字体之类的。

可以尝试访问http://[宿主机局域网ip]:8083/wp-admin登陆后,找到主题的function.php加入下面代码。

function coolwp_remove_open_sans_from_wp_core(){
wp_deregister_style('open-sans');
wp_register_style('open-sans',false);
wp_enqueue_style('open-sans','');
}

add_action('init','coolwp_remove_open_sans_from_wp_core');

4. 主题不好看?

我装了一个开源主题,还是很不错的。

https://github.com/solstice23/argon-theme

收获

1. 全面掌握了docker命令,彻底学了一下,对docker入门了。

2. 研究了Mysql,没那么难,后面接着研究。

3. argon主题很有意思,很多卖主题的,不知道生意如何。

4. 写了一段时间日记了,觉得有隐私性,又方便,很适合家庭日记。