22
33# WolfServe Service Installer
44# Installs WolfServe as a systemd service on Linux
5+ #
6+ # Usage: ./install_service.sh [-y|--yes]
7+ #
8+ # Environment variables (for non-interactive use):
9+ # WOLFSERVE_HOST - Server bind address (default: 0.0.0.0)
10+ # WOLFSERVE_PORT - Server port (default: 3000)
11+ # WOLFSERVE_FPM_PORT - PHP-FPM port (default: 9993)
12+ # WOLFSERVE_SESSION_PATH - PHP session save path (default: /var/lib/php/sessions)
13+ # WOLFSERVE_APACHE_DIR - Apache config directory (default: /etc/apache2 or /etc/httpd)
514
615set -e
716
817INSTALL_DIR=" /opt/wolfserve"
918SERVICE_NAME=" wolfserve"
10- PHP_FPM_PORT=" 9993"
19+
20+ # Parse arguments
21+ AUTO_YES=false
22+ for arg in " $@ " ; do
23+ case $arg in
24+ -y|--yes)
25+ AUTO_YES=true
26+ shift
27+ ;;
28+ esac
29+ done
1130
1231# Check if running as root
1332if [ " $( id -u) " -ne 0 ]; then
1433 echo " ❌ Please run as root (sudo ./install_service.sh)"
1534 exit 1
1635fi
1736
18- echo " 🐺 Installing WolfServe as a service..."
37+ echo " 🐺 WolfServe Service Installer"
38+ echo " =============================="
39+ echo " "
1940
20- # Fix PHP sessions directory permissions
21- echo " 🔧 Fixing PHP sessions directory permissions..."
22- for sessions_dir in /var/lib/php/sessions /var/lib/php/session; do
23- if [ -d " $sessions_dir " ]; then
24- chmod 777 " $sessions_dir "
25- echo " ✅ Set permissions on $sessions_dir "
26- break
41+ # ============================================
42+ # Configuration (interactive or from env vars)
43+ # ============================================
44+
45+ # Detect default Apache directory
46+ DEFAULT_APACHE_DIR=" /etc/apache2"
47+ if [ -d " /etc/httpd" ] && [ ! -d " /etc/apache2" ]; then
48+ DEFAULT_APACHE_DIR=" /etc/httpd"
49+ fi
50+
51+ # Set defaults from environment variables
52+ SERVER_HOST=" ${WOLFSERVE_HOST:- 0.0.0.0} "
53+ SERVER_PORT=" ${WOLFSERVE_PORT:- 3000} "
54+ PHP_FPM_PORT=" ${WOLFSERVE_FPM_PORT:- 9993} "
55+ SESSION_SAVE_PATH=" ${WOLFSERVE_SESSION_PATH:-/ var/ lib/ php/ sessions} "
56+ APACHE_CONFIG_DIR=" ${WOLFSERVE_APACHE_DIR:- $DEFAULT_APACHE_DIR } "
57+
58+ if [ " $AUTO_YES " = false ]; then
59+ echo " 📝 Configuration Options (press Enter to accept defaults)"
60+ echo " "
61+
62+ # Server settings
63+ read -p " Server bind address [$SERVER_HOST ]: " INPUT
64+ SERVER_HOST=" ${INPUT:- $SERVER_HOST } "
65+
66+ read -p " Server port [$SERVER_PORT ]: " INPUT
67+ SERVER_PORT=" ${INPUT:- $SERVER_PORT } "
68+
69+ # PHP settings
70+ read -p " PHP-FPM port [$PHP_FPM_PORT ]: " INPUT
71+ PHP_FPM_PORT=" ${INPUT:- $PHP_FPM_PORT } "
72+
73+ read -p " PHP session save path [$SESSION_SAVE_PATH ]: " INPUT
74+ SESSION_SAVE_PATH=" ${INPUT:- $SESSION_SAVE_PATH } "
75+
76+ # Apache settings
77+ read -p " Apache config directory [$APACHE_CONFIG_DIR ]: " INPUT
78+ APACHE_CONFIG_DIR=" ${INPUT:- $APACHE_CONFIG_DIR } "
79+ fi
80+
81+ echo " "
82+ echo " 📋 Configuration Summary:"
83+ echo " Server: $SERVER_HOST :$SERVER_PORT "
84+ echo " PHP-FPM: 127.0.0.1:$PHP_FPM_PORT "
85+ echo " Sessions: $SESSION_SAVE_PATH "
86+ echo " Apache dir: $APACHE_CONFIG_DIR "
87+ echo " "
88+
89+ if [ " $AUTO_YES " = false ]; then
90+ read -p " Proceed with installation? [Y/n]: " CONFIRM
91+ CONFIRM=" ${CONFIRM:- Y} "
92+ if [[ ! " $CONFIRM " =~ ^[Yy]$ ]]; then
93+ echo " Installation cancelled."
94+ exit 0
2795 fi
28- done
96+ fi
97+
98+ echo " "
99+ echo " 🐺 Installing WolfServe as a service..."
29100
30101# 1. Determine Web User
31102WEB_USER=" www-data"
@@ -69,27 +140,28 @@ mkdir -p "$INSTALL_DIR"
69140mkdir -p " $INSTALL_DIR /public"
70141
71142# 4. Copy Files
72- echo " Vk Copying files..."
143+ echo " 📦 Copying files..."
73144cp target/release/wolfserve " $INSTALL_DIR /"
74145cp wolflib/target/release/libwolflib.so " $INSTALL_DIR /"
75146
76- # Copy config if not exists, else keep existing
77- if [ ! -f " $INSTALL_DIR /wolfserve.toml" ]; then
78- if [ -f " wolfserve.toml" ]; then
79- cp wolfserve.toml " $INSTALL_DIR /"
80- elif [ -f " wolfserve.toml.example" ]; then
81- cp wolfserve.toml.example " $INSTALL_DIR /wolfserve.toml"
82- else
83- # minimal config
84- echo " [server]" > " $INSTALL_DIR /wolfserve.toml"
85- echo " host = \" 0.0.0.0\" " >> " $INSTALL_DIR /wolfserve.toml"
86- echo " port = 3000" >> " $INSTALL_DIR /wolfserve.toml"
87- echo " " >> " $INSTALL_DIR /wolfserve.toml"
88- echo " [php]" >> " $INSTALL_DIR /wolfserve.toml"
89- echo " fpm_address = \" 127.0.0.1:$PHP_FPM_PORT \" " >> " $INSTALL_DIR /wolfserve.toml"
90- echo " mode = \" fpm\" " >> " $INSTALL_DIR /wolfserve.toml"
91- fi
92- fi
147+ # Generate config with user-specified options
148+ echo " 📝 Writing configuration to $INSTALL_DIR /wolfserve.toml..."
149+ cat > " $INSTALL_DIR /wolfserve.toml" << EOF
150+ # WolfServe Configuration
151+ # Generated by install_service.sh on $( date)
152+
153+ [server]
154+ host = "$SERVER_HOST "
155+ port = $SERVER_PORT
156+
157+ [php]
158+ fpm_address = "127.0.0.1:$PHP_FPM_PORT "
159+ mode = "fpm"
160+ session_save_path = "$SESSION_SAVE_PATH "
161+
162+ [apache]
163+ config_dir = "$APACHE_CONFIG_DIR "
164+ EOF
93165
94166# Copy public files
95167# Only copy if source public exists
151223
152224if [ -n " $FPM_POOL_CONF " ]; then
153225 echo " Writing pool config to $FPM_POOL_CONF ..."
226+
227+ # Create session directory if needed
228+ if [ ! -d " $SESSION_SAVE_PATH " ]; then
229+ echo " Creating session directory: $SESSION_SAVE_PATH "
230+ mkdir -p " $SESSION_SAVE_PATH "
231+ fi
232+ chown " $WEB_USER :$WEB_USER " " $SESSION_SAVE_PATH "
233+ chmod 1733 " $SESSION_SAVE_PATH "
234+ echo " ✅ Session save path: $SESSION_SAVE_PATH "
235+
154236 cat > " $FPM_POOL_CONF " << EOF
155237[wolfserve]
156238user = $WEB_USER
@@ -163,6 +245,7 @@ pm.max_children = 5
163245pm.start_servers = 2
164246pm.min_spare_servers = 1
165247pm.max_spare_servers = 3
248+ php_admin_value[session.save_path] = $SESSION_SAVE_PATH
166249EOF
167250 echo " ✅ PHP-FPM pool configured."
168251else
0 commit comments