diff --git a/book.xml b/book.xml index 98d0c7f..4803955 100644 --- a/book.xml +++ b/book.xml @@ -21,11 +21,16 @@ - 开始使用 - Web 服务器配置 + Tutorial + 开始使用 + Web 服务器配置 + + + Configurations 页面选项 Prism 代码高亮]]> diff --git a/configurations/config-php.md b/configurations/config-php.md new file mode 100644 index 0000000..d4f591f --- /dev/null +++ b/configurations/config-php.md @@ -0,0 +1,5 @@ +# config.php + +config.php 是一个用来为 ph-Bookshelf 设置 php 环境的脚本。 + +可以通过里面的字段来调整 ph-Bookshelf 的环境。 diff --git a/faq.md b/faq.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/faq.md @@ -0,0 +1 @@ + diff --git a/get-started.md b/tutorial/get-started.md similarity index 70% rename from get-started.md rename to tutorial/get-started.md index 19db593..4fa33ff 100644 --- a/get-started.md +++ b/tutorial/get-started.md @@ -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" >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 + + + ServerName book.example.com + DocumentRoot /path/to/your/ph-bookshelf + + # ...any others + + php_admin_value open_basedir /path/to/your/ph-bookshelf + + # ...any others + + +``` + +### 如果你使用了软链接 + +`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 和各种书籍了。 -*未完待续* +*data 模板正在 WIP 当中* diff --git a/web-server.md b/tutorial/web-server.md similarity index 98% rename from web-server.md rename to tutorial/web-server.md index 5a37fcc..cc88d32 100644 --- a/web-server.md +++ b/tutorial/web-server.md @@ -41,7 +41,7 @@ Module rewrite already enabled 然后,为你的 ph-Bookshelf 目录配置允许路径重写: ```apacheconf - + AllowOverride All ```