在 Umami 手动安装(非 Docker)后,使用 pnpm run start 启动服务会占用终端,且关闭终端后服务会停止。
下面提供 4 种可靠方法,让 Umami 后台运行 + 开机自启,适用于 Ubuntu/Debian 服务器。
下面提供 4 种可靠方法,让 Umami 后台运行 + 开机自启,适用于 Ubuntu/Debian 服务器。
推荐方案对比
|
方法
|
难度
|
后台运行
|
开机自启
|
推荐指数
|
|---|---|---|---|---|
|
1. systemd 服务
|
★★☆☆☆
|
Yes
|
Yes
|
|
|
2. pm2 进程守护
|
★★☆☆☆
|
Yes
|
Yes
|
|
|
3. screen / tmux
|
★☆☆☆☆
|
Yes
|
No
|
|
|
4. nohup
|
★☆☆☆☆
|
Yes
|
No
|
|
方法一:使用 systemd(最推荐,企业级)
自动后台运行 + 开机自启 + 日志管理 + 崩溃重启
1. 进入 Umami 项目目录
bash
cd /path/to/umami
# 例如:cd ~/umami
2. 创建 systemd 服务文件
bash
sudo nano /etc/systemd/system/umami.service
3. 粘贴以下内容(修改路径)
ini
[Unit]
Description=Umami Analytics
After=network.target
[Service]
Type=simple
User=www-data # 推荐使用 www-data 或你的用户名
WorkingDirectory=/home/youruser/umami # 修改为你的 umami 目录
Environment=NODE_ENV=production
Environment=DATABASE_URL=postgresql://umami:yourpassword@localhost:5432/umami
ExecStart=/usr/bin/pnpm run start
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
重点修改:
- WorkingDirectory → 你的 umami 目录
- User → 你的用户名或 www-data
- DATABASE_URL → 你的数据库连接字符串
4. 启用并启动服务
bash
# 重新加载 systemd
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start umami
# 开机自启
sudo systemctl enable umami
5. 查看状态 & 日志
bash
# 查看状态
sudo systemctl status umami
# 查看实时日志
journalctl -u umami -f
# 重启服务
sudo systemctl restart umami
方法二:使用 pm2(Node.js 专用,简单好用)1. 全局安装 pm2
bash
pnpm add -g pm2
2. 启动 Umami
bash
cd /path/to/umami
pm2 start "pnpm run start" --name umami
3. 设置开机自启
bash
# 保存当前进程列表
pm2 save
# 生成开机启动脚本
pm2 startup
# 会输出一行命令,复制执行,例如:
# sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u youruser --hp /home/youruser
4. 常用命令
bash
pm2 status # 查看状态
pm2 logs umami # 查看日志
pm2 restart umami # 重启
pm2 stop umami # 停止
pm2 delete umami # 删除
方法三:使用 screen(临时调试用)
bash
# 安装 screen
sudo apt install screen -y
# 启动一个会话
screen -S umami
# 在 screen 中运行
cd /path/to/umami
pnpm run start
# 按 Ctrl+A 然后 D 脱离(后台运行)
# 重新进入
screen -r umami
缺点:服务器重启后需手动重启
方法四:使用 nohup(最简单)
bash
cd /path/to/umami
nohup pnpm run start > umami.log 2>&1 &
查看日志:tail -f umami.log
查找进程:ps aux | grep pnpm
杀死进程:kill PID
查找进程:ps aux | grep pnpm
杀死进程:kill PID
缺点:无开机自启,日志管理差
验证服务是否运行
bash
# 检查端口 3000 是否监听
netstat -tlnp | grep 3000
# 或
ss -tlnp | grep 3000
浏览器访问:http://你的IP:3000
推荐组合(生产环境)
bash
# 1. 用 systemd 管理服务(后台 + 开机自启)
# 2. 用 Nginx 反向代理 + HTTPS
# 3. 用 pm2 监控(可选)
一键生成 systemd 服务脚本
bash
#!/bin/bash
UMAMI_PATH="/home/$(whoami)/umami" # 修改路径
DB_URL="postgresql://umami:yourpassword@localhost:5432/umami" # 修改
sudo tee /etc/systemd/system/umami.service > /dev/null << EOF
[Unit]
Description=Umami Analytics
After=network.target
[Service]
Type=simple
User=$(whoami)
WorkingDirectory=$UMAMI_PATH
Environment=NODE_ENV=production
Environment=DATABASE_URL=$DB_URL
ExecStart=/usr/bin/pnpm run start
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now umami
echo "Umami 已设置为后台运行 + 开机自启"
保存为 setup-umami-service.sh → chmod +x → ./setup-umami-service.sh
总结:
|
你想怎么做
|
推荐命令
|
|---|---|
|
永久后台 + 开机自启
|
systemd
|
|
快速部署 + 监控
|
pm2
|
|
临时测试
|
screen 或 nohup
|