我正在尝试让 amplify 监控在 raspberry pi 4 上运行的 ubuntu server 20.04 上的 mysql 数据库。我确信我已经正确设置了所有内容,并且已经将我的工作与许多互联网指南进行了交叉引用。但是,设置完成后,mysql 并未出现在 nginx amplify web 界面中。我的日志显示以下错误:
2022-08-08 10:32:41,134 [1824839] supervisor ps nginx output: [' 2074 1 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf', '1740162 2074 nginx: worker process', '1740163 2074 nginx: worker process', '1740165 2074 nginx: worker process', '1740166 2074 nginx: worker process', '1740168 2074 nginx: cache manager process', '']
2022-08-08 10:32:41,161 [1824839] supervisor nginx objects: ['5057a79cf47c63d99f326ae55fea2c99bc0e2dcfd6bc5cdc5492d770f0a55284']
2022-08-08 10:32:41,162 [1824839] supervisor status objects: []
2022-08-08 10:32:41,162 [1824839] supervisor api objects: []
2022-08-08 10:32:41,228 [1824839] supervisor failed to find running mysqld via "ps xao pid,ppid,command | grep -E 'mysqld( |$)'" due to AmplifySubprocessError
2022-08-08 10:32:41,228 [1824839] supervisor additional info:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/amplify/ext/mysql/managers.py", line 154, in _find_local
ps, _ = (ps, None) if ps is not None else subp.call(PS_CMD)
File "/usr/lib/python3/dist-packages/amplify/agent/common/util/subp.py", line 34, in call
raise AmplifySubprocessError(message=command, payload=dict(returncode=process.returncode, error=raw_err))
amplify.agent.common.errors.AmplifySubprocessError: (message=ps xao pid,ppid,command | grep -E 'mysqld( |$)', payload={'returncode': 1, 'error': ''})
2022-08-08 10:32:41,229 [1824839] supervisor mysql objects: []
有人了解这些错误吗?你能帮助我修复它们以使 mariaDB 出现在 Nginx Amplify 上吗?
答案1
mariadb 守护进程称为“mariadbd”,而 amplify-agent 正在寻找“mysqld”。
如果你跑
systemctl status mariadb
然后以“loaded”开头的行应该包含服务文件的位置
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
在本例中,它是“/lib/systemd/system/mariadb.service”。在文本编辑器中打开该文件,找到以
ExecStart=
然后将路径从指向“mariadbd”更改为“mysqld”。然后您需要重新加载守护程序并重新启动服务。
systemctl daemon-reload
systemctl restart mariadb
systemctl restart amplify-agent
代理现在应该能够找到该进程。
答案2
为了解决这个问题并让 MariaDB 出现在 Amplify 中,我做了以下操作:
systemctl status mariadb
● mariadb.service - MariaDB 10.10.3 数据库服务器已加载:已加载(/lib/systemd/system/mariadb.service;已启用;供应商预设:已启用)
这显示了服务文件的位置/lib/systemd/system/mariadb.service
readlink -f /usr/sbin/mysqld
显示 /usr/sbin/mysqld 是指向 的符号链接/usr/sbin/mariadbd
。使用文本编辑器打开服务文件
/lib/systemd/system/mariadb.service
找到以
ExecStart=
ExecStart=/usr/sbin/mariadbd $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION
并将路径从 更改/usr/sbin/mariadb
为/usr/sbin/mysqld
所以它看起来像:
ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION
保存文件并运行:
sudo systemctl daemon-reload
sudo systemctl restart mariadb
sudo systemctl restart amplify-agent
Mariadb 现在应该出现在 Nginx Amplify 中。