快速部署
本文仅列出运行一个站点所必需的步骤。每一步的可选参数、备选做法与故障排查,参见部署。
准备
- 一台 Linux、macOS 或 Windows 机器。macOS 上请使用普通账户,不要使用 root。
- 一个指向这台机器的域名,以及一个用于提供上传文件的域名。两个域名的 A 记录都指向本机公网 IP。
- 若要启用 HTTPS,机器需可从公网访问 80 与 443 端口。
数据库不需要自行准备,pwikit 自带 PostgreSQL。
四步
获取 pwikit,并进入其所在的目录。该目录即数据目录,
files/、pgdata/等均创建在此。安装脚本安装到当前目录,该目录必须为空。在 Linux 与 macOS 上:
shmkdir /opt/pwikit && cd /opt/pwikit curl -fsSL https://github.com/WikitTeam/ProjectWikit/releases/latest/download/install.sh | shWindows 上在 PowerShell 中执行
irm https://github.com/WikitTeam/ProjectWikit/releases/latest/download/install.ps1 | iex。也可以从 GitHub Releases 下载发布包自行解压。无法访问 GitHub 时见部署。注意 自行解压发布包时,完成第 4 步之前无法直接输入
pwikit。无论使用哪种方式获取,第 2、3 步都可以在该目录中以./pwikit执行(Windows 为.\pwikit.exe)。创建站点。此命令将自行创建数据库与数据表,无需先启动服务:
sh./pwikit createsite -slug 站点标识名 -title "我的维基" -headline "维基副标题" \ -domain wiki.example.org -media-domain files.example.org请将两个域名替换为您自己的域名。如需在本机试用,请使用
-domain localhost,随后访问http://localhost:8080。写入内容并创建管理员。 按站点的来源二选一。
新建空站点,写入初始页面:
sh./pwikit seed ./pwikit admin create -name "您的用户名"从 Wikidot 导入,按以下顺序:
将解压后的 wikitCLI 备份放进数据目录的
archive/,该目录由第 2 步创建。放好后应为:textarchive/ _users/ 账号信息,一组 .json 文件 xxx-wiki/ 站点目录,目录名即站点标识名 meta/site.json 站点信息,有该文件才会被认作站点 meta/pages/ 每个页面的标题、标签、版本、评分 pages/ 页面源代码,每页一个 .7z files/ 附件 forum/ 论坛_users/必须与站点目录放在一起,否则导入的页面历史、评分和评论都将丢失作者。有多个站点时,将各个站点目录并排放在archive/中,共用同一个_users/。备份的完整结构见备份文件。导入。不指定目录时,
pwikit import读取archive/:sh./pwikit importarchive/中有多个站点时,加-from <站点目录名>选择一个。结束时的汇总里N accounts应与备份中的账号数相当。无法读取_users/时,导入将拒绝执行,且不写入任何内容。导入完成后再创建管理员,
-name填写您自己的 Wikidot 用户名,这样导入的账号及其页面才归属于您:sh./pwikit admin create -name "您的 Wikidot 用户名"
admin create会以不回显的方式要求输入密码。该账号在本实例的所有站点上拥有全部权限。注意 导入前的备份、标签与评分的处理、再次导入的规则以及报错的含义,见从 Wikidot 导入。
安装为系统服务,使其开机自启。这一步同时让
pwikit可以在任意目录直接输入:shsudo ./pwikit service install sudo ./pwikit service startWindows 上请在管理员终端中执行
.\pwikit.exe service install与.\pwikit.exe service start。首次启动需要解压并初始化 PostgreSQL,比之后的启动慢;pwikit service status可查看是否已在运行。不安装服务时,也可以在前台运行
./pwikit serve,但关闭终端后 pwikit 将停止运行。此时请执行./pwikit path install,以便直接输入pwikit。希望隔离权限、不以 root 运行时,见以专用的普通账户运行。
站点域名是公网域名时,pwikit 自动申请并续期 HTTPS 证书,监听 80 与 443 端口。
完成后
注意 请尽快在管理后台的 站点设置 中填写 注册后的身份组 与 认领后的身份组,新站点可直接选择预置的
member身份组。在此之前,新注册的成员和认领 Wikidot 账号的成员仅持有registered,而registered默认没有任何权限,他们无法编辑页面。见站点管理。预置的
member与admin身份组只是一套通用起点,也请尽快在 身份组 中按站点的规则调整它们的权限。见内置身份组。
- 从现在起可以在任意目录直接使用
pwikit,例如pwikit site list。Windows 上请先重新打开终端。 - 在站点域名的
/-/login登录,管理后台在/-/admin。 - 需要发送验证邮件与找回密码邮件时,在
pwikit.toml的[mail]一节填写 SMTP 服务器。未配置时,这些邮件写入日志而不发出。见配置。 - 在站点管理中设置站点标题、主题、身份组与权限。
- 定期执行
pwikit backup create备份。见运维。 - 以系统服务方式安装后,pwikit 会在凌晨自动更新到新版本,失败时自动回档。见更新与回档。
- 以后需要更换磁盘或目录时,请按搬迁实例重新注册服务。
常见问题点
| 现象 | 处理 |
|---|---|
输入 pwikit 提示找不到命令 | 完成第 4 步之前请使用 ./pwikit。安装后仍无法找到时,请执行 ./pwikit path status 查看;Windows 上请先重新打开终端 |
| 提示不能以 root 身份运行 | 此问题出现在 macOS 上。内置 PostgreSQL 拒绝以 root 身份运行,请改用普通账户执行 |
| 提示内置 PostgreSQL 无法进入某个目录 | 在 Linux 上以 root 运行时,PostgreSQL 以单独的账户运行。请将 pwikit 从 /root 移到 /opt 或 /srv 下 |
| 无法监听 80 或 443 端口 | 以系统服务方式安装,或参见部署 |
| 访问显示 站点不存在 | 访问的域名没有绑定站点。请检查 createsite 填写的域名,或使用 pwikit site rebind 更改 |
导入报 the backup names authors but holds no accounts | 未读取到 _users/,通常是因为 _users/ 没有与站点目录放在一起。此时未写入任何内容,将其放入 archive/ 后重新执行 ./pwikit import 即可,见从 Wikidot 导入 |
导入报 archive does not exist | 数据目录中没有 archive/。请确认执行的是第 1 步得到的 pwikit,并将备份放入其 archive/ |
导入报 no site under "<path>" | archive/ 及其下一层都没有 meta/site.json,请检查备份是否放错了层级 |
| 页面没有样式 | 使用的构建不含页面静态资源,见部署 |
其他问题见部署中的故障排查;导入相关的问题见从 Wikidot 导入。
