add open_basedir intro
This commit is contained in:
parent
edc4fd1c9d
commit
d901f626d4
9
book.xml
9
book.xml
@ -21,11 +21,16 @@
|
||||
|
||||
<Separator/>
|
||||
|
||||
<Page id="get-started">开始使用</Page>
|
||||
<Page id="web-server">Web 服务器配置</Page>
|
||||
<Title>Tutorial</Title>
|
||||
<Page id="tutorial/get-started">开始使用</Page>
|
||||
<Page id="tutorial/web-server">Web 服务器配置</Page>
|
||||
|
||||
<Separator />
|
||||
|
||||
<!-- <Title>Setup</Title>
|
||||
<Page id="configurations/config-php">config.php</Page> -->
|
||||
|
||||
<Title>Configurations</Title>
|
||||
<Chapter root="tools/">
|
||||
<caption>页面选项</caption>
|
||||
<Page id="code-highlight"><![CDATA[<small>Prism </small>代码高亮]]></Page>
|
||||
|
5
configurations/config-php.md
Normal file
5
configurations/config-php.md
Normal file
@ -0,0 +1,5 @@
|
||||
# config.php
|
||||
|
||||
config.php 是一个用来为 ph-Bookshelf 设置 php 环境的脚本。
|
||||
|
||||
可以通过里面的字段来调整 ph-Bookshelf 的环境。
|
@ -1,7 +1,8 @@
|
||||
---
|
||||
title: 开始使用
|
||||
configurations:
|
||||
prism.plugins: 'command-line'
|
||||
prism.plugins: 'command-line; treeview'
|
||||
---
|
||||
---
|
||||
|
||||
跟随下面的指导,你将可以手动安装运行 ph-Bookshelf。
|
||||
@ -38,7 +39,7 @@ class="command-line"
|
||||
data-user="root"
|
||||
data-output="2-8, 14-19, 21-52"
|
||||
><code class="lang-bash"
|
||||
>git clone https://github.com/suk-ws/ph-bookshelf.git your-bookshelf-website-root-dir
|
||||
>git clone https://github.com/suk-ws/ph-bookshelf.git ph-bookshelf
|
||||
Cloning into 'ph-bookshelf'...
|
||||
remote: Enumerating objects: 860, done.
|
||||
remote: Counting objects: 100% (390/390), done.
|
||||
@ -46,7 +47,7 @@ remote: Compressing objects: 100% (234/234), done.
|
||||
remote: Total 860 (delta 212), reused 314 (delta 144), pack-reused 470
|
||||
Receiving objects: 100% (860/860), 822.58 KiB | 2.09 MiB/s, done.
|
||||
Resolving deltas: 100% (461/461), done.
|
||||
cd your-bookshelf-website-root-dir
|
||||
cd ph-bookshelf
|
||||
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
|
||||
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
|
||||
php composer-setup.php
|
||||
@ -133,14 +134,67 @@ Alternatively, you can run Composer with `--ignore-platform-req=ext-xml --ignore
|
||||
|
||||
尝试安装 php 插件 `xml` 来解决问题。
|
||||
|
||||
> 在最新版的 Debian 上,可以通过 apt 来安装 php 插件:`# apt install php-xml`{.lang-shell-session}。
|
||||
>
|
||||
> 在其它系统上,尝试搜索 *php enable extension xml* 来解决这类问题
|
||||
> 对于不同的 php 安装方式,安装插件的方式也会有不同。如果你和我一样都是在 Debian 上通过仓库安装的最新版 php,可以通过 apt 来安装 php 插件:`# apt install php-xml`{.lang-shell-session}。如果你是用的是其它的安装方式,尝试搜索 *php enable extension xml* 来解决这类问题。
|
||||
|
||||
## 配置网站安全设置
|
||||
|
||||
*我们正在努力在代码层面实现保护以避免任何形式的攻击*
|
||||
|
||||
ph-bookshelf 默认并不会对能够打开的文件路径做出限制。这意味着在生产服务器上,你最好通过 PHP 的 [`open_basedir`](https://www.php.net/manual/en/ini.core.php#ini.open-basedir) 设置网站所能够访问的路径,以避免路径构建攻击。
|
||||
|
||||
最简单的方式,就是通过在网站根目录放置 `.user.ini` 文件并在此处设置 `open_basedir` 属性:
|
||||
|
||||
```ini
|
||||
open_basedir = /path/to/your/ph-bookshelf
|
||||
```
|
||||
|
||||
当然,这个属性也可以在 Apache 服务配置器中设置,像以下这样:
|
||||
```apacheconf
|
||||
<VirtualHost _default_:443>
|
||||
|
||||
ServerName book.example.com
|
||||
DocumentRoot /path/to/your/ph-bookshelf
|
||||
|
||||
# ...any others
|
||||
|
||||
php_admin_value open_basedir /path/to/your/ph-bookshelf
|
||||
|
||||
# ...any others
|
||||
|
||||
</VirtualHost>
|
||||
```
|
||||
|
||||
### 如果你使用了软链接
|
||||
|
||||
`open_basedir` 会解析文件的绝对链接然后进行访问控制,这意味着,如果你的网站,或者是你的 `/data` 目录是通过软连接挂载进来的,你需要在 `open_basedir` 里面添加上软链接的目标目录。
|
||||
|
||||
For example, 如果你的目录结构像是以下这样:
|
||||
```treeview
|
||||
/
|
||||
|-- path/
|
||||
| └── to/
|
||||
| └── your/
|
||||
| └── ph-bookshelf
|
||||
| |-- .user.ini
|
||||
| |-- .htaccess
|
||||
| |-- index.php
|
||||
| |-- data/ -> /data-drive/books
|
||||
| └── ...
|
||||
└── data-drive/
|
||||
└── books/
|
||||
└── bookshelf.xml
|
||||
└── ...
|
||||
```
|
||||
|
||||
那么你将需要这样设置 `open_basedir`
|
||||
```ini
|
||||
open_basedir = /path/to/your/ph-bookshelf:data-drive/books
|
||||
```
|
||||
|
||||
## 完成搭建
|
||||
|
||||
配置完成上面这些之后,你就可以将 `/path/to/your-bookshelf-website-root-dir` 作为你的 Web 服务器根目录来建立一个站点,至此,你已经完成了 ph-Bookshelf 站点的搭建。
|
||||
配置完成上面这些之后,你就可以将 `/path/to/your/ph-bookshelf` 作为你的 Web 服务器根目录来建立一个站点,至此,你已经完成了 ph-Bookshelf 站点的搭建。
|
||||
|
||||
现在,在 `/path/to/your-bookshelf-website-root-dir/data` 目录下,你可以去配置你的 bookshelf.xml 和各种书籍了。
|
||||
现在,在 `/path/to/your/ph-bookshelf/data` 目录下,你可以去配置你的 bookshelf.xml 和各种书籍了。
|
||||
|
||||
*未完待续* <!-- todo -->
|
||||
*data 模板正在 WIP 当中* <!-- todo -->
|
@ -41,7 +41,7 @@ Module rewrite already enabled</code></pre>
|
||||
然后,为你的 ph-Bookshelf 目录配置允许路径重写:
|
||||
|
||||
```apacheconf
|
||||
<Directory /path/to/your/ph-Bookshelf>
|
||||
<Directory /path/to/your/ph-bookshelf>
|
||||
AllowOverride All
|
||||
</Directory>
|
||||
```
|
Loading…
Reference in New Issue
Block a user