分类
服务器端

在树莓派上启用 PostgreSQL 对外服务

以前写过一篇笔记《树莓派4 安装 OpenResty + PostgreSQL》,记录如何在树莓派上装 PostgreSQL,不过那时候只是为了在上面做开发,没有考虑过对外服务。如今为了能够在别的机器上做开发,所以要想办法配置一下对外服务。

0. 系统

  • Raspberry Pi 4B
  • Debian 10 buster 更新到最新
  • 如上篇文章所述安装和配置 PostgrSQL

1. 判断本地运行状态。

# 查看服务状态
sudo service --status-all
# [ + ]  postgresql

# 查看端口
sudo netstat -plunt | grep postgres
# tcp        0      0 127.0.0.1:5432            0.0.0.0:*               LISTEN      6629/postgres

服务在运行,端口也在侦听,直接连接,失败,被服务器拒绝。

2. 安装防火墙工具调整规则

猜测可能跟防火墙有关,iptables 我不熟,所以安装 ufw 帮忙:

# 安装
sudo apt install ufw

# 启动端口
sudo ufw allow 5432
sudo ufw allow from 10.0.0.10 # 我的 iMac

3. 修改侦听端口

修改防火墙后还是连不上。使用 Telnet 工具可以本地连接,但不能远程连接,推断应该是侦听端口的问题。回去仔细看了一下端口状态,觉得应该是端口没配好,所以修改配置,侦听 0.0.0.0,然后重启 PostgreSQL 服务,再连接就成功了。

listen_addresses = '0.0.0.0' 
port = 5432
host    all             all              0.0.0.0/0                       md5
host    all             all              ::/0                            md5

参考链接:

分类
服务器端

解决 Raspberry Pi 4 安装 php-mbstring/php-curl 的问题

最近要在 flarum 上做二次开发,尝试直接用 php -S localhost:8080 未果,于是打算在树莓派上搭个开发环境,省得它整日落灰。

因为在本地创建过仓库,所以这次直接从 GitHub clone 项目下来,然后打算执行 composer install 安装依赖。结果提示差了 php-mbstring(解决汉字等多字节字符)和 php-curl(用于远程请求)两个模块。然后我就打算用 apt install php-curl 安装模块,没想到失败了,仔细看错误信息,因为这个模块依赖 libcurl3,但是系统里是 libcurl4,所以不行。

那就安装 libcurl3 呗,结果系统认为明显 libcurl4 更新,不给装 3,哪怕删了重装都不行。

后来查了半天,找到答案。原来我添加的源是 stretch 的,也就是面向 Debian 9 的;而 Raspberry Pi 的系统是基于 Debian 10,也就是 buster 的,所以依赖处理上,两方面就冲突了。

这个时候,需要用 sh -c 'echo "deb https://packages.sury.org/php/ buster main" > /etc/apt/sources.list.d/php.list' 把属于“buster”的源添加进系统,接着删掉之前 stretch 的源,然后 apt update 之后,就可以正常安装了。


参考链接:https://github.com/oerdnj/deb.sury.org/issues/1193