当前位置: 首页 > 工具软件 > BookStack > 使用案例 >

自建家居 Wiki 系统(BookStack 服务)

时修贤
2023-12-01

最近想着家里搭建一个 Wiki 系统,用于记录家人之间的一些小事情。调研了一下现在的一些方案,Confluence、WikiMedia、dokuwiki、wiki.js 等,出于自己的诉求:

  • 开源、免费、简单
  • 可以使用 WYSIWYG 编辑框或 Markdown 来写文章
  • 非公共,需要账号登录后查看
  • 占用较少的系统资源

因此最后选定了 BookStack 作为家居 Wiki 服务的框架系统。我的环境情况如下:

  • Ubuntu18.04
  • Nginx
  • MySQL

安装 PHP

BookStack 使用 PHP7.3 以上版本。之前安装了 PHP7.2 版本,目前已经推出了 PHP7.4,所以干脆升级到 PHP7.4。
对于 Ubuntu18.04 而言,需要

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt -y install php7.4 php7.4-fpm
# 还有一些是我的其他项目中用到的,我也不确定 BookStack 是否需要,总之我都装起了
sudo apt -y install php7.4-bcmath php7.4-bz2 php7.4-cgi php7.4-cli php7.4-common php7.4-curl php7.4-dba php7.4-dev php7.4-enchant php7.4-fpm php7.4-gd php7.4-gmp php7.4-imap php7.4-interbase php7.4-intl php7.4-json php7.4-ldap php7.4-mbstring php7.4-mysql php7.4-odbc php7.4-opcache php7.4-pgsql php7.4-phpdbg php7.4-pspell php7.4-readline php7.4-snmp php7.4-soap php7.4-sqlite3 php7.4-sybase php7.4-tidy php7.4-xml php7.4-xmlrpc php7.4-xsl php7.4-zip
# 原有的 php7.2-xxx 暂时也没有删除,目前还没有出什么问题

最后还要检查一下 php fpm 监听的位置,后面 nginx 中会用到

cd /etc/php/7.4/fpm/pool.d
sudo vi www.conf # 查找 listen 的位置

安装 composer

composer 用于安装 BookStack 的相关依赖

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
php -r "unlink('composer-setup.php');"

安装 BookStack

# 进入希望安装服务的路径,例如 /var/www/
git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch
cd BookStack
composer install --no-dev
cp .env.example .env

准备一下数据库

mysql -u root -p
CREATE USER 'bookstack'@'localhost' IDENTIFIED BY '请输入你的数据库密码';
CREATE DATABASE `bookstack`;
GRANT ALL privileges ON `bookstack`.* TO 'bookstack'@localhost;
FLUSH PRIVILEGES;
QUIT;

编辑配置

# vi .env
# 修改相关配置
APP_URL=修改为你的网址

DB_HOST=localhost
DB_DATABASE=bookstack
DB_USERNAME=bookstack
DB_PASSWORD=刚刚创建数据库时输入的数据库密码

# 还有一些关于邮件的设置,这里暂时不展示了

完成配置文件的编辑后,生成一个 key、迁移数据库

php artisan key:generate # 生成一个 key
php artisan migrate # 迁移数据库

由于我的 nginx 是以 www-data 作为用户运行的,所以还要修改 BookStack 文件夹的权限

cd ..
sudo chown www-data:www-data -R BookStack

至此 BookStack 安装完成,需要进行 Nginx 配置

Nginx 配置

/etc/nginx/sites-enabled 文件夹下,创建 BookStack 配置文件例如 50-bookstack.conf

server {
    listen #端口# ssl;
    server_name #域名#;

    ssl_certificate #证书地址#;
    ssl_certificate_key #key 地址#;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;

    root #bookstack 文件路径#/BookStack/public;
    index index.php index.html index.html;

    client_max_body_size 100M;

    location / {
        try_files $uri $uri/ /index.php?$query_string;a
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 根据 php fpm listen 的位置进行修改
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    error_log /var/log/nginx/bookstack_error.log;
    access_log /var/log/nginx/bookstack_access.log;
}

测试

BookStack 安装完成,可以访问刚刚设置的网址、端口进行访问,默认账号密码为 admin@admin.com 和 password。

 类似资料: