flarum 论坛搭建

Composer 安装与使用

Flarum 使用 Composer 来管理其依赖包和扩展程序

安装,参考:https://getcomposer.org/download/

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

安装程序脚本将简单地检查一些 php.ini 设置,如果设置不正确,则会发出警告,然后在当前目录中下载最新的 composer.phar。上面的 4 行将按顺序说明:

  • 下载安装程序到当前目录
  • 验证安装程序 SHA-384,也可以在此处交叉检查
  • 运行安装程序
  • 删除安装程序

安装成功后将在当前目录下生成composer.phar

使用--version验证安装是否成功:

$ php composer.phar --version
Composer version 2.7.9 2024-09-04 14:43:28
PHP version 8.3.10 (/usr/lib64/php8.3/bin/php)
Run the "diagnose" command to get more detailed diagnostics output.

安装 flarum

php 需要以下扩展:curl、dom、fileinfo、gd、json、mbstring、openssl、pdo_mysql、tokenizer、zip

Gentoo 系统下编辑package.usedev-lang/php fpm curl gd pdo mysql zip

使用 Composer 工具从 Flarum 的 GitHub 仓库下载并安装 Flarum 的最新版本,并将其放在目录 flarum 中:

php composer.phar create-project flarum/flarum flarum/

配置 nginx

如果 conf.d 目录不存在,则创建,并在/etc/nginx/nginx.conf中添加:

http {
    include /etc/nginx/conf.d/*.conf;
}

编辑:/etc/nginx/conf.d/flarum.conf

server {
    listen 90;
    server_name localhost;
    root /home/vv/project/CyberSpirit/forum/flarum/public;
    index index.php index.html index.htm;
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php-fpm.socket;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
    include /home/vv/project/CyberSpirit/forum/flarum/.nginx.conf;
}

这段 Nginx 配置用于设置一个 Web 服务器,以支持运行在 localhost 的 Flarum 应用。以下是各部分的详细解释:

  1. server { ... }
    一个 server 块,表示 Nginx 的一个虚拟主机配置。

  2. listen 90;
    指定服务器监听的端口,这里是 90。浏览器访问时需要在 URL 中指定端口,例如 http://localhost:90

  3. server_name localhost;
    指定服务器的名称,这里是 localhost。表示此配置处理针对 localhost 的请求。

  4. root /home/vv/project/CyberSpirit/forum/flarum/public;
    指定网站的根目录。在这个配置中,所有请求都会从这个路径查找文件。

  5. index index.php index.html index.htm;
    指定默认的索引文件。当访问一个目录时,Nginx 会尝试按照此顺序查找这些文件。

  6. location ~ \.php$ { ... }
    定义一个 location 块,处理以 .php 结尾的请求。正则表达式 ~ 表示该匹配为正则匹配。

    • include fastcgi_params;
      包含 FastCGI 参数配置文件,定义与 FastCGI 通信所需的参数。

    • fastcgi_pass unix:/run/php-fpm.socket;
      指定 PHP-FPM 服务的地址和端口,通常是 127.0.0.1:9000,这里选择unix:/run/php-fpm.socket

    • fastcgi_index index.php;
      指定默认的 PHP 文件,当请求目录时,Nginx 将尝试使用 index.php

    • fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      设置 FastCGI 参数 SCRIPT_FILENAME,告诉 PHP-FPM 处理哪个文件。这里将 $document_root(根目录)与 $fastcgi_script_name(请求的脚本名)组合起来。

  7. include /home/vv/project/CyberSpirit/forum/flarum/.nginx.conf;
    引入额外的 Nginx 配置文件,可能包含其他配置,如安全设置、压缩、缓存等。

这段配置的总体作用是将所有访问 localhost 的请求(特别是 .php 文件)传递给 PHP-FPM 进行处理,并确保可以正确找到和执行 Flarum 应用的入口文件。

其中/etc/php/fpm-php8.3/fpm.d/www.conf:

  • listen = /run/php-fpm.socket
  • listen.owner = nginx
  • listen.group = nginx
  • user = nginx
  • group = nginx

测试nginx配置是否正确

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重新加载

$ sudo nginx -s reload

打开对应网页:http://localhost:90/

nginx init

首先修改读写权限

sudo chmod 775 -R flarum

然后更改组权限

chown -R nginx:nginx /path/to/directory

还是存在问题:

2024/10/01 00:01:23 [error] 1751#0: *11 FastCGI sent in stderr: "PHP message: PHP Warning:  file_put_contents(/home/vv/project/CyberSpirit/forum/flarum/storage/sessions/zHnFCrDJ9yufNQEG6AZn73r1HX284Fv6Rme6MgYg): Failed to open stream: Permission denied in /home/vv/project/CyberSpirit/forum/flarum/vendor/illuminate/filesystem/Filesystem.php on line 187" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost:90"

但是可以发现是 php-fpm 相关的问题,找到对应的配置文件

发现/etc/php/fpm-php8.3/fpm.d/www.conf

user = nobody
group = nobody

修改为

user = nginx
group = nginx

刷新页面,已经能够正常访问

writable

数据库的创建

CREATE DATABASE flarum;
CREATE USER 'flarum'@'localhost' IDENTIFIED BY 'your_passwd';
GRANT ALL PRIVILEGES ON flarum.* TO 'flarum'@'localhost';
FLUSH PRIVILEGES;

success enter

更新

php composer.phar update --prefer-dist --no-plugins --no-dev -a --with-all-dependencies
php flarum migrate
php flarum cache:clear

comment: