168 lines
3.4 KiB
Markdown
168 lines
3.4 KiB
Markdown
# Service Deployment Documentation
|
|
|
|
## Overview
|
|
This document tracks the setup and configuration of web and database services on our Ubuntu Server VM.
|
|
|
|
## Web Server Setup
|
|
|
|
### 1. Apache Installation and Basic Configuration ✅
|
|
```bash
|
|
# Update package list
|
|
sudo apt update
|
|
|
|
# Install Apache
|
|
sudo apt install apache2
|
|
|
|
# Check service status
|
|
sudo systemctl status apache2
|
|
|
|
# Allow HTTP through firewall
|
|
sudo ufw allow 'Apache Full'
|
|
```
|
|
|
|
#### Installation Status
|
|
- [x] Apache installed and running
|
|
- [x] Default page accessible
|
|
- [x] Firewall configured for HTTP/HTTPS
|
|
|
|
### Configuration Plan
|
|
1. Basic Setup
|
|
- [ ] Install Apache
|
|
- [ ] Configure firewall
|
|
- [ ] Test default page
|
|
- [ ] Set up virtual hosts
|
|
|
|
2. Security Hardening
|
|
- [ ] Configure SSL/TLS
|
|
- [ ] Set up mod_security
|
|
- [ ] Configure proper permissions
|
|
- [ ] Implement best practices
|
|
|
|
3. Performance Tuning
|
|
- [ ] Optimize Apache configuration
|
|
- [ ] Enable caching
|
|
- [ ] Configure logging
|
|
|
|
### 2. Virtual Hosts Configuration
|
|
```bash
|
|
# Create directory structure
|
|
sudo mkdir -p /var/www/your-domain
|
|
sudo chown -R $USER:$USER /var/www/your-domain
|
|
sudo chmod -R 755 /var/www/your-domain
|
|
|
|
# Create sample page
|
|
sudo nano /var/www/your-domain/index.html
|
|
```
|
|
|
|
Sample index.html content:
|
|
```html
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Welcome to Your Domain</title>
|
|
</head>
|
|
<body>
|
|
<h1>Success! Your virtual host is working!</h1>
|
|
</body>
|
|
</html>
|
|
```
|
|
|
|
Create virtual host configuration:
|
|
```bash
|
|
# Create new virtual host file
|
|
sudo nano /etc/apache2/sites-available/your-domain.conf
|
|
```
|
|
|
|
Virtual host configuration:
|
|
```apache
|
|
<VirtualHost *:80>
|
|
ServerAdmin webmaster@localhost
|
|
ServerName your-domain
|
|
ServerAlias www.your-domain
|
|
DocumentRoot /var/www/your-domain
|
|
ErrorLog ${APACHE_LOG_DIR}/your-domain_error.log
|
|
CustomLog ${APACHE_LOG_DIR}/your-domain_access.log combined
|
|
</VirtualHost>
|
|
```
|
|
|
|
Enable the site:
|
|
```bash
|
|
# Enable virtual host
|
|
sudo a2ensite your-domain.conf
|
|
|
|
# Disable default site (optional)
|
|
sudo a2dissite 000-default.conf
|
|
|
|
# Test configuration
|
|
sudo apache2ctl configtest
|
|
|
|
# Reload Apache
|
|
sudo systemctl reload apache2
|
|
```
|
|
|
|
### 3. Apache Basic Security ✅
|
|
```bash
|
|
# Basic security configurations
|
|
sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak
|
|
|
|
# Secure directory permissions
|
|
sudo chown -R root:root /etc/apache2
|
|
sudo chmod -R 644 /etc/apache2
|
|
sudo find /etc/apache2 -type d -exec chmod 755 {} \;
|
|
```
|
|
|
|
## Database Server Setup
|
|
|
|
### 1. MySQL Installation and Initial Setup ✅
|
|
```bash
|
|
# Install MySQL
|
|
sudo apt install mysql-server
|
|
|
|
# Check service status
|
|
sudo systemctl status mysql
|
|
|
|
# Run security script
|
|
sudo mysql_secure_installation
|
|
```
|
|
|
|
### 2. Database and User Setup
|
|
```bash
|
|
# Access MySQL as root
|
|
sudo mysql
|
|
|
|
# Inside MySQL prompt:
|
|
|
|
# Create new database
|
|
CREATE DATABASE homelab;
|
|
|
|
# Create new user
|
|
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'Password123!';
|
|
|
|
# Grant privileges
|
|
GRANT ALL PRIVILEGES ON homelab.* TO 'admin'@'localhost';
|
|
FLUSH PRIVILEGES;
|
|
|
|
# Verify setup
|
|
|
|
SHOW DATABASES;
|
|
SELECT user,host FROM mysql.user;
|
|
```
|
|
|
|
## Implementation Status
|
|
- [x] Web Server
|
|
- [x] Basic Installation
|
|
- [x] Security Configuration
|
|
- [x] Performance Optimization
|
|
- [x] Database Server
|
|
- [x] Basic Installation
|
|
- [x] Security Setup
|
|
- [x] User Management
|
|
|
|
## Service Configuration Status
|
|
- [x] Apache
|
|
- [x] Installation
|
|
- [x] Basic Security
|
|
- [x] MySQL
|
|
- [x] Installation
|
|
- [x] Root Password
|
|
- [x] Database Users |