Настройка виртуальных хостов в Xampp

  1. Создаем настроечный шаблон vhosts.template в каталоге /home/username <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot "/opt/lampp/htdocs/domains/host.local" ServerName host.local ServerAlias www.host.local ErrorLog "logs/$host.local-error_log" CustomLog "logs/host.local-access_log" common </VirtualHost><VirtualHost *:443> DocumentRoot "/opt/lampp/htdocs/domains/host.local" ServerName /opt/lampp/htdocs/domains/host.local ServerName host.local ServerAlias www.host.local SSLEngine On SSLCertificateFile "/opt/lampp/etc/ssl.crt/host.crt" SSLCertificateKeyFile "/opt/lampp/etc/ssl.key/host.key"<Directory "/opt/lampp/htdocs/domains/host.local"> Options All AllowOverride All order allow,deny allow from all </Directory> </VirtualHost>
  2. Создаем генератор настроек по шаблону gen-xampp-hosts.sh в /home/username содержимое файла read -p "Enter your host [new.local]: " host host=${host:-new} echo "make keys $host" sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout "$host.key" -out "$host.crt" echo "Install certs ..." sudo cp *.key /opt/lampp/etc/ssl.key/ sudo cp *.crt /opt/lampp/etc/ssl.crt/ echo "Append to vhosts..." sed -e "s/host/${host}/g" <vhosts.template > temp.conf cat temp.conf | sudo tee -a /opt/lampp/etc/extra/httpd-vhosts.conf echo "127.0.0.1 $host.local" | sudo tee -a /etc/hosts echo "127.0.0.1 www.$host.local" | sudo tee -a /etc/hosts
  3. Даем исполняемые права и запускаем chmod +x gen-xampp-hosts.sh sudo ./gen-xampp-hosts.sh Примечание - конфигурация будет дописана в конец файла /opt/lampp/etc/extra/httpd-vhosts.conf Ключи ssh будут размещены в соответствующих каталогах /opt/lampp/etc/ssl.crt и /opt/lampp/etc/ssl.key
  4. Используя возможности dialog, можно переделать сценарий для псевдографического стиля clear host=$(dialog --title "Add new virtual host" --backtitle "Host name: " --inputbox "" 8 180 2>&1 >/dev/tty) if [ -n "$host" ]; then dialog --title "1/3" --msgbox "Install certs for $host.local" 6 44 clear sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout "$host.key" -out "$host.crt" cp *.key /opt/lampp/etc/ssl.key/ cp *.crt /opt/lampp/etc/ssl.crt/ dialog --title "2/3" --msgbox "Write Apache conf for $host.local" 6 44 clear sed -e "s/host/${host}/g" <vhosts.template > temp.conf cat temp.conf | sudo tee -a /opt/lampp/etc/extra/httpd-vhosts.conf dialog --title "3/3" --msgbox "Changes /etc/hosts for $host.local" 6 44 clear echo "127.0.0.1 $host.local" | sudo tee -a /etc/hosts echo "127.0.0.1 www.$host.local" | sudo tee -a /etc/hosts dialog --title "All done" --msgbox "Restart Apache using /opt/lampp/xampp" 6 44 clear else dialog --title "Cancel operation" --msgbox "No changes was made" 6 44 clear fi 5. В рабочей среде gnome или kde можно использовать gdialog и kdialog соответственно, что потребует незначительной переделки сценария, например,host=$(kdialog --title "Ввод информации" --inputbox "Адрес хоста" "new"); if [ -n "$host" ]; then kdialog --title "1/3" --msgbox "Install certs for $host.local" 6 44sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout "$host.key" -out "$host.crt" sudo cp *.key /opt/lampp/etc/ssl.key/ sudo cp *.crt /opt/lampp/etc/ssl.crt/ kdialog --title "2/3" --msgbox "Write Apache conf for $host.local" 6 44sed -e "s/host/${host}/g" <vhosts.template > temp.conf cat temp.conf | sudo tee -a /opt/lampp/etc/extra/httpd-vhosts.conf kdialog --title "3/3" --msgbox "Changes /etc/hosts for $host.local" 6 44 echo "127.0.0.1 $host.local" | sudo tee -a /etc/hosts echo "127.0.0.1 www.$host.local" | sudo tee -a /etc/hosts kdialog --title "All done" --msgbox "Restart Apache using /opt/lampp/xampp" 6 44 else kdialog --title "Cancel operation" --msgbox "No changes was made" 6 44 fi

Теги документа