Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Apache] Dynamische virtual hosts opzetten

Pagina: 1
Acties:

Vraag


  • Robin91
  • Registratie: April 2010
  • Laatst online: 05-12-2024
Ik ben momenteel bezig met het bouwen van een webwinkel framework waar klanten voor een bedrag per maand een webwinkel mee kunnen runnen (door ons gehost). Het probleem is dat er een groot aantal domeinnamen naar de goede folder moeten worden gestuurd. Het echte probleem hiervan is dat een webwinkel gemakkelijk 5 a 10 domeinnamen kan hebben (multi-store / multi-language).

Veel bronnen wijzen naar VirtualDocumentRoot, maar hierbij is 1 domein (+subdomeinen) gelijk aan 1 folder. Andere bronnen lijken de perfecte oplossing te hebben met een MYSQL connectie, maar deze zijn vrij oud (+5 jaar) en zien er niet efficient uit. Zelf heb ik nog het idee om met een cronjob iedere minuut de domein mutaties op te vragen, de vhost te construeren en de server (momenteel apache2) een reload te geven.

Hierbij is het ook noodzakelijk dat alle domeinen (mogelijk automatisch gegenereerd met lets-encrypt, maar dat is vrij eenvoudig met de cronjob) een SSL certificaat hebben.

Heeft iemand nog andere ideen voordat ik optie 3 implementeer?

Alle reacties


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Serverconfiguratie heeft niks met programmeren te maken. Zie Waar hoort mijn topic?

PRG >> WSS

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Robin91
  • Registratie: April 2010
  • Laatst online: 05-12-2024
Bedankt voor het verplaatsen, inmiddels is de grens tussen het programmeren en de server configuratie vrij klein geworden. Apache 2 is de software die momenteel wordt gebruikt, maar op de .htaccess na hebben wij hier geen dependency mee. Andere server software is dus geen probleem.

[ Voor 3% gewijzigd door Robin91 op 29-07-2017 14:33 ]


  • jeanj
  • Registratie: Augustus 2002
  • Niet online

jeanj

F5 keeps me alive

Als het linux/unix is, waarom link je de twee en op volgende document roots niet naar de eerste. Dan heeft elke url een eigen directory maar allemaal met dezelfde content.

Everything is better with Bluetooth


  • Robin91
  • Registratie: April 2010
  • Laatst online: 05-12-2024
Ik heb maar een dagje gespendeerd aan het leren van bash. Dit script doet al redelijk wat het moet doen:

Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/bin/bash
sitesEnable='/etc/apache2/sites-enabled/'
sitesAvailable='/etc/apache2/sites-available/'
dbname='root'
dbpass=''

function formatConfig {
    sed -i -e "s/\[serveralias\]/Serveralias www.$3/g" $1
    sed -i -e "s/\[docroot\]/$2/g" $1
    sed -i -e "s/\[servername\]/$3/g" $1
}

folders=$(mysql -h 10.0.0.10 -D shopcenter -u $dbname -p$dbpass -se "SELECT folder FROM shop WHERE enabled=1")
for i in ${folders[@]}
do :
   rootDir=/var/www/$i

   if [[ ! -e $rootDir ]]; then
      mkdir $rootDir
      mkdir $rootDir/public_html
      mkdir $rootDir/cron
      mkdir $rootDir/log

      cp -R /var/www/templatedir/. $rootDir/public_html
   fi

   domains=$(mysql -h 10.0.0.10 -D shopcenter -u $dbname -p$dbpass -se 'SELECT domain FROM shop_domain d, shop s WHERE s.folder="'$i'" AND s.shopid=d.shopid AND d.enabled=1')
   for d in ${domains[@]}
   do :
      siteConfig=$sitesAvailable$d.conf
      siteConfigssl=$sitesAvailable${d}_ssl.conf
      certfile="/etc/letsencrypt/live/$d/cert.pem"

      if [ ! -f $siteConfig ] && [ ! -f $siteConfigssl ]; then
          cp $sitesAvailable/template_nossl.conf $siteConfig

          formatConfig $siteConfig $i $d

          a2ensite $d
          service apache2 reload
      fi

      if [ ! -f $siteConfigssl ]; then
          if [ ! -f $certfile ]; then
            certbot certonly --webroot --email info@company.com --agree-tos --preferred-challenges http -w $rootDir/public_html -d $d -d www.$d
          fi

          if [ -f $certfile]; then
             cp $sitesAvailable/template_ssl.conf $siteConfigssl
             formatConfig $siteConfigssl $i $d
             rm -f $siteConfig

             a2dissite $d
             a2ensite ${d}_ssl
             service apache2 reload
          fi
      fi
   done
done