149 lines
3.9 KiB
Bash
Executable file
149 lines
3.9 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Setup script for running staging environment natively with Caddy
|
|
# This runs PHP and Go applications directly on the host
|
|
|
|
set -e
|
|
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo "Please run as root (use sudo)"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Setting up CMC Sales staging environment (native)..."
|
|
|
|
# 1. Install dependencies
|
|
echo "Installing dependencies..."
|
|
apt update
|
|
apt install -y \
|
|
php7.4-fpm \
|
|
php7.4-mysql \
|
|
php7.4-gd \
|
|
php7.4-curl \
|
|
php7.4-mbstring \
|
|
php7.4-xml \
|
|
php7.4-zip \
|
|
mariadb-server \
|
|
golang-go \
|
|
git \
|
|
supervisor
|
|
|
|
# 2. Create directories
|
|
echo "Creating directories..."
|
|
mkdir -p /var/www/cmc-sales-staging
|
|
mkdir -p /var/log/cmc-staging
|
|
mkdir -p /var/run/cmc-staging
|
|
mkdir -p /etc/cmc-staging
|
|
|
|
# 3. Clone or copy application
|
|
echo "Setting up application code..."
|
|
if [ -d "/home/cmc/cmc-sales" ]; then
|
|
cp -r /home/cmc/cmc-sales/* /var/www/cmc-sales-staging/
|
|
else
|
|
echo "Please clone the repository to /home/cmc/cmc-sales first"
|
|
exit 1
|
|
fi
|
|
|
|
# 4. Setup PHP-FPM pool for staging
|
|
echo "Configuring PHP-FPM..."
|
|
cat > /etc/php/7.4/fpm/pool.d/staging.conf << 'EOF'
|
|
[staging]
|
|
user = www-data
|
|
group = www-data
|
|
listen = /run/php/php7.4-fpm-staging.sock
|
|
listen.owner = www-data
|
|
listen.group = caddy
|
|
listen.mode = 0660
|
|
|
|
pm = dynamic
|
|
pm.max_children = 10
|
|
pm.start_servers = 2
|
|
pm.min_spare_servers = 1
|
|
pm.max_spare_servers = 3
|
|
pm.max_requests = 500
|
|
|
|
; Environment variables
|
|
env[APP_ENV] = staging
|
|
env[DB_HOST] = localhost
|
|
env[DB_PORT] = 3307
|
|
env[DB_NAME] = cmc_staging
|
|
env[DB_USER] = cmc_staging
|
|
|
|
; PHP settings
|
|
php_admin_value[error_log] = /var/log/cmc-staging/php-error.log
|
|
php_admin_flag[log_errors] = on
|
|
php_admin_value[memory_limit] = 256M
|
|
php_admin_value[upload_max_filesize] = 50M
|
|
php_admin_value[post_max_size] = 50M
|
|
EOF
|
|
|
|
# 5. Setup MariaDB for staging
|
|
echo "Configuring MariaDB..."
|
|
mysql -e "CREATE DATABASE IF NOT EXISTS cmc_staging;"
|
|
mysql -e "CREATE USER IF NOT EXISTS 'cmc_staging'@'localhost' IDENTIFIED BY '${DB_PASSWORD_STAGING:-staging_password}';"
|
|
mysql -e "GRANT ALL PRIVILEGES ON cmc_staging.* TO 'cmc_staging'@'localhost';"
|
|
mysql -e "FLUSH PRIVILEGES;"
|
|
|
|
# 6. Setup Go application service
|
|
echo "Setting up Go application service..."
|
|
cat > /etc/systemd/system/cmc-go-staging.service << 'EOF'
|
|
[Unit]
|
|
Description=CMC Go Application - Staging
|
|
After=network.target mariadb.service
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=www-data
|
|
Group=www-data
|
|
WorkingDirectory=/var/www/cmc-sales-staging/go-app
|
|
Environment="PORT=8092"
|
|
Environment="APP_ENV=staging"
|
|
Environment="DB_HOST=localhost"
|
|
Environment="DB_PORT=3306"
|
|
Environment="DB_USER=cmc_staging"
|
|
Environment="DB_NAME=cmc_staging"
|
|
ExecStart=/usr/local/bin/cmc-go-staging
|
|
Restart=always
|
|
RestartSec=10
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
# 7. Build Go application
|
|
echo "Building Go application..."
|
|
cd /var/www/cmc-sales-staging/go-app
|
|
go mod download
|
|
go build -o /usr/local/bin/cmc-go-staging cmd/server/main.go
|
|
|
|
# 8. Set permissions
|
|
echo "Setting permissions..."
|
|
chown -R www-data:www-data /var/www/cmc-sales-staging
|
|
chmod -R 755 /var/www/cmc-sales-staging
|
|
chmod -R 777 /var/www/cmc-sales-staging/app/tmp
|
|
chmod -R 777 /var/www/cmc-sales-staging/app/webroot/pdf
|
|
chmod -R 777 /var/www/cmc-sales-staging/app/webroot/attachments_files
|
|
|
|
# 9. Create Caddy user in www-data group
|
|
usermod -a -G www-data caddy
|
|
|
|
# 10. Copy Caddyfile
|
|
cp /home/cmc/cmc-sales/Caddyfile.staging-native /etc/caddy/Caddyfile
|
|
|
|
# 11. Start services
|
|
echo "Starting services..."
|
|
systemctl restart php7.4-fpm
|
|
systemctl enable cmc-go-staging
|
|
systemctl start cmc-go-staging
|
|
systemctl reload caddy
|
|
|
|
echo ""
|
|
echo "Staging environment setup complete!"
|
|
echo ""
|
|
echo "Next steps:"
|
|
echo "1. Set database password: export DB_PASSWORD_STAGING='your_password'"
|
|
echo "2. Update /etc/caddy/Caddyfile with correct database password"
|
|
echo "3. Import database: mysql cmc_staging < backup.sql"
|
|
echo "4. Restart services: systemctl restart caddy cmc-go-staging"
|
|
echo ""
|
|
echo "Access staging at: https://staging.cmc.springupsoftware.com" |