FreeBSD
FreeBSD
目录
- 前置条件
- 安装
- 1. 准备服务器栈
- 2. 使用 Git 下载 Wavelog
- 3. 设置目录所有者与权限
- 4. 创建 SQL 数据库与用户
- 5. 运行 Wavelog 安装向导
- 安装后任务
- 1. 创建用于通过 Git 更新 Wavelog 的 Bash 脚本
- 2. 创建计划任务(cron)以自动化 Wavelog 任务
- 3. 设置呼号簿(callbook)集成
本页面将指导你完成在使用 FAMP 栈(即 FreeBSD、Apache、MySQL 和 PHP)的 FreeBSD Web 服务器上安装 Wavelog 所需的各项步骤。该安装流程同样适用于在 Jail 中安装 Wavelog。
前置条件
- 操作系统:FreeBSD >= 12
- Web 服务器:Apache >= 2.4 或 Nginx >= 1.20
- 数据库:MySQL 或 MariaDB
- PHP >= 8.0 及以下模块:
- php-ctype
- php-curl
- php-dom
- php-filter
- php-gd
- php-mbstring
- php-mysqli
- php-session
- php-simplexml
- php-xml
- php-zip
- php-zlib
安装
1. 准备服务器栈
安装 FreeBSD、数据库服务器和 Web 服务器属于本指南范围之外的任务,但有大量资源可以帮助你入门。可以参考 HowtoForge 的这篇指南来搭建 FAMP 栈 或 FEMP 栈。其中大部分步骤对 FreeBSD 13 和 PHP-8 同样有效。
服务器栈安装完成后,请确保所需的 PHP 模块可用,因为并非所有模块都会默认安装。安装 PHP81 及所需模块的示例:
pkg install php81 php81-ctype php81-curl php81-filter php81-mbstring php81-mysqli php81-session php81-simplexml php81-xml php81-zip php81-zlib
你应将上述命令中的版本号替换为你的发行版提供的、与已安装 PHP 版本相匹配的最高版本号。使用 php -v 查看已安装的版本。
2. 使用 Git 下载 Wavelog
为了便于安装和更新,建议使用 Git 获取 Wavelog 应用文件。如果你的系统尚未安装 GIT,请使用 pkg install git 获取。
git clone 命令用于从 GitHub 上的仓库获取 Wavelog 的最新构建版本。该命令会下载 master 分支当前状态下的应用文件:
git clone https://github.com/wavelog/Wavelog.git [output_directory]
将 output_directory 替换为你希望在本地创建应用文件的目录的完整路径(不要包含方括号)。
- 对于 Apache 服务器:如果你为 Apache 配置的站点使用 /usr/local/www/apache24/data 作为 DocumentRoot 目录,则该命令变为
git clone https://github.com/wavelog/Wavelog.git /usr/local/www/apache24/data。有关站点配置的更多信息,请参阅 Apache 文档。 - 对于 Nginx 服务器:如果你为 Nginx 配置的站点使用 /usr/local/www/nginx 作为根目录,则该命令变为
git clone https://github.com/wavelog/Wavelog.git /usr/local/www/nginx。有关配置 Nginx 的更多信息,请参阅 Nginx 文档。
3. 设置目录所有者与权限
在正常运行期间,Wavelog 需要写入 Wavelog 根目录(即上一步中解压文件的目录)内的某些文件和目录。你需要为这些目录适当设置权限与所有者。
以下文件夹需要对 PHP 可写:
- /application/config/
- /application/logs/
- /assets/qslcard/
- /backup/
- /images/eqsl_card_images/
- /updates/
- /uploads/
⚠️ 警告 1:以下命令假定你使用的是 FreeBSD 的 www Web 服务器用户组。你应核实这一情况,如果实际不同,请相应修改下面的命令。
⚠️ 警告 2:如果你在上一步中将 Git 仓库克隆到了其他位置,或者你使用的是 Nginx Web 服务器,请将下面命令中的 /usr/local/www/apache24/data 替换为相应的目录!
⚠️ 警告 3:确保你的系统免受入侵/攻击是你的责任。这些命令和权限只是用于让 Wavelog 运行起来的示例,并非如何构建安全系统的指南。安装后你应复查这些权限,并在认为需要更细粒度访问控制时做出相应调整。
首先,使用以下命令设置所有者:
sudo chown -R www:www /usr/local/www/apache24/data/application/config/
sudo chown -R www:www /usr/local/www/apache24/data/application/logs/
sudo chown -R www:www /usr/local/www/apache24/data/assets/qslcard/
sudo chown -R www:www /usr/local/www/apache24/data/backup/
sudo chown -R www:www /usr/local/www/apache24/data/images/eqsl_card_images/
sudo chown -R www:www /usr/local/www/apache24/data/updates/
sudo chown -R www:www /usr/local/www/apache24/data/uploads/
然后为这些目录授予用户组写权限:
sudo chmod -R g+rw /usr/local/www/apache24/data/application/config/
sudo chmod -R g+rw /usr/local/www/apache24/data/application/logs/
sudo chmod -R g+rw /usr/local/www/apache24/data/assets/qslcard/
sudo chmod -R g+rw /usr/local/www/apache24/data/backup/
sudo chmod -R g+rw /usr/local/www/apache24/data/images/eqsl_card_images/
sudo chmod -R g+rw /usr/local/www/apache24/data/updates/
sudo chmod -R g+rw /usr/local/www/apache24/data/uploads/
有关授予 PHP 写权限的更多信息,可参阅 这条 Unix Stack Exchange 回答
4. 创建 SQL 数据库与用户
Wavelog 需要一个 MySQL 数据库来存储应用与用户设置,以及日志等用户数据。
创建空数据库的基本步骤对 MySQL 和 MariaDB 都非常相似——我们将在此介绍这些步骤——但涉及数据库与服务器安全加固的具体步骤会有所不同。与 Apache 配置一样,后者属于本指南范围之外的内容,但你可以参考 MariaDB 文档 或 MySQL 文档 作为起点。
我们先使用 mysql 命令以 root 用户身份连接。如果你的服务器已为其他用途配置,你可能还有另一个具备创建数据库权限的用户——如果是这样,可以替换为该用户名。有关使用 mysql 客户端连接的更多内容,请参阅 MySQL 文档。
sudo mysql -u root -p
注意:mysql 工具在 MySQL 和 MariaDB 软件包中名称相同。
现在执行以下命令为 Wavelog 创建数据库,将 db_name 替换为你选择的名称。请记下这个名称,稍后 Wavelog 安装向导会用到它。
CREATE DATABASE db_name;
接下来,创建一个用户并授予其在 Wavelog 数据库上的权限。如果你在 MySQL/MariaDB 服务器上已有可用的非 root 用户,则创建新用户是可选的。请记住再次将 db_name 替换为你此前为数据库选择的名称,将 user1 替换为要创建的用户名,将 password1 替换为 真实、强壮的密码!请妥善保存用户名和密码,稍后 Wavelog 安装向导会用到它们。
CREATE USER 'user1'@localhost IDENTIFIED BY 'password1';
GRANT ALL PRIVILEGES ON db_name.* TO 'user1'@'localhost';
QUIT
5. 运行 Wavelog 安装向导
你需要运行安装向导。此时请打开 <url-to-wavelog>/install 并按照引导操作。
安装向导完成后,请执行以下操作:
- 创建一个新的管理员账户(管理员下拉菜单),并删除演示账户
- 更新国家文件(管理员下拉菜单)
-
创建台站配置(管理员下拉菜单)并将其设为活动状态
-
如果你想了解与你通联的人是否使用 LoTW,请运行:
https://<URL-To-Wavelog>/index.php/lotw/load_users。这是首次运行,稍后我们会通过计划任务每周运行一次。
安装后任务
1. 创建用于通过 Git 更新 Wavelog 的 Bash 脚本
在命令行用 nano wavelog.sh(或你偏好的编辑器)创建一个 shell 脚本文件。
将以下内容粘贴到新文件中:
#!/usr/local/bin/bash
cd <Full-Path-To-Wavelog-Folder> && git pull
chown -R www:www <Full-Path-To-Wavelog-Folder>
注意 本示例使用 bash 作为 shell,但也可以使用 csh 或 tcsh 等其他 shell。
该完整路径应为相对于根文件系统的绝对路径。请勿在此处输入相对路径。
允许执行该 shell 脚本文件:
chmod +x wavelog.sh
你可以用 ./wavelog.sh 测试它
2. 创建计划任务(cron)以自动化 Wavelog 任务
你可以使用计划任务来自动执行一些常规的 Wavelog 维护任务。说明参见 推荐的计划任务与 Cronmanager。
3. 设置呼号簿(callbook)集成
Wavelog 支持两个业余无线电呼号簿,即 QRZ 和 HamQTH,两者的设置类似,且都需要你编辑 application/config/config.php 文件。
请确保你的用户名和密码是用于登录相应服务的密码。
QRZ
$config['callbook'] = "qrz";
$config['qrz_username'] = "";
$config['qrz_password'] = "";
HamQTH
$config['callbook'] = "hamqth";
$config['hamqth_username'] = "";
$config['hamqth_password'] = "";
有关呼号簿集成的更多信息,可参阅 呼号查询页面