Change MySQL socket path for FreePBX

FreePBX 12 alpha 如果掉电重启,已多次发生 DB error,改装 FreePBX 11 仍有发生。虽然我已查明这是 MySQL socket 被锁定造成的,删除 /var/lib/mysql/mysql.sock 即可,但嫌 MySQL 不能自行修复,于是想到将 socket 移入内存 /dev/shm,掉电即不复存在,重启时每次都是重新生成 socket,不再有被锁定之忧。

怎么更改 MySQL socket path 呢?其实也不复杂,只需更改三个文件。

1. /etc/my.cnf
MySQL 自身的配置文件

socket=/var/lib/mysql/mysql.sock

更改为

socket=/dev/shm/mysql.sock

2. /etc/freepbx.conf
告诉 FreePBX socket 的新位置

$amp_conf['AMPDBHOST']  = 'localhost';

更改为

$amp_conf['AMPDBHOST']  = 'unix(/dev/shm/mysql.sock)';

你可能觉得 ‘unix(/dev/shm/mysql.sock)’ 的写法很奇怪。我摸索了好久才找到 PEAR DB 所用的 dsn 字符串中 MySQL socket path 的格式。

3. /etc/amportal.conf
告诉 asterisk socket 的新位置

AMPDBHOST=localhost;

更改为

AMPDBHOST=unix(/dev/shm/mysql.sock)

重启 MySQL 和 asterisk,确认 FreePBX System Status 是不是一片优雅的绿色(主要看 Server Status 块中的 Asterisk 和 MySQL 是否正常)?

FreePBX server green status
FreePBX server green status

Leave a comment

Your email address will not be published. Required fields are marked *