167 lines
3.5 KiB
Markdown
167 lines
3.5 KiB
Markdown
# Deployment Update Guide
|
|
|
|
## Steps to Update Your Deployed Application
|
|
|
|
### 1. Commit and Push Your Changes (From Your Local Machine)
|
|
|
|
```powershell
|
|
# Navigate to your project directory
|
|
cd C:\Users\NateEmmert\pdf-rename-sort\pdf-rename-sort
|
|
|
|
# Add all changes
|
|
git add .
|
|
|
|
# Commit with a descriptive message
|
|
git commit -m "Add file archiving system with download/delete, security fixes, and resource cleanup"
|
|
|
|
# Push to your remote repository
|
|
git push origin main
|
|
```
|
|
|
|
### 2. Update Code on Your Server
|
|
|
|
SSH into your server and run:
|
|
|
|
```bash
|
|
# Navigate to your application directory
|
|
cd /path/to/pdf-rename-sort
|
|
|
|
# Pull the latest changes
|
|
git pull origin main
|
|
|
|
# Activate your virtual environment (if you have one)
|
|
source venv/bin/activate
|
|
|
|
# Install any new dependencies (if needed)
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### 3. Create the Archives Directory
|
|
|
|
```bash
|
|
# Create the archives directory if it doesn't exist
|
|
mkdir -p archives
|
|
chmod 755 archives
|
|
```
|
|
|
|
### 4. Restart the Application
|
|
|
|
**If using systemd service:**
|
|
```bash
|
|
sudo systemctl restart pdf-renamer
|
|
sudo systemctl status pdf-renamer
|
|
```
|
|
|
|
**If running manually:**
|
|
```bash
|
|
# Stop the current process (Ctrl+C or kill the process)
|
|
# Then restart
|
|
python pdf_renamer.py
|
|
```
|
|
|
|
**If using Gunicorn:**
|
|
```bash
|
|
# Find the process
|
|
ps aux | grep pdf_renamer
|
|
|
|
# Kill it
|
|
sudo kill -HUP <PID>
|
|
|
|
# Or restart the service
|
|
sudo systemctl restart pdf-renamer-gunicorn
|
|
```
|
|
|
|
### 5. Verify the Updates
|
|
|
|
1. **Check the logs:**
|
|
```bash
|
|
sudo journalctl -u pdf-renamer -f
|
|
# Or if logging to a file:
|
|
tail -f /var/log/pdf-renamer.log
|
|
```
|
|
|
|
2. **Test the application:**
|
|
- Visit your application URL
|
|
- Log in with Microsoft Entra ID
|
|
- Upload a PDF and process it
|
|
- Verify the ZIP is created in the `archives/` folder
|
|
- Test downloading the ZIP
|
|
- Test deleting the job
|
|
|
|
3. **Check file permissions:**
|
|
```bash
|
|
ls -la archives/
|
|
ls -la processed/
|
|
```
|
|
|
|
### 6. Monitor for Issues
|
|
|
|
Watch the logs for any errors:
|
|
```bash
|
|
# Follow system logs
|
|
sudo journalctl -u pdf-renamer -f
|
|
|
|
# Or check nginx error logs
|
|
sudo tail -f /var/log/nginx/error.log
|
|
```
|
|
|
|
## Key Changes in This Update
|
|
|
|
1. **File Archiving System:** ZIPs now saved to `archives/` folder
|
|
2. **Automatic Cleanup:** Temporary files removed after ZIP creation
|
|
3. **Download Feature:** Users can download ZIPs from archives
|
|
4. **Delete Feature:** Comprehensive cleanup when jobs are deleted
|
|
5. **Security Fixes:** Path traversal protection, MIME validation
|
|
6. **Resource Management:** Proper cleanup of PDF streams and temp directories
|
|
7. **Performance:** Batched disk I/O for job persistence
|
|
|
|
## Rollback (If Needed)
|
|
|
|
If something goes wrong:
|
|
|
|
```bash
|
|
# Go back to previous commit
|
|
git log --oneline # Find the previous commit hash
|
|
git checkout <previous-commit-hash>
|
|
|
|
# Restart the service
|
|
sudo systemctl restart pdf-renamer
|
|
```
|
|
|
|
## Optional: Setup Automatic Cleanup
|
|
|
|
Add a cron job to clean up old jobs (optional):
|
|
|
|
```bash
|
|
# Edit crontab
|
|
crontab -e
|
|
|
|
# Add this line to run cleanup daily at 2 AM
|
|
0 2 * * * cd /path/to/pdf-rename-sort && /path/to/venv/bin/python -c "from pdf_renamer import cleanup_old_jobs; cleanup_old_jobs()"
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
**Permission Issues:**
|
|
```bash
|
|
sudo chown -R www-data:www-data archives/
|
|
sudo chown -R www-data:www-data processed/
|
|
```
|
|
|
|
**Missing Dependencies:**
|
|
```bash
|
|
pip install --upgrade -r requirements.txt
|
|
```
|
|
|
|
**Service Won't Start:**
|
|
```bash
|
|
# Check for syntax errors
|
|
python -m py_compile pdf_renamer.py
|
|
|
|
# Check service status
|
|
sudo systemctl status pdf-renamer
|
|
|
|
# View detailed logs
|
|
sudo journalctl -u pdf-renamer --no-pager -n 100
|
|
```
|