这台机器给过来的时候是干净的:OpenCloudOS 9.6,装了宝塔面板,但 nginx、PHP、数据库一个没起,/www/wwwroot 是空的。记录一下从零到能访问的几个坎。
安装包名和别处不一样
软件源里有 nginx-core 1.29、php-fpm 8.3、mariadb-server 10.11,但没有 nginx 和 php 这两个元包。dnf install nginx php 会直接报 Unable to find a match。逐包装才顺,顺带把 php-mysqlnd、php-gd、php-mbstring、php-xml、php-pecl-zip 补齐。
nginx-core 不带 systemd unit
最费时间的是这个:包装完 systemctl start nginx 回 Unit nginx.service not found,nginx -t 却是好的。原因是服务文件在另外的包里。自己补一个 unit 最省事,用 Type=simple 加 nginx -g 'daemon off;',连 PIDFile 都不用纠结。
nginx 和 php-fpm 要同一个用户
默认 php-fpm 跑 apache,而这里 nginx 跑 nginx。站点目录、上传目录、session 目录的写权限会互相打架。把 www.conf 里的 user/group 一起改成 nginx,再把 fastcgi 走 127.0.0.1:9000,比调 unix socket 的 ACL 省心。
安装向导提交时别忘了 Host 头
emlog 的 install.php?action=install 是标准表单,可以用 curl 无人值守提交。但它会把 BLOG_URL 写成当次请求的域名——如果图省事用 http://127.0.0.1/install.php 提交,以后所有链接都会指到 127.0.0.1。正确做法是带 -H "Host: 你的域名",装完再核对一遍数据库里 blogurl 的值。
最后两步
建库时直接指定 utf8mb4;证书用 certbot 的 webroot 模式签,80 端口只留 /.well-known/acme-challenge/ 给续期用,其余 301 到 HTTPS。装完记得确认 install.php 已被删掉(向导会自己删),以及清一次 content/cache/ 下的缓存,否则改过的站点配置不会立刻生效。