安装

环境要求

Fresns 是一款基于 PHP 和 MySQL 开发的社交社区网络服务软件。

环境服务
Web 服务器Nginx 或 Apache 或 IIS 或 Caddy
程序语言PHP 8.0 或以上
数据库MySQL 5.7 或 8.x
数据库存储引擎InnoDB
数据库排序规则MySQL 5.7 utf8mb4_unicode_520_ci

MySQL 8.x utf8mb4_0900_ai_ci

PHP 配置要求

  • 扩展要求支持:fileinfo
  • 函数要求启用:putenv symlink readlink proc_open

服务器运行环境的配置,网上有很多教程,大家可以自行搜索学习(国内外也有很多免费的可视化面板);各大主机服务商的文档中心与服务市场也有教学和服务;所以在这里我们就不教大家如何配置运行环境了。

开始安装

1、下载 Fresns 主程序安装包open in new window

2、配置 Web 服务器

备注:由于“网站根目录”不是“主程序根目录”,网站运行时会向上请求主程序根目录文件,所以请勿开启 防跨站攻击(open_basedir) 的功能配置。

3、将主程序根目录 .env.example 文件重命名为 .env

4、填写 .env 文件中数据库信息

APP_ENV=production //正式运营环境配置为 production
APP_URL=主程序网址 //例如 https://discuss.fresns.cn

DB_HOST=数据库主机 //默认为 127.0.0.1
DB_PORT=数据库主机端口 //默认为 3306
DB_DATABASE=数据库名
DB_USERNAME=用户名
DB_PASSWORD=密码
DB_PREFIX=表前缀 //默认为 fs_
DB_COLLATION=utf8mb4_0900_ai_ci  //数据库排序规则,根据数据库版本选择适合的规则

5、执行安装命令

在主程序根目录,使用「终端」执行 Laravel 命令行接口执行安装。

// 5.1、导入数据结构
php artisan migrate

// 5.2、填充初始化数据
php artisan db:seed

//5.3、生成加密密钥
php artisan key:generate

//5.4、生成存储软链接
php artisan storage:link

 


 


 


 
//如果 php 命令无效,请带上 php 路径,以宝塔为例
/www/server/php/80/bin/php artisan migrate
/www/server/php/80/bin/php artisan db:seed
/www/server/php/80/bin/php artisan key:generate
/www/server/php/80/bin/php artisan storage:link

6、验证环境和注册管理员账号

  • 访问 网址/install/fresns
  • 根据流程检测环境和数据库情况
  • 填写管理员信息,注册管理员账号
  • 完成

URL 重写

请确保你的 Web 服务器将所有请求定向到 public/index.php 目录文件,永远不要尝试将 index.php 文件移动到主程序根目录,因为从主程序根目录运行程序会将许多敏感文件暴露在公共互联网上,这是非常不安全的运行方式。

Nginx

location / {
    try_files $uri $uri/ /index.php?$query_string;
}
1
2
3

Apache

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

IIS

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Imported Rule 1" stopProcessing="true">
          <match url="^(.*)/quot; ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
          </conditions>
          <action type="Redirect" redirectType="Permanent" url="/{R:1}" />
        </rule>
        <rule name="Imported Rule 2" stopProcessing="true">
          <match url="^" ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

Caddy

rewrite {
    to {path} {path}/ /index.php?{query}
}
1
2
3

目录结构

fresns/         //主程序根目录
├── app/            //核心代码目录
├── bootstrap/      //引导程序目录
├── config/         //配置文件目录
├── database/       //数据文件目录
├── plugins/        //插件目录
├── themes/         //主题目录
├── public/         //网站根目录
│   ├── assets/         //扩展静态文件
│   ├── static/         //内置静态文件
│   ├── index.php       //网站入口文件
│   ├── favicon.ico     //站点 ico 图标
│   └── robots.txt      //搜索引擎 Robots 协议
├── resources/      //框架资源目录
├── routes/         //路由文件目录
├── storage/        //框架存储目录
├── vendor/         //引用库文件目录
├── artisan         //框架命令行接口
├── compose.json    //引用库信息
├── compose.lock    //引用库锁定文件,各个库版本信息
├── .env.example    //配置参数文件模板(使用时修改为 .env 文件名)
├── install.lock    //安装锁定文件,有该文件后,禁止再执行安装
└── LICENSE         //版权文件

目录所有权

在安装过程中,Fresns 可能会要求您将某些目录设置为可写。要使 Linux 上的某个目录可写,可以执行以下命令:

chmod 755 /path/to/directory

如果 Fresns 对某个目录及其子目录请求写权限,请添加 -R 选项,以递归更新该目录和其内的文件及子目录权限:

chmod 755 -R /path/to/directory

如果在完成以上操作后,Fresns 仍要求您改变权限,请先尝试将 755 权限改为 775 试一遍,依然不行的话,您可能需要检查文件(夹)的所有者和所属组群是否正确。

环境有别

您的服务器环境可能会与本文示例不同,请查看您的 Web 服务器配置或咨询 Web 托管提供商,以了解 PHP 和 Web 服务器默认运行在哪个用户或组下。

权限禁忌 777

绝不要将任何文件夹或文件的权限设置为 777 级别,这个权限允许任何人(无论用户还是组)随意访问文件夹和文件的内容,严重威胁安全。