288 lines
4.7 KiB
Markdown
288 lines
4.7 KiB
Markdown
|
|
# Quick SSH Commands for Ubuntu Server Deployment
|
||
|
|
|
||
|
|
## Connect to Server
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
ssh username@192.168.10.130
|
||
|
|
```
|
||
|
|
|
||
|
|
Replace `username` with your actual Ubuntu username.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Transfer Files to Server
|
||
|
|
|
||
|
|
### Method 1: SCP (Recommended)
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
# From Windows PowerShell
|
||
|
|
scp -r "E:\Documents\Website Projects\Church_SongLyric" username@192.168.10.130:/tmp/
|
||
|
|
```
|
||
|
|
|
||
|
|
### Method 2: rsync (if available)
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
rsync -avz --progress "E:\Documents\Website Projects\Church_SongLyric/" username@192.168.10.130:/tmp/Church_SongLyric/
|
||
|
|
```
|
||
|
|
|
||
|
|
### Method 3: WinSCP (GUI)
|
||
|
|
|
||
|
|
1. Download WinSCP from <https://winscp.net>
|
||
|
|
2. Connect to 192.168.10.130
|
||
|
|
3. Drag and drop the Church_SongLyric folder
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## One-Line Deployment
|
||
|
|
|
||
|
|
After SSH'ing to the server:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
sudo mv /tmp/Church_SongLyric /var/www/church-songlyric && cd /var/www/church-songlyric && chmod +x *.sh && ./ubuntu-setup-postgresql.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Troubleshooting SSH
|
||
|
|
|
||
|
|
### Can't Connect
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
# Test if server is reachable
|
||
|
|
ping 192.168.10.130
|
||
|
|
|
||
|
|
# Test if SSH port is open
|
||
|
|
Test-NetConnection -ComputerName 192.168.10.130 -Port 22
|
||
|
|
```
|
||
|
|
|
||
|
|
### Permission Denied
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# On Ubuntu server, ensure SSH is running
|
||
|
|
sudo systemctl status ssh
|
||
|
|
sudo systemctl start ssh
|
||
|
|
```
|
||
|
|
|
||
|
|
### SSH Keys (Optional Setup)
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
# Generate SSH key on Windows (if not exists)
|
||
|
|
ssh-keygen -t ed25519
|
||
|
|
|
||
|
|
# Copy key to server
|
||
|
|
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh username@192.168.10.130 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
|
||
|
|
|
||
|
|
# Now you can connect without password
|
||
|
|
ssh username@192.168.10.130
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Quick Commands After Connection
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Check system info
|
||
|
|
uname -a
|
||
|
|
lsb_release -a
|
||
|
|
|
||
|
|
# Check disk space
|
||
|
|
df -h
|
||
|
|
|
||
|
|
# Check memory
|
||
|
|
free -h
|
||
|
|
|
||
|
|
# Check if PostgreSQL is installed
|
||
|
|
psql --version
|
||
|
|
|
||
|
|
# Check if Python3 is installed
|
||
|
|
python3 --version
|
||
|
|
|
||
|
|
# Check if Node.js is installed
|
||
|
|
node --version
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Post-Deployment Verification
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Check service status
|
||
|
|
sudo systemctl status church-songlyric-backend
|
||
|
|
|
||
|
|
# View logs
|
||
|
|
sudo journalctl -u church-songlyric-backend -n 50
|
||
|
|
|
||
|
|
# Test API
|
||
|
|
curl http://192.168.10.130:5100/api/health
|
||
|
|
|
||
|
|
# Test via Nginx
|
||
|
|
curl http://192.168.10.130/api/health
|
||
|
|
|
||
|
|
# Check PostgreSQL
|
||
|
|
sudo -u postgres psql -c "\l" | grep church_songlyric
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Common Management Tasks
|
||
|
|
|
||
|
|
### Restart Services
|
||
|
|
|
||
|
|
```bash
|
||
|
|
sudo systemctl restart church-songlyric-backend
|
||
|
|
sudo systemctl restart nginx
|
||
|
|
sudo systemctl restart postgresql
|
||
|
|
```
|
||
|
|
|
||
|
|
### View Live Logs
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Backend logs
|
||
|
|
sudo journalctl -u church-songlyric-backend -f
|
||
|
|
|
||
|
|
# Nginx access logs
|
||
|
|
sudo tail -f /var/log/nginx/access.log
|
||
|
|
|
||
|
|
# Nginx error logs
|
||
|
|
sudo tail -f /var/log/nginx/error.log
|
||
|
|
```
|
||
|
|
|
||
|
|
### Database Access
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Connect to PostgreSQL
|
||
|
|
sudo -u postgres psql
|
||
|
|
|
||
|
|
# Or directly to your database
|
||
|
|
sudo -u postgres psql -d church_songlyric
|
||
|
|
|
||
|
|
# List all tables
|
||
|
|
\dt
|
||
|
|
|
||
|
|
# Exit
|
||
|
|
\q
|
||
|
|
```
|
||
|
|
|
||
|
|
### Update Application
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# After transferring new files to /tmp/
|
||
|
|
cd /var/www/church-songlyric
|
||
|
|
sudo rm -rf backend frontend # Backup first!
|
||
|
|
sudo cp -r /tmp/Church_SongLyric/* .
|
||
|
|
sudo chown -R www-data:www-data .
|
||
|
|
|
||
|
|
# Rebuild
|
||
|
|
cd frontend
|
||
|
|
npm install
|
||
|
|
npm run build
|
||
|
|
|
||
|
|
cd ../backend
|
||
|
|
source venv/bin/activate
|
||
|
|
pip install -r requirements.txt
|
||
|
|
|
||
|
|
# Restart
|
||
|
|
sudo systemctl restart church-songlyric-backend
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Emergency Commands
|
||
|
|
|
||
|
|
### Stop Everything
|
||
|
|
|
||
|
|
```bash
|
||
|
|
sudo systemctl stop church-songlyric-backend
|
||
|
|
sudo systemctl stop nginx
|
||
|
|
```
|
||
|
|
|
||
|
|
### Check Port Usage
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Check if port 5100 is in use
|
||
|
|
sudo netstat -tulpn | grep 5100
|
||
|
|
|
||
|
|
# Check who's using port 5100
|
||
|
|
sudo lsof -i :5100
|
||
|
|
```
|
||
|
|
|
||
|
|
### Kill Process on Port
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Find process
|
||
|
|
sudo lsof -i :5100
|
||
|
|
|
||
|
|
# Kill it (replace PID with actual process ID)
|
||
|
|
sudo kill -9 PID
|
||
|
|
```
|
||
|
|
|
||
|
|
### Database Backup
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Quick backup
|
||
|
|
pg_dump -h 192.168.10.130 -U songlyric_user -d church_songlyric > ~/backup_$(date +%Y%m%d_%H%M%S).sql
|
||
|
|
|
||
|
|
# Restore from backup
|
||
|
|
psql -h 192.168.10.130 -U songlyric_user -d church_songlyric < ~/backup_file.sql
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Server Maintenance
|
||
|
|
|
||
|
|
### Update System
|
||
|
|
|
||
|
|
```bash
|
||
|
|
sudo apt update
|
||
|
|
sudo apt upgrade -y
|
||
|
|
sudo apt autoremove -y
|
||
|
|
```
|
||
|
|
|
||
|
|
### Check Disk Space
|
||
|
|
|
||
|
|
```bash
|
||
|
|
df -h
|
||
|
|
du -sh /var/www/church-songlyric
|
||
|
|
```
|
||
|
|
|
||
|
|
### Monitor Resources
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# CPU and memory usage
|
||
|
|
htop
|
||
|
|
|
||
|
|
# Or simpler
|
||
|
|
top
|
||
|
|
|
||
|
|
# Disk I/O
|
||
|
|
iotop
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Security
|
||
|
|
|
||
|
|
### Firewall Status
|
||
|
|
|
||
|
|
```bash
|
||
|
|
sudo ufw status verbose
|
||
|
|
```
|
||
|
|
|
||
|
|
### Add Firewall Rules
|
||
|
|
|
||
|
|
```bash
|
||
|
|
sudo ufw allow 5100/tcp
|
||
|
|
sudo ufw allow 80/tcp
|
||
|
|
sudo ufw allow 443/tcp
|
||
|
|
```
|
||
|
|
|
||
|
|
### Check Failed Login Attempts
|
||
|
|
|
||
|
|
```bash
|
||
|
|
sudo grep "Failed password" /var/log/auth.log | tail -20
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Quick Reference Card** - Print or save this for easy access!
|