本文基于MacOS
,介绍如何定制微擎运行环境。
阅读本文之前,读者需要了解:在MacOS下通过brew安装软件包。
1. 环境搭建
1.1 下载微擎源码
可以选择下载微擎官方源码离线版,本文下载的微擎是1.0稳定版
。
同时,笔者将源码保存在到了github上,可以通过以下命令直接下载:
git clone https://github.com/etutorial/WeEngine.git
1.2 安装nginx
$ brew install nginx
在浏览器中输入localhost:8080
,如果看到如下界面内容,表示nginx
安装成功:
配置文件/usr/local/etc/nginx/nginx.conf
1.3 安装mysql
$ brew install mysql
启动mysql,设置初始化密码:
mysql.server start
mysql_secure_installation
然后,根据命令提示输入密码即可。
1.4 安装微擎
微擎依赖于php,MacOS默认自带了php,因此直接执行如下命令即可,其中/Users/duanqz/Code/WeEngine是微擎的源码目录:
$ php -S 127.0.0.1:8080 -t /Users/duanqz/Code/WeEngine
在浏览器中输入127.0.0.1:8080
,出现以下界面表示php环境运行正常:
点击install.php 进入安装
,按照操作提示下一步即可。其中参数配置一步,需要配置数据库连接信息和微擎后台管理员账号:
在测试环境下:
- 数据库主机输入的是本机(
127.0.0.1
)的mysql - 数据库账号和密码是之前配置的root和12345678
- 表前缀和数据库名称选择了默认值ims_和we7
- 微擎的后台管理员账户/密码配置为admin/admin
成功安装微擎后,便会进入微擎后台的登录界面,输入刚才配置的管理员用户,便进入到微擎的主界面:
1.5 常见问题
1.5.1 mysql没有启动
mysql没有启动,则会报如下错误,按照上述步骤启动mysql即可。
发生错误: SQLSTATE[HY000] [2002] Connection refused
1.5.2 msql中存在重名的数据库
mysql中已经存在相同的数据库或表前缀。在重复安装微擎的运行环境时会出现如下错误。 删除mysql中的重名数据库和数据表即可。可以使用MySQLWorkbench、Navicat、TeamSQL等图形化的客户端。
发生错误: 您的数据库不为空,请重新建立数据库或是清空该数据库或更改表前缀!
1.5.3 重新安装微擎
如果需要修改数据库和数据表名,则需要重新安装微擎,删除微擎源码目录下的以下子目录即可:
data/config.php # 微擎运行的配置信息,之前输入的数据库连接信息就保存在此文件中
data/install.lock # 一个锁标识,标识微擎已经正确安装
data/tpl/ # 根据源码生成的最终用户界面
使用如下命令,连接数据库,可展示出数据库中微擎默认创建的数据表,删除这些表即可。
$ mysql --user=root --password we7
Enter password: # 输入密码12345678
mysql> show tables;
+-------------------------------+
| Tables_in_we7 |
+-------------------------------+
| ims_account |
| ims_account_wechats |
| ims_account_wxapp |
| ims_article_category |
| ims_article_news |
... # 此处省略了很多其他表
| ims_wxapp_versions |
| ims_wxcard_reply |
+-------------------------------+
98 rows in set (0.01 sec)
2. 微擎定制
2.1 内网穿透
微信公众号的调试需要公网的域名,可以使用利用内网穿透技术,将一个本地的IP和端口映射成公网的域名。 笔者罗列几个可以进行内网穿透的工具:
- NATAPP:需要注册才能使用。
- Sunny-Ngrok:需要注册才能使用,免费版需要实名注册。
- Go-Tunnel:无需注册,免费使用,速度有限。
读者可以从网络上搜罗到的大部分内网穿透工具都是基于ngrok的
笔者使用的是定制过的Go-Tunnel:https://github.com/etutorial/WeEngine/tree/master/gotunnel 在下载的微擎源码根目录下,执行以下命令,便可启动内网穿透:
$ cd gotunnel && ./nogrok start web
Tunnel Status online
Version 1.7/1.7
Forwarding http://duanqz.gotunnel.net -> 127.0.0.1:8080
Http Server 127.0.0.1:8080 -> /Users/duanqz/Code/WeEngine
Web Interface disabled
# Conn 82
Avg Conn Time 245.97ms
正常启动时,Tunnel Status应该是online状态,内网地址127.0.0.1:8080被映射到公网的域名http://duanqz.gotunnel.net。 这里,还需简单说明一下Go-Tunnel的配置文件:
server_addr: "gotunnel.net:2333"
tunnels:
web:
subdomain: duanqz
root: "/Users/duanqz/Code/WeEngine"
proto:
http: ":8080"
- 配置文件中的服务器地址server_addr可能不稳定,导致内网穿透失败,此时,读者可以将其换成其他地址
- 配置文件中定义了一个隧道web,子域名是duanqz,端口是8080,读者可以根据自己的需要进行修改