5.2 KiB
5.2 KiB
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. 测试
- 访问主页:
http://your-domain.com/ - 访问后台:
http://your-domain.com/admin/ - 使用
admin/admin登录 - 尝试上传一个 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
如有问题,请检查:
- PHP 版本 >= 7.0
- SQLite 扩展已启用
- data 目录权限正确
- Web 服务器用户有写入权限