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

287 lines
5.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 目录
<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)
```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 服务器用户有写入权限