Installation

Server Requirements

Before you install Fresns, it's important to check that your server meets the requirements. To run Fresns, you will need:

EnvironmentServices
Web 服务器Nginx 或 Apache 或 IIS 或 Caddy
程序语言PHP 8.0.0 或以上
数据库MySQL 8.0.0 或以上
数据库排序规则utf8mb4_0900_ai_ci
数据库存储引擎InnoDB
PHP 配置说明
  • 扩展要求支持:fileinfo
  • 函数要求启用:putenv symlink readlink

Directory Structure

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

Installing

Fresns 有 3 种安装方式,根据自己的情况任选其中一种即可。

方法1:下载文件包安装

下载安装包

方法2:Composer 安装

待正式版发布后完善

方法3:基于 Docker 容器安装

待正式版发布后完善

URL Rewriting

请确保你的 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