跳转到内容

部署

docker

1,执行 docker pull celaraze/cat

2,执行 docker volume create cat_database 使数据库持久化。

3,执行 docker volume create cat_storage 使存储路径持久化,用于保存上传的文件、图片、以及应用产生的日志文件。

4,执行以下命令启动容器:

# 第一次启动容器,用于构建本地使用环境,包括生成配置文件。
docker run -itd -p 8000:8000 \
-v cat_database:/var/www/database/data \
-v cat_storage:/var/www/storage \
--name cat celaraze/cat

5,执行 docker cp cat:/var/www/.env /path/to/your/local/ 将应用的配置文件从容器中复制出来,配置文件应该存放在宿主机上。

6,停止该容器,并删除,重新执行以下命令启动容器:

# 增加了 .env 配置文件持久化。
docker run -itd -p 8000:8000 \
-v cat_database:/var/www/database/data \
-v cat_storage:/var/www/storage/app/public \
-v /your/path/local/.env:/var/www/.env \
--name cat celaraze/cat

7,访问 http://localhost:8000,使用账户密码 admin@localhost.com / admin 登陆使用。

docker-compose

1,执行 git clone https://github.com/celaraze/cat

2,执行 cd cat && docker-compose up -d

3,同 Docker 部署步骤,需要启动一次容器后并将 .env 文件复制到宿主机上重新挂载启动容器,即可实现配置文件的持久化。

docker build

1,执行 git clone https://github.com/celaraze/cat

2,执行 cd cat && docker build -t celaraze/cat . --no-cache

使用二进制模式运行

CAT 尽可能的简化了安装步骤,用户无需额外安装 Web 服务器和数据库,使用 SQLite 实现,请确认服务器已安装 SQLite 3.8.8+ 版本,可以使用 sqlite3 version 确认当前版本。 该方案为兼顾高性能 Web 服务和灵活的数据存储模式。

1,执行 git clone https://github.com/celaraze/cat && cd cat

2,复制 .env.example.env,并修改 .env 中的数据存储路径,不用担心,即使不存在 database.sqlite 文件,程序会自动创建它,只需要确认数据库文件的存放路径即可。执行 php artisan cat:install 安装程序,默认账户密码为 admin@localhost.com / admin

3,执行 php artisan serve --host=0.0.0.0 即可通过 https://localhost:8000 访问,此项使用 PHP 内建 Web 服务器,性能一般但稳定可靠。

4,若要在生产环境下使用,执行 wget https://github.com/dunglas/frankenphp/releases/download/v1.0.0/frankenphp-linux-x86_64 -O cat 下载基于 Go 构建的高性能 Web 服务器。 然后执行 chmod +x cat 赋予权限,最后执行 ./cat run 即可通过 http://localhost 访问。值得注意的是,目前 frankenphp 高性能 Web 服务器目前可能存在内存泄露问题,请戳请使用。若问题频发可使用 Nginx 自行部署。

使用宝塔面板

1,从应用商店安装 PHP 8.1 运行环境,同时安装以下扩展:fileinfo opcache intl igbinary

2,从应用商店安装 Nginx 1.24 运行环境。

3,从应用商店安装 MySQL 8.0 运行环境。

4,左侧菜单 网站添加站点 来创建一个网站。域名自行填写,如果没有域名,也可以使用 127.0.0.1 作为域名。FTP 不创建,数据库 创建,自行填写数据库账户密码,PHP 版本选择刚刚安装的 PHP 8.2,最后 提交 来创建站点。

5,左侧菜单 网站,点击刚刚创建的站点根目录后进入文件管理模式。将该目录下所有文件删除,然后点击上方 终端 进入命令行,执行 git clone https://github.com/celaraze/cat.git . 来拉取代码到本地目录。如果提示无法找到 git 命令,执行 sudo apt install git 或者 sudo dnf install git

6,拉取完代码后,仍然在该目录中,复制 .env.example 并粘贴为一个新文件,重命名为 .env。双击 .env 文件,根据文件中提示修改数据库配置及应用相关配置。

7,左侧菜单 网站,点击刚刚创建的网站,在最下方选择 其它设置,选择 composer,先点击右侧升级版本至最新,然后执行 install 命令,镜像源选择 官方,执行身份一定要选择 root 执行,否则将提示扩展缺失。

8,点击上方目录路径中的 wwwroot 进入上一级目录,选择刚刚创建的站点,最右侧点击 权限,保证 755 权限,所有者为 www ,勾选 应用到子目录 后确定保存。

9,左侧菜单 网站,点击刚刚创建的网站,选择 网站目录,选择 /public 保存。

10,左侧菜单 网站,点击刚刚创建的网站,选择 伪静态,选择 laravel5 保存。

11,左侧菜单 网站,点击刚刚创建的网站,选择 配置文件,做以下修改并保存:

# 找到下面代码块
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
# 修改为下面代码块
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
try_files $uri /index.php?$query_string;
access_log off;
log_not_found off;
expires 14d;
}

12,最后,再次进入到网站根目录,执行 php artisan cat:install 根据提示进行安装,重启 PHP-fpmNginx 服务后即可使用 CAT。

手动部署

CAT 是个标准的 Laravel 应用程序,也适用于所有的 LNMP/WNMP/DNMP 环境。这里不再赘述。

先决条件如下。

git:用于管理版本,部署和升级必要工具。

PHP:仅支持 PHP8.1 以上版本。

composer:PHP 的包管理工具,用于安装必要的依赖包。

MySQL:数据库引擎,建议 MySQL 8 以上版本,理论上 MariaDB 10.11 以上版本兼容支持。

ext-intl:扩展。

ext-zip:扩展。

ext-pdo:扩展。

ext-mysqli:扩展。

ext-xml:扩展。

ext-sockets:扩展。

ext-curl:扩展。

ext-fileinfo:扩展。

ext-gd:扩展。

ext-opcache:扩展,很重要,可以大幅提升站点性能。

以上扩展安装过程注意版本必须与 PHP 版本一致。

无论何种安装方式,更新都是通过同样的操作原理实现,即使用 GIT 版本控制同步官方代码仓库。

在进行更新前,请务必做好数据库备份。

数据库备份

如果使用了 SQLite 作为数据库(Docker 及一把梭模式默认数据库),那只需要在整个更新过程中不覆盖 .sqlite 文件即可。

如果使用了 MySQL 作为数据库,尽可能的在更新前使用虚拟机快照、宝塔面板数据库备份等工具快速备份,如无条件也可使用 phpmyadmin 或者 mysql dump 将数据库导出至 .sql 文件。

Docker

1,先停止容器并删除容器,不用担心,你的数据库保存在 docker volume 中,执行 docker pull celaraze/cat:latest 拉取最新镜像。

2,执行以下命令启动容器:

docker run -itd -p 8000:8000 \
-v cat_database:/var/www/database/data \
-v cat_storage:/var/www/storage/app/public \
-v /your/path/local/.env:/var/www/.env \
--name cat celaraze/cat

3,执行 docker exec -it cat /bin/bash 进入容器终端。

4,在容器中执行 php artisan cat:update,确认是否在 /var/www 目录中,默认于此。

二进制模式及手动部署

1,进入网站根目录,执行 git reset --hard && git pull --force 拉取最新代码。

2,仍然在网站根目录,执行 composer update 更新依赖。

3,仍然在网站根目录,执行 php artisan cat:update 更新数据库结构。