Files
2026-06-24 18:04:15 +08:00

5.2 KiB
Raw Permalink Blame History

Linux 服务器部署指南

快速修复数据库权限问题

如果遇到 unable to open database file 错误,执行以下命令:

# 进入项目目录
cd /path/to/php_app_downloader

# 确保 data 目录及子目录存在
mkdir -p data/apps data/uploads

# 设置 data 目录权限(关键步骤)
chmod 777 data
chmod 777 data/apps
chmod 777 data/uploads

# 如果数据库文件已存在,设置其权限
chmod 666 data/database.db

# 设置所有者为 Web 服务器用户(可选,推荐)
# Apache 用户通常是 www-data 或 apache
# Nginx 用户通常是 www-data 或 nginx
chown -R www-data:www-data data/

完整部署步骤

1. 上传文件

将所有项目文件上传到服务器,例如:

/var/www/html/php_app_downloader/

2. 创建必要的目录

cd /var/www/html/php_app_downloader
mkdir -p data/apps data/uploads

3. 设置权限

方法一:简单粗暴(适合测试环境)

chmod -R 777 data/

方法二:更安全(推荐生产环境)

# 设置目录所有者为 Web 服务器用户
chown -R www-data:www-data data/

# 设置目录权限
chmod 755 data/
chmod 755 data/apps/
chmod 755 data/uploads/

# 确保 Web 服务器可以写入
chmod g+w data/
chmod g+w data/apps/
chmod g+w data/uploads/

4. 验证权限

ls -la data/

应该看到类似输出:

drwxrwxr-x 4 www-data www-data 4096 Jun 24 17:36 .
drwxr-xr-x 8 www-data www-data 4096 Jun 24 17:36 ..
drwxrwxr-x 2 www-data www-data 4096 Jun 24 17:36 apps
drwxrwxr-x 2 www-data www-data 4096 Jun 24 17:36 uploads

5. 配置 Web 服务器

Apache (.htaccess)

如果使用 Apache,可以在项目根目录创建 .htaccess

# 禁止直接访问 data 目录
<Directory "data">
    Order Deny,Allow
    Deny from all
</Directory>

# 允许下载 APK 文件
<FilesMatch "\.(apk)$">
    Order Allow,Deny
    Allow from all
</FilesMatch>

# PHP 配置
php_value upload_max_filesize 100M
php_value post_max_size 100M
php_value max_execution_time 300

Nginx (nginx.conf)

server {
    listen 80;
    server_name your-domain.com;
    root /var/www/html/php_app_downloader;
    index index.php index.html;

    # 上传文件大小限制
    client_max_body_size 100M;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # 禁止直接访问 data 目录(除了 APK 文件)
    location ~ ^/data/(?!apps/.*\.apk$) {
        deny all;
    }

    # PHP 处理
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

6. PHP 配置检查

确保 PHP 配置允许上传大文件:

# 编辑 php.ini
sudo nano /etc/php/7.4/fpm/php.ini

# 修改以下配置
upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 300
memory_limit = 256M

# 重启 PHP-FPM
sudo systemctl restart php7.4-fpm

7. 测试

  1. 访问主页:http://your-domain.com/
  2. 访问后台:http://your-domain.com/admin/
  3. 使用 admin/admin 登录
  4. 尝试上传一个 APK 文件

常见问题排查

问题 1: unable to open database file

原因: data 目录不可写

解决:

chmod 777 data/
chown www-data:www-data data/

问题 2: 文件上传失败

原因: PHP 上传限制或目录权限

解决:

# 检查 PHP 配置
php -i | grep upload_max_filesize
php -i | grep post_max_size

# 设置目录权限
chmod 777 data/apps/

问题 3: 图片不显示

原因: Logo 路径错误或文件权限

解决:

# 检查 logo.png 权限
chmod 644 logo.png

# 检查上传目录权限
chmod 777 data/uploads/

问题 4: Session 问题导致无法登录

原因: PHP session 目录不可写

解决:

# 检查 session 目录
ls -la /var/lib/php/sessions/

# 设置权限
sudo chmod 733 /var/lib/php/sessions/
sudo chown root:www-data /var/lib/php/sessions/

安全加固建议

1. 修改默认密码

编辑 admin/index.php,找到:

if ($username === 'admin' && $password === 'admin') {

修改为:

if ($username === 'admin' && $password === 'your_strong_password') {

2. 限制后台访问

在 Nginx 中添加 IP 白名单:

location /admin/ {
    allow 192.168.1.100;  # 你的 IP
    deny all;
}

3. 启用 HTTPS

使用 Let's Encrypt 免费证书:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com

4. 定期备份

创建备份脚本:

#!/bin/bash
# backup.sh
DATE=$(date +%Y%m%d_%H%M%S)
tar -czf /backup/app_backup_$DATE.tar.gz /var/www/html/php_app_downloader/data/

监控和维护

检查磁盘空间

df -h
du -sh data/apps/

清理旧版本

定期在管理后台删除不需要的旧版本

日志监控

# Apache 日志
tail -f /var/log/apache2/error.log

# Nginx 日志
tail -f /var/log/nginx/error.log

# PHP 日志
tail -f /var/log/php7.4-fpm.log

如有问题,请检查:

  1. PHP 版本 >= 7.0
  2. SQLite 扩展已启用
  3. data 目录权限正确
  4. Web 服务器用户有写入权限