ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] October的所有配置文件都存储在**config /**目录中。每个选项都有记录,因此您可以随意浏览文件并熟悉可用的选项。 ## **Web服务器配置** 十月具有应该应用于您的网络服务器的基本配置。常见的Web服务器及其配置可以在下面找到。 ### **Apache配置** 如果您的Web服务器正在运行Apache,则还有一些额外的系统要求: 1. 应该安装mod\_rewrite 2. 应该打开AllowOverride选项 在某些情况下,您可能需要在`.htaccess`文件中取消注释此行: ~~~ ## ## You may need to uncomment the following line for some hosting environments, ## if you have installed to a subdirectory, enter the name here also. ## # RewriteBase / ~~~ 如果已安装到子目录,则还应添加子目录的名称: ~~~ RewriteBase /mysubdirectory/ ~~~ ### **Nginx配置** 在Nginx中配置您的网站需要进行一些小的更改。 `nano /etc/nginx/sites-available/default` 在**服务器**部分中使用以下代码。如果已将October安装到子目录中,请将第一个`/`位置指令替换为安装在October下的目录: ~~~ location / { # Let OctoberCMS handle everything by default. # The path not resolved by OctoberCMS router will return OctoberCMS's 404 page. # Everything that does not match with the whitelist below will fall into this. rewrite ^/.*$ /index.php last; } # Pass the PHP scripts to FastCGI server location ~ ^/index.php { # Write your FPM configuration here } # Whitelist ## Let October handle if static file not exists location ~ ^/favicon\.ico { try_files $uri /index.php; } location ~ ^/sitemap\.xml { try_files $uri /index.php; } location ~ ^/robots\.txt { try_files $uri /index.php; } location ~ ^/humans\.txt { try_files $uri /index.php; } ## Let nginx return 404 if static file not exists location ~ ^/storage/app/uploads/public { try_files $uri 404; } location ~ ^/storage/app/media { try_files $uri 404; } location ~ ^/storage/temp/public { try_files $uri 404; } location ~ ^/modules/.*/assets { try_files $uri 404; } location ~ ^/modules/.*/resources { try_files $uri 404; } location ~ ^/modules/.*/behaviors/.*/assets { try_files $uri 404; } location ~ ^/modules/.*/behaviors/.*/resources { try_files $uri 404; } location ~ ^/modules/.*/widgets/.*/assets { try_files $uri 404; } location ~ ^/modules/.*/widgets/.*/resources { try_files $uri 404; } location ~ ^/modules/.*/formwidgets/.*/assets { try_files $uri 404; } location ~ ^/modules/.*/formwidgets/.*/resources { try_files $uri 404; } location ~ ^/modules/.*/reportwidgets/.*/assets { try_files $uri 404; } location ~ ^/modules/.*/reportwidgets/.*/resources { try_files $uri 404; } location ~ ^/plugins/.*/.*/assets { try_files $uri 404; } location ~ ^/plugins/.*/.*/resources { try_files $uri 404; } location ~ ^/plugins/.*/.*/behaviors/.*/assets { try_files $uri 404; } location ~ ^/plugins/.*/.*/behaviors/.*/resources { try_files $uri 404; } location ~ ^/plugins/.*/.*/reportwidgets/.*/assets { try_files $uri 404; } location ~ ^/plugins/.*/.*/reportwidgets/.*/resources { try_files $uri 404; } location ~ ^/plugins/.*/.*/formwidgets/.*/assets { try_files $uri 404; } location ~ ^/plugins/.*/.*/formwidgets/.*/resources { try_files $uri 404; } location ~ ^/plugins/.*/.*/widgets/.*/assets { try_files $uri 404; } location ~ ^/plugins/.*/.*/widgets/.*/resources { try_files $uri 404; } location ~ ^/themes/.*/assets { try_files $uri 404; } location ~ ^/themes/.*/resources { try_files $uri 404; } ~~~ ### **Lighttpd配置** 如果您的网络服务器正在运行Lighttpd,您可以使用以下配置来运行OctoberCMS。使用您喜欢的编辑器打开您的站点配置文件。 `nano /etc/lighttpd/conf-enabled/sites.conf` 将以下代码粘贴到编辑器中,然后更改**主机地址**和**server.document-root**以匹配您的项目。 ~~~ $HTTP["host"] =~ "domain.example.com" { server.document-root = "/var/www/example/" url.rewrite-once = ( "^/(plugins|modules/(system|backend|cms))/(([\w-]+/)+|/|)assets/([\w-]+/)+[-\w^&'@{}[\],$=!#().%+~/ ]+\.(jpg|jpeg|gif|png|svg|swf|avi|mpg|mpeg|mp3|flv|ico|css|js|woff|ttf)(\?.*|)$" => "$0", "^/(system|themes/[\w-]+)/assets/([\w-]+/)+[-\w^&'@{}[\],$=!#().%+~/ ]+\.(jpg|jpeg|gif|png|svg|swf|avi|mpg|mpeg|mp3|flv|ico|css|js|woff|ttf)(\?.*|)$" => "$0", "^/storage/app/uploads/public/[\w-]+/.*$" => "$0", "^/storage/temp/public/[\w-]+/.*$" => "$0", "^/(favicon\.ico|robots\.txt|sitemap\.xml)$" => "$0", "(.*)" => "/index.php$1" ) } ~~~ ### **IIS配置** 如果您的Web服务器正在运行Internet信息服务(IIS),则可以在**web.config**配置文件中使用以下命令来运行OctoberCMS。 ~~~ <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <clear /> <rule name="OctoberCMS to handle all non-whitelisted URLs" stopProcessing="true"> <match url="^(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" pattern="^/.well-known/*" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" pattern="^/storage/app/uploads/.*" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" pattern="^/storage/app/media/.*" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" pattern="^/storage/temp/public/.*" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" pattern="^/themes/.*/(assets|resources)/.*" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" pattern="^/plugins/.*/(assets|resources)/.*" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" pattern="^/modules/.*/(assets|resources)/.*" negate="true" /> </conditions> <action type="Rewrite" url="index.php" appendQueryString="true" /> </rule> </rules> </rewrite> </system.webServer> </configuration> ~~~ ## **应用配置** ### **调试模式** 调试设置可在`config/app.php`配置文件中找到,并带有`debug`参数,默认情况下处于启用状态。 启用后,此设置将显示详细的错误消息以及其他调试功能。虽然在开发过程中很有用,但在实时生产站点中使用时,应始终禁用调试模式。这可以防止将潜在的敏感信息显示给最终用户。 启用时,调试模式使用以下功能: 1. 显示[详细的错误页面](#666)。 2. 失败的用户身份验证提供了特定原因。 3. 默认情况下,[合并资产](#666)不会缩小。 4. 默认情况下禁用[安全模式](#666)。 > **要点**:始终将`app.debug`设置设置`false`为生产环境。 ### **安全模式** 安全模式设置可在`config/cms.php`配置文件中找到,并带有`enableSafeMode`参数。默认值为`null`。 如果启用了安全模式,出于安全原因,CMS模板中的PHP代码部分将被禁用。如果设置为`null`,则在禁用[调试模式](#122)时安全模式打开。 ### **CSRF保护** October提供了一种简单的方法来保护您的应用程序免受跨站点请求伪造。首先,随机令牌放在用户的会话中。然后,当使用[开始表单标记时,](#666)将令牌添加到页面并随每个请求一起提交。 虽然默认情况下启用CSRF保护,但您可以使用配置文件中的`enableCsrfProtection`参数禁用它`config/cms.php`。 ### **Bleeding edge 更新** October平台和一些市场插件将分两个阶段实施变更,以确保平台的整体稳定性和完整性。这意味着除了默认的*稳定版本*之外,它们还有一个*测试**版本*。 您可以通过更改配置文件中的`edgeUpdates`参数来指示平台更喜欢来自市场的测试版本`config/cms.php`。 ~~~ /* |-------------------------------------------------------------------------- | Bleeding edge updates |-------------------------------------------------------------------------- | | If you are developing with October, it is important to have the latest | code base, set this value to 'true' to tell the platform to download | and use the development copies of core files and plugins. | */ 'edgeUpdates' => false, ~~~ > **注意:**对于插件开发人员,我们建议通过“插件设置”页面为市场上列出的插件启用**测试更新**。 > > **注意:**如果使用[Composer](#666)管理更新,请`composer.json`使用以下内容替换文件中的默认OctoberCMS要求,以便直接从开发分支下载更新。 ~~~ "october/rain": "dev-develop as 1.0", "october/system": "dev-develop", "october/backend": "dev-develop", "october/cms": "dev-develop", "laravel/framework": "5.5.*@dev", ~~~ ### **使用公用文件夹** 为了在生产环境中获得最高安全性,您可以将Web服务器配置为使用**公共/**文件夹以确保只能访问公共文件。首先,您需要使用该`october:mirror`命令生成公用文件夹 ~~~ php artisan october:mirror public/ ~~~ 这将在项目的基本目录中创建一个名为**public /**的新目录,从此处您应该修改Web服务器配置以将此新路径用*作主*目录,也称为*wwwroot*。 > **注意**:可能需要使用系统管理员或*sudo*权限执行上述命令。它也应该在每次系统更新后或安装新插件时执行。 ## **环境配置** ### **定义基础环境** 根据运行应用程序的环境来设置不同的配置值通常很有用。您可以通过设置`APP_ENV`环境变量来实现,默认情况下,它设置为**生产**环境变量。有两种常用方法可以更改此值: 1. `APP_ENV`直接使用您的网络服务器设置值。 例如,在Apache中,可以将此行添加到`.htaccess`或`httpd.config`文件中: ~~~ SetEnv APP_ENV "dev" ~~~ 2. 使用以下内容在根目录中创建**.env**文件: ~~~ APP_ENV=dev ~~~ 在上述两个示例中,环境都设置为新值`dev`。现在可以在路径**config / dev中**创建配置文件,并覆盖应用程序的基本配置。 例如,要`dev`仅为环境使用不同的MySQL数据库,请使用以下内容创建名为**config / dev / database.php**的文件: ~~~ <?php return [ 'connections' => [ 'mysql' => [ 'host' => 'localhost', 'port' => '', 'database' => 'database', 'username' => 'root', 'password' => '' ] ] ]; ~~~ ### **域驱动环境** October支持使用特定主机名检测到的环境。您可以将这些主机名放在环境配置文件中,例如**config / environment.php**。 使用下面的文件内容,当通过**global.website.tld**访问应用程序时,环境将被设置为`global`,对于其他环境也是如此。 ~~~ <?php return [ 'hosts' => [ 'global.website.tld' => 'global', 'local.website.tld' => 'local', ] ]; ~~~ ### **转换为DotEnv配置** 作为[基本环境配置](#175)的替代方法,您可以在环境中放置常用值,而不是使用配置文件。然后使用[DotEnv](https://github.com/vlucas/phpdotenv)语法访问配置。运行`october:env`命令将公共配置值移动到环境中: ~~~ php artisan october:env ~~~ 这将在项目根目录中创建一个**.env**文件,并修改配置文件以使用`env`帮助程序功能。第一个参数包含在环境中找到的键名,第二个参数包含可选的默认值。 ~~~ 'debug' => env('APP_DEBUG', true), ~~~ 您的`.env`文件不应该提交给应用程序的源代码控制,因为使用您的应用程序的每个开发人员或服务器都可能需要不同的环境配置。