# Linux 服务器部署指南 ## 快速修复数据库权限问题 如果遇到 `unable to open database file` 错误,执行以下命令: ```bash # 进入项目目录 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. 上传文件 将所有项目文件上传到服务器,例如: ```bash /var/www/html/php_app_downloader/ ``` ### 2. 创建必要的目录 ```bash cd /var/www/html/php_app_downloader mkdir -p data/apps data/uploads ``` ### 3. 设置权限 **方法一:简单粗暴(适合测试环境)** ```bash chmod -R 777 data/ ``` **方法二:更安全(推荐生产环境)** ```bash # 设置目录所有者为 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. 验证权限 ```bash 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`: ```apache # 禁止直接访问 data 目录 Order Deny,Allow Deny from all # 允许下载 APK 文件 Order Allow,Deny Allow from all # PHP 配置 php_value upload_max_filesize 100M php_value post_max_size 100M php_value max_execution_time 300 ``` #### Nginx (nginx.conf) ```nginx 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 配置允许上传大文件: ```bash # 编辑 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 目录不可写 **解决:** ```bash chmod 777 data/ chown www-data:www-data data/ ``` ### 问题 2: 文件上传失败 **原因:** PHP 上传限制或目录权限 **解决:** ```bash # 检查 PHP 配置 php -i | grep upload_max_filesize php -i | grep post_max_size # 设置目录权限 chmod 777 data/apps/ ``` ### 问题 3: 图片不显示 **原因:** Logo 路径错误或文件权限 **解决:** ```bash # 检查 logo.png 权限 chmod 644 logo.png # 检查上传目录权限 chmod 777 data/uploads/ ``` ### 问题 4: Session 问题导致无法登录 **原因:** PHP session 目录不可写 **解决:** ```bash # 检查 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`,找到: ```php if ($username === 'admin' && $password === 'admin') { ``` 修改为: ```php if ($username === 'admin' && $password === 'your_strong_password') { ``` ### 2. 限制后台访问 在 Nginx 中添加 IP 白名单: ```nginx location /admin/ { allow 192.168.1.100; # 你的 IP deny all; } ``` ### 3. 启用 HTTPS 使用 Let's Encrypt 免费证书: ```bash sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d your-domain.com ``` ### 4. 定期备份 创建备份脚本: ```bash #!/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/ ``` ## 监控和维护 ### 检查磁盘空间 ```bash df -h du -sh data/apps/ ``` ### 清理旧版本 定期在管理后台删除不需要的旧版本 ### 日志监控 ```bash # 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 服务器用户有写入权限