caddy用php,使用Caddy在macOS上配置wordpress主题开发环境

当我们开始学习一门新技术的时候,我们往往是从配置开发环境开始的,而也就是这一步,总有些难迈过。我们配置环境时,往往不熟悉这门技术,所以才要去配置环境来开发学习。所以这个配置的过程,总是会带有稀里糊涂“折腾”的成分。

折腾有时是乐趣,有时却是沮丧。所以折腾不一定必要,为了避免不必要的折腾,我总结了一些配置开发环境的经验,以供参考。

第一步 明确配置什么

配置wordpress的主题开发环境。

第一步很简单,但是要明确,避免你配置环境时,配着配着,因为某些问题越走越远。

第二步 找清依赖

配置环境,其实就是配置依赖。 你在用别人开发好的工具或者库时你要明确,你要用的技术到底依赖哪些工具和库。这一步最好看官方文档。wordpress 是基于php开发的,所以肯定需要php,那还需要什么呢?wordpress 是一个web程序,所以我们需要一个server。还有呢?

根据文档我们需要以下几个组件:

PHP解释器

Web Server

Database

知道要什么组件后,但是方案有很多种类。 由于每个人对某个领域的经验不一样,配好后要用在的环境不一样,所以技术上选择的粒度控制会不一样。

比如PHP, 安装时需不需要关注PHP版本,用PHP5.6 还是PHP7.0,有没有什么PHP的plugin需要安装? 所以这个没有统一的答案。

但是技术选择的基线要搞清楚,防止自己犯低级错误。比如wordpress 4.9 对PHP的最低的版本要求是多少?database选择Mysql的最低版本多少?选择MariaDB作为wordpress数据库,有特别要注意的地方吗?

而且不同组件之间的关系要搞清楚,他们是怎么协同工作的,怎么通信。比如PHP 和 Web Server 是怎么协同工作的?都装上去就行吗?

我准备安装wordpress的当前最新版本4.9.4,查看文档发现wordpress对环境的兼容性很好, 所以对各个组件的版本要求很低,并且他有推荐的配置。

所以安装组件最低要求是:

PHP 5.2.4以上

MySQL 5.6 以上或者 MariaDB 10.0 以上

推荐使用Apache 和 Nginx

由于我有配置Apache 和Nginx的经验,我感到这两个软件,配置时还不够方便,所以我选择了使用足够简单的且稳定的Caddy。而且我要配置的是本地开发环境,对稳定性要求没那么高,所以我会倾向于选择较新的配置,这样可以使用较新的软件特性。

我的配置是:

PHP 7.0

MariaDB 10.0

Caddy 最新版

我是在macOS下开发,有一个好用的程序管理器是很有必要的比如homebrew这个类似于Ubuntu下apt的管理程序软件。

没有安装homebrew的运行下面的命令来安装

1

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

第三步 逐个安装,逐步验证

好,开始正题

安装 PHP

1

brew install php70 --with-fpm

–with-fpm 是什么稍后解释。

测试PHP

1

php -v

MariaDB

1

brew install mariadb

测试 MariaDB

1

2

mysql.server start

mysql -u root -p

也可以用brew services,像使用linux中的systemctl一样方便开启服务

1

brew services start mariadb

测试PHP和MariaDB协同工作

创建数据库

mysql -u root -p

mysql

>CREATE DATABASE wordpress;

>quit

使用PHP测试脚本连接数据库

# Fill our vars and run on cli

# $ php -f db-connect-test.php

$dbname = 'wordpress';

$dbuser = 'root';

$dbpass = '';

$dbhost = 'localhost';

$link = mysqli_connect($dbhost, $dbuser, $dbpass) or die("Unable to Connect to '$dbhost'");

mysqli_select_db($link, $dbname) or die("Could not open the db '$dbname'");

$test_query = "SHOW TABLES FROM $dbname";

$result = mysqli_query($link, $test_query);

$tblCnt = 0;

while($tbl = mysqli_fetch_array($result)) {

$tblCnt++;

#echo $tbl[0]."
\n";

}

if (!$tblCnt) {

echo "There are no tables
\n";

} else {

echo "There are $tblCnt tables
\n";

}

安装Caddy

Caddy的安装很简单,甚至不需要安装,只需要下载即可。下载时选择操作系统,插件和License,下载Caddy的zip文件,解压之后,里面有个caddy的binary文件,这个binary文件就是Caddy的全部,这也是使用它的简单之处。

你有两种方式使用这个caddy binary

把caddy放到系统的PATH目录下,这样可以全局访问到这个binary

放到项目的文件夹下直接使用。

我选择2。

第四步 遇到问题,理清组件职责

进行到这一步大部分软件都安装完了,但是wordpress还是没办法工作。有很多问题缠绕着我们?而且主要是出在Caddy的配置上。我们先把问题理清楚列出来。理清组件的职责,是要调整哪些组件,哪些组件时无关的。

wordprss代码放在哪里?

用Caddy怎么配置wordpress?

一个一个解决:

wordpress代码放在哪儿?

这个很简单,直接建folder就行

mkdir wordpress-caddy-template # 假设是wordpress-caddy-template你的工作目录s

cd wordpress-caddy-template

wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.zip

unzip wordpress-4.9.4-zh_CN.zip

rm wordpress-4.9.4-zh_CN.zip

这时wordpress就在 wordpress-caddy-template/wordpress 下面。

用Caddy怎么配置wordpress?

要回答这个问题,还得往下分析,得想清楚Caddy是干什么的。

接收url请求(我们的网站url是什么?)

根据url请求找到PHP代码的。(PHP代码在哪里?)

运行PHP代码(Caddy怎么运行PHP?)

返回PHP代码的运行结果

Caddy的配置只需要一个文件,如下的Caddyfile可以解决上述1 和 2:

localhost:9998

root wordpress/

对于3,Caddy怎么运行PHP代码?Caddy并不能直接运行PHP代码,Caddy通过PHP-FPM和PHP解释器进行进程间通信,Caddy把PHP代码通过PHP-FPM发给PHP解释器,PHP解释器解释好PHP代码后,把解释的结果通过PHP—FPM再发给Caddy。所以要安装PHP-FPM。

默认PHP-FPM是和PHP一起安装,如果你像我一样安装到一半才意识到没有安装PHP-FPM,可以先卸载php70,再重新安装带PHP-FPM的php70

brew uninstall php70

rm -rf /usr/local/etc/php/7.0

brew doctor # 查看是否有问题

brew install php70 --with-fpm

安装好后,开启php-fpm后台运行

brew services start php@7.0

进程间通信可以通过socket通信,也可以通过端口通信. 那macOS系统下PHP-FPM的默认方式时是什么呢? PHP-FPM的配置文件是/usr/local/etc/php/7.0/php-fpm.d/www.conf,它的相关配置如下

1

listen = 127.0.0.1:9000

所以加上了PHP-FPM的Caddyfile配置如下

localhost:9998

root wordpress/

fastcgi / 127.0.0.1:9000 php

这就是Caddy的配置了,最基本的只需要三行。

第五部 集成测试,优化配置

目前整个项目的目录如下

-rw-r--r--  1 fosteryin staff       59 Apr  5 16:18 Caddyfile

-rwxr-xr-x  1 fosteryin staff 16737696 Apr  5 15:34 caddy

drwxr-xr-x 21 fosteryin staff      672 Feb  8 12:53 wordpress

运行起来也很简单

1

./caddy

由于我想开发wordpress主题,所以我关心的只是主题的代码,所以我想把自己的代码和wordpress框架隔离,但是默认情况下主题代码是放在wordpress/wp-content/themes下的,这样每次找都不方便。而且我想用git来对代码进行版本管理,这个时候把自己的代码放在 wordpress文件夹下的子文件夹就更不方便了。

所以我在最外层目录新建了我的主题文件夹,并且把它软链接到wordpress的的主题文件夹中。

mkdir example-theme

cd wordpress/wp-content/themes

ln -s ../../../example-theme

使用git管理文件,并设置.gitignore 来隔离自己的代码和wordpress的代码。

cd ../../..

git init

touch .gitignore

open .gitignore

我ignore掉wordpress和caddy这个binary,caddy这种大一点binary也不适合放在git中管理。.gitignore 文件内容如下:

wordpress/

caddy

现在工作目录下所有文件为:

drwxr-xr-x 10 fosteryin staff      320 Apr  5 16:33 .

drwxr-xr-x  5 fosteryin staff      160 Apr  5 15:34 ..

-rw-r--r--  1 fosteryin staff     6148 Apr  5 16:22 .DS_Store

drwxr-xr-x  9 fosteryin staff      288 Apr  5 16:35 .git

-rw-r--r--  1 fosteryin staff       16 Apr  5 16:33 .gitignore

drwxr-xr-x  3 fosteryin staff       96 Apr  5 16:25 .idea

-rw-r--r--  1 fosteryin staff       59 Apr  5 16:18 Caddyfile

-rwxr-xr-x  1 fosteryin staff 16737696 Apr  5 15:34 caddy

drwxr-xr-x  2 fosteryin staff       64 Apr  5 16:30 example-theme

drwxr-xr-x 21 fosteryin staff      672 Feb  8 12:53 wordpress

这样一个基本的wordpress开发环境就搭建成功了。

下面给Caddyfile添加一些log设置和wordpress常用的permalinks。

localhost:9998

root wordpress/

fastcgi / 127.0.0.1:9000 php

rewrite {

if {path} not_match ^\/wp-admin

to {path} {path}/ /index.php?{query}

}

errors errors.log

.gitignore改为

wordpress/

caddy

*.log

使用Caddy是不是很简单? 所有代码在github上, 有兴趣可以下载wordpress-caddy-template。真正配置环境时,不一定需要这么一板一眼的分析配置,大家搜索一下教程,然后不停的运行命令就可以了。然而当大家真的遇到问题,遇到教程里没讲到的问题时,这上面的分析思路就很有用了,只有定位到问题本身才能解决问题,而我们往往看到的是问题的表象。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值