跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Linux怎么安装和配置Appwrite Linux后端即服务平台部署详解

Appwrite 在 Linux 上可通过 docker run 一键安装,需 Docker ≥20.10,首次启动需 2–5 分钟;必须修改 .env 中 APPWRITE_HOST 和 APPWRITE_DOMAIN 为公网 IP 或域名才能外网访问,且不可关闭 appwrite、mariadb、redis 三个核心服务。 Appwrite 在 Linux 上能直接用 docker run 一键安装 Linux 是 Appwrite 官方最优先支持的部署平台,不需要额外编译或依赖管理。只要系统装了 Docker(≥20.10)和 docker-compose(可选但推荐),就能用一条
docker run
命令完成初始化安装。 常见错误现象是执行后访问
https://www.php.cn/link/bb122c8fe6c764e8aae555e2186a6344
显示连接被拒绝,或控制台加载空白——这通常不是安装失败,而是容器还在拉取镜像、初始化数据库、生成 SSL 证书,整个过程在首次启动时可能耗时 2–5 分钟。 确保 Docker daemon 正在运行:
sudo systemctl is-active docker
应返回
active
不要用
sudo
执行安装命令本身;但宿主机的
/var/run/docker.sock
必须可读写,普通用户需加入
docker
用户组:
sudo usermod -aG docker $USER
,然后重新登录终端 安装目录(如
$(pwd)/appwrite
)不能是 root 权限受限路径(比如
/root
或某些加密 home 目录),否则容器内进程无法写入配置 首次运行会交互式询问端口(默认 80/443)、是否启用 HTTPS、管理员邮箱等,建议全程按回车用默认值,后续可在 Web 控制台或
.env
文件里调整 安装后必须改
.env
才能开放外网访问 Appwrite 默认只监听
127.0.0.1
,即使你用云服务器部署,本地浏览器能打开,外部网络也连不上——这不是防火墙问题,而是它的
APPWRITE_HOST
和
APPWRITE_DOMAIN
配置没生效。 安装完成后,
appwrite
目录下会生成一个
.env
文件。必须手动编辑它: 将
APPWRITE_HOST=127.0.0.1
改为你的公网 IP 或域名(比如
APPWRITE_HOST=192.168.1.100
或
APPWRITE_HOST=api.example.com
) 同时设置
APPWRITE_DOMAIN
与之完全一致(否则 JWT cookie、重定向、WebSocket 连接都会出错) 如果用反向代理(Nginx/Caddy),还需加
APPWRITE_FORWARDED_SECRET=your-secret
并在代理层透传
X-Forwarded-*
头 改完保存,重启服务:
docker-compose -f appwrite/docker-compose.yml down && docker-compose -f appwrite/docker-compose.yml up -d
docker-compose.yml
里哪些服务不能关 Appwrite 的
docker-compose.yml
默认启用了 7 个服务,但实际核心只有 4 个: CentOS Linux 7.9.2009 CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。 下载
appwrite
:主 API 服务,必须运行
appwrite-mariadb
:数据库,不能关(哪怕你打算换 PostgreSQL,也要先跑起来初始化结构)
appwrite-redis
:缓存 + 实时事件队列,关掉会导致实时订阅失效、部分后台任务卡住
appwrite-influxdb
:监控指标存储,可关,不影响功能 其他如
appwrite-clickhouse
(分析)、
appwrite-meilisearch
(搜索)属于按需启用模块,首次部署建议先保持默认,等业务跑稳再裁剪。 注意:不要手动删掉 yml 里的 service 块再重 up —— 安装脚本生成的 yml 是带初始化逻辑的,删了会导致
appwrite
容器反复 crash 并报错
failed to connect to mariadb: no route to host
。 首次登录进不去控制台?检查
APPWRITE_PROJECT_ID
和管理员用户状态 安装完成后,浏览器打开
https://www.php.cn/link/bb122c8fe6c764e8aae555e2186a6344
,填邮箱密码却提示 “Invalid credentials” 或 “Project not found”,大概率是以下两个原因: 安装过程中你跳过了管理员账户创建(比如 Ctrl+C 中断了交互流程),此时数据库里没任何用户。解决方法:进容器执行初始化命令:
docker exec -it appwrite-appwrite-1 sh -c "php /usr/src/code/appwrite/bin/install"
,它会重新走一遍引导流程 你用 CLI 或 API 创建过项目,但没把生成的
APPWRITE_PROJECT_ID
写进前端 SDK 的初始化参数里。Web 控制台本身不依赖这个 ID,但如果你在自己写的前端里调用了
client.setProject()
却传了错的 ID,就会静默失败 真正容易被忽略的是:Appwrite 的管理员账户和项目是绑定的,不是全局账号。你在安装时创建的管理员,只属于它自动创建的那个默认项目(ID 通常是 6-character 随机串)。如果之后用 CLI 创建了新项目,那个项目默认没有成员,得手动在控制台的 “Users & Permissions” 里加进去。 所以别急着删默认项目——它不仅是入口,还是权限根节点。

相关文章