Lychee是一款开源的照片管理和共享系统,支持自托管部署。本教程将指导你在Debian 12服务器上安装Lychee照片管理系统,使用LAMP Stack(Linux、Apache、MariaDB和PHP)作为运行环境,并通过Certbot配置HTTPS安全连接。

前提条件

在开始之前,请确保你具备以下条件:

  • 一台Debian 12服务器
  • 一个具有管理员权限的非root用户

安装依赖

在本节中,你将在Debian服务器上安装LAMP Stack(Linux、Apache、MariaDB和PHP)。目前Lychee支持PHP 8.2或更高版本,Debian仓库默认提供该版本。

首先运行以下命令更新软件包索引。

sudo apt update

更新软件包索引

然后使用以下命令安装LAMP Stack软件包。输入Y确认安装。

sudo apt install apache2 mariadb-server php-cli php-intl php-xmlrpc php-soap php-mysql php-zip php-gd php-tidy php-mbstring php-curl php-xml php-pear php-bcmath php-imagick php-tokenizer libapache2-mod-php

安装LAMP Stack依赖包

安装完成后,执行以下命令检查Apache服务状态。你将看到Apache Web服务器正在运行并已启用。

sudo systemctl is-enabled apache2
sudo systemctl status apache2

检查Apache服务状态

使用以下命令检查MariaDB服务器状态。MariaDB服务器应该已自动运行并启用。

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

检查MariaDB服务状态

最后检查PHP版本,确认PHP 8.2或更高版本已安装。

php -v
php -m

检查PHP版本

配置PHP

依赖安装完成后,你需要编辑php.ini文件来配置PHP,然后重启Apache Web服务器使配置生效。

使用nano编辑器打开/etc/php/8.3/apache2/php.ini文件。

sudo nano /etc/php/8.3/apache2/php.ini

按如下方式修改默认配置,确保调整memory_limitdate.timezone选项。

date.timezone = Europe/Amsterdam
memory_limit = 256M

upload_max_filesize = 64MB
post_max_size = 64MB

保存文件并退出编辑器。然后运行以下命令重启Apache Web服务器以应用更改。

sudo systemctl restart apache2

配置MariaDB服务器

PHP配置完成后,你将使用mariadb-secure-installation命令来加固MariaDB服务器,然后通过mariadb客户端创建Lychee所需的新数据库和用户。

执行以下命令来设置MariaDB服务器。

sudo mariadb-secure-installation

系统将提示你进行以下MariaDB配置:

  • 对于没有root密码的默认MariaDB安装,在询问密码时按Enter键。
  • MariaDB root用户的本地认证默认是安全的,当被问及是否将认证方法更改为unix_socket时,输入n
  • 输入Y创建新的MariaDB root密码,然后输入强密码并确认。
  • 当被问及是否禁用MariaDB root用户的远程认证时,输入Y同意。
  • 默认MariaDB安装包含test数据库并允许匿名用户访问。对这两项设置都输入Y以移除默认数据库和匿名权限。
  • 最后输入Y确认重新加载表权限。

MariaDB配置并加固完成后,创建Lychee安装将使用的新数据库和用户。

使用以下命令登录MariaDB服务器,输入你的MariaDB root密码。

sudo mariadb -u root -p

运行以下查询创建名为lychee的数据库,以及用户lycheeuser@localhost,密码为LycheePassword。你可以根据需要更改数据库详情。

CREATE DATABASE lychee;
GRANT ALL PRIVILEGES ON lychee.* TO lycheeuser@'localhost' IDENTIFIED BY 'LycheePassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;

创建数据库和用户

运行以下查询确认用户lycheeuser@localhost可以访问数据库lychee

SHOW GRANTS FOR lycheeuser@localhost;

如果一切正常,你将看到类似如下的输出。

验证数据库和用户权限

最后输入quit退出MariaDB服务器。

下载Lychee照片管理系统

PHP和MariaDB都配置完成后,你将下载Lychee源代码并设置安装目录和.env文件。

首先使用以下命令安装unzip包。

sudo apt install unzip -y

进入/var/www目录,使用wget命令下载Lychee源代码。确保从Lychee发布页面获取最新版本的链接。

cd /var/www/
wget https://github.com/LycheeOrg/Lychee/releases/download/v5.5.1/Lychee.zip

下载完成后,使用unzip命令解压Lychee源代码。源代码将被解压到/var/www/Lychee目录。

unzip Lychee.zip

执行以下命令将/var/www/Lychee目录的所有权更改为www-data用户,并设置部分目录的写入权限。

sudo chown -R www-data:www-data /var/www/Lychee
sudo chmod u+rw /var/www/Lychee/{storage,bootstrap/cache/,public/dist,public/uploads,public/sym}

运行以下命令复制Lychee的.env文件并使用nano编辑器进行修改。

sudo -u www-data cp /var/www/Lychee/.env-example /var/www/Lychee/.env
sudo -u www-data nano /var/www/Lychee/.env

将默认APP_URL更改为你的域名,并将数据库配置设置为mysql及你的数据库详情,如下所示:

# domain name
APP_URL=https://photo.howtoforge.local

# database to MariaDB/MySQL
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=lychee
DB_USERNAME=lycheeuser
DB_PASSWORD=LycheePassword

保存文件并退出编辑器。

创建Apache虚拟主机

在本节中,你将创建一个新的Apache虚拟主机配置文件来运行Lychee照片管理系统。

首先运行以下命令启用rewrite模块。

sudo a2enmod rewrite

使用nano编辑器编辑Apache配置文件/etc/apache2/apache.conf

sudo nano /etc/apache2/apache.conf

将以下配置添加到文件中。这允许你设置.htaccess重写规则。


    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted

保存文件并退出编辑器。

使用nano编辑器创建新的Apache虚拟主机配置文件/etc/apache2/sites-available/lychee.conf

sudo nano /etc/apache2/sites-available/lychee.conf

粘贴以下配置,确保将ServerName选项更改为你的目标域名,使其与.env文件中的APP_URL保持一致。


    
    ServerAdmin webmaster@howtoforge.local
    ServerName photo.howtoforge.local
    
    DocumentRoot /var/www/Lychee/
    
    ErrorLog /var/log/apache2/photo-howtoforge-local-error_log
    CustomLog /var/log/apache2/photo-howtoforge-local-access_log common
    

保存并退出文件。

运行以下命令激活虚拟主机文件lychee.conf并验证Apache语法。如果Apache语法正确,你将看到输出"Syntax is OK"。

sudo a2ensite lychee.conf
sudo apachectl configtest

最后运行以下命令重启Apache并应用更改。

sudo systemctl restart apache2

Apache虚拟主机配置完成

使用HTTPS保护Lychee

如果你在公共域名上运行Lychee,请确保使用HTTPS进行保护。在本节中,你将安装Certbot并使用Let's Encrypt的SSL/TLS证书保护Lychee。

运行以下命令安装Certbot和Apache插件。

sudo apt install certbot python3-certbot-apache -y

安装完成后,运行以下certbot命令为Lychee安装生成新的SSL/TLS证书。确保在此命令中更改域名和电子邮件地址。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email admin@howtoforge.local -d photo.howtoforge.local

过程完成后,你的Lychee安装将通过HTTPS进行保护,SSL/TLS证书将位于/etc/letsencrypt/live/domain.com目录。

安装Lychee照片管理系统

使用你喜欢的Web浏览器访问Lychee安装域名(如https://photo.howtoforge.local/),你将看到Lychee安装向导。

点击Next继续安装。

Lychee安装向导

确保所有PHP扩展已安装,Apache rewrite模块已在系统上启用。

检查PHP依赖

确保PHP可以在某些目录中进行读取、写入和执行操作。

检查可写目录权限

检查屏幕上的.env文件,确保你的域名和MariaDB详情正确。

检查.env文件配置

安装程序将为Lychee生成应用密钥。

生成应用密钥

输入你的管理员用户名、电子邮件地址和密码,Lychee安装即告完成。

创建管理员账户

在Lychee主页上,点击登录提示,然后输入你的管理员用户名和密码。

登录Lychee管理后台

以下是上传一些图片到Lychee服务器后看到的用户仪表板。

Lychee用户仪表板

总结

恭喜你已在Debian 12服务器上使用LAMP Stack(Linux、Apache、MariaDB和PHP)完成了Lychee照片管理系统的安装。你还通过Certbot和Let's Encrypt为Lychee配置了HTTPS安全连接。