Zwei Installationen auf einem Server mit Subdomain

Hallo Zusammen,

ich verzweifel gerade an der Installation einer zweiten Shopware Installation auf dem selben Server mit Subdomains.

Der Hauptshop ist unter www.domain.de zu erreichen und ein zweiter soll unter b2b.domain.de erreichbar sein. Beim Aufruf von b2b.domain.de wird aber immer auf den Hauptshop weitergeleitet.

Die Installation des b2b.domain.de Shops lief reibungslos, aber direkt nach der Installation erfolgt immer die Weiterleitung.

Die .htaccess sieht wie folgt aus:

RewriteEngine on

#RewriteBase /shopware/

# Https config for the backend
#RewriteCond %{HTTPS} !=on
#RewriteRule backend/(.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteRule shopware.dll shopware.php
RewriteRule files/documents/.* engine [NC,L]
RewriteRule backend/media/(.*) media/$1 [NC,L]

RewriteCond %{REQUEST_URI} !(\/(engine|files|templates|themes|web)\/)
RewriteCond %{REQUEST_URI} !(\/media\/(archive|banner|image|music|pdf|unknown|video)\/)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ shopware.php [PT,L,QSA]

# Fix missing authorization-header on fast_cgi installations
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]



    # Block access to VCS directories
    RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/|$)

    # Restrict access to root folder files
    RedirectMatch 404 /(composer\.(json|lock)|README\.md|UPGRADE\.md)$


# Staging environment
#SetEnvIf Host "staging.test.shopware.in" SHOPWARE_ENV=staging

# Development environment
#SetEnvIf Host "dev.shopware.in" SHOPWARE_ENV=dev
#SetEnv SHOPWARE_ENV dev

DirectoryIndex index.html
DirectoryIndex index.php
DirectoryIndex shopware.php

# Disables download of configuration

    # Deny all requests from Apache 2.4+.
    
          Require all denied
    

    # Deny all requests from Apache 2.0-2.2.
    
        Deny from all
    


# Enable gzip compression

    AddOutputFilterByType DEFLATE text/html text/xml text/plain text/css text/javascript application/javascript application/json



    
        ExpiresActive on
        ExpiresDefault "access plus 1 month"
    

    
        Header append Cache-Control "public"
        Header unset ETag
    

    FileETag None


# Match generated files like:
# 1429684458_t22_s1.css
# 1429684458_t22_s1.js

    
        Header set Cache-Control "max-age=31536000, public"
    

    
        ExpiresActive on
        ExpiresDefault "access plus 1 year"
    


# Disables auto directory index

	Options -Indexes



    Options -MultiViews



# php_value memory_limit 256M
# php_value max_execution_time 120
# php_value upload_max_filesize 20M
   php_flag phar.readonly off
   php_flag magic_quotes_gpc off
   php_flag session.auto_start off
   php_flag suhosin.session.cryptua off
   php_flag zend.ze1_compatibility_mode off
   php_value always_populate_raw_post_data -1


# AddType x-mapp-php5 .php
# AddHandler x-mapp-php5 .php


    Header append X-Frame-Options SAMEORIGIN

Die VHOST für den Hauptshop:

        # The ServerName directive sets the request scheme, hostname and port t$
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        ServerName www.domain.de
        ServerAlias domain.de
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf


# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Die VHOST für den zweiten Shop

        # The ServerName directive sets the request scheme, hostname and port t$
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        ServerName b2b.domain.de

        ServerAdmin webmaster@localhost
        DocumentRoot /var/wwwb2b

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf


# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

 

Ich danke schon einmal im Vorraus für jegliche Hilfe

Hast du evtl. im Subshop noch unter Grundeinstellungen > Shops den Host des Hauptshops drin?

1 „Gefällt mir“

Hey Mike,

also es sind zwei eigenständige Installationen, nur um Verwirrungen zu vermeiden wegen den Subshop Funktionen die Shopware selbst bietet.

Nun ist im Backend der subdomain unter Grundeinstellungen > Shops die Domain des Hauptshops eingtragen, sobald ich diese ändere, ändert sich die Domain im Hauptshop Backend ebenfalls.

In der Msql Datenbank des zweiten Shops ist unter s_core_shops auch die richtige Domain eingetragen, diese Datenbank wurde durch die Installation von Shopware angelegt und die config.php enthält auch die richtigen Daten. 

Dann greifen beide Shops auf die gleiche Datenbank zu. Lege eine neue Datenbank für den Subshop an.

1 „Gefällt mir“

Hey Mike,

das war auch mein erster Gedanke.

Die config.php der beiden Shops verweisen allerdings auf verschiedene Datenbanken.

Hauptshop:

  array (
    'host' => 'localhost',
    'port' => '3306',
    'username' => 'shopware',
    'password' => 'xxxx',
    'dbname' => 'shopware',
  ),
);

Zweiter Shop

  array (
    'host' => 'localhost',
    'port' => '3306',
    'username' => 'shopware',
    'password' => 'xxxx',
    'dbname' => 'businessshop',
  ),
);

Auch die Datenbanken existieren:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| b2bShopware |
| businessshop |
| shopware |
+--------------------+
4 rows in set (0.00 sec)

Der SQL Nutzer “shopware” hat auch die Berechtigungen für die Tabellen.

Oder habe ich ein Brett vor dem Kopf, dass ich etwas offensichtliches nicht sehe?

Cache?

1 „Gefällt mir“

Habe beide Shopcaches und den Browser Cache gelöscht.

Leider hat es nicht den gewünschten Effekt.

Versuche mal unterschiedliche User und Passwörter den jeweiligen Shops zu vergeben. Oder versuche mal ein falches Passwort in die config.php des Subshops einzutragen. Funktioniert er danach?

Mir sind zwei weitere Dinge aufgefallen.

Zum einen wenn ich bei der VHOST des zweiten Shops einen ServerAlias mit www. davor eintrage, dann leiten alle Anfragen zu der Domain des zweiten Shops.

Zum anderen wenn ich das Dokumentenverzeichnis des zweiten Shops in ein Unterverzeichnis des Hauptshops lege und das ganze per domain.de/b2bshop aufrufe, klappt alles wie gewollt nur ohne Subdomain.

Also gehe ich eher davon aus das irgendwas bei der Apache Einstellung verhindert, dass es funktionier.

Keine Ahnung ob die Zeile 

ServerName www.domain.de

aus der Apache-Config des Hauptshops eine Rolle spielt.

Du könntest im ersten Schritt versuchen die VHOSTs mit einem leeren HTML-Root oder mit nur einer simplen index.html zu erreichen.

@derHarry schrieb:

 

Nun ist im Backend der subdomain unter Grundeinstellungen > Shops die Domain des Hauptshops eingtragen, sobald ich diese ändere, ändert sich die Domain im Hauptshop Backend ebenfalls.

In der Msql Datenbank des zweiten Shops ist unter s_core_shops auch die richtige Domain eingetragen, diese Datenbank wurde durch die Installation von Shopware angelegt und die config.php enthält auch die richtigen Daten. 

Hattest du den Shop nur in des „neue“ Verzeichnis kopiert? oder wurde der Sub-Shop heu aufgesetzt in dann installiert mit der neuen Datenbank.

Ich hatte auch mal das gleiche Problem mit den Kopieren und dem anpassen der config.php, da was irgendwas noch im Cache gespeichert so das der zweite Shop immer die Datendank des Ersten nutzte, erst als ich auf den Server dann den kompletten Cache gelöscht hatte funktionierte das ganze.

Uwe

@NextMike‍  Wenn ich die VHOST auf eine leeres Verzeichnis verweisen lasse, zeigt er mir ganz normal den Inhalt.

@useg‍ Leider wurde der Shop nicht nur kopiert, der Shop ist komplett frisch installiert. Die Installation funktionierte für den zweiten Shop reibungslos über die b2b.domain.de, es wurde auch die richtige SQL Datenbank gefüllt. Direkt nach der Installation, ließ er sich dann nichtmehr dazu bewegen die subdomain zu nutzen.

Die Caches hatte ich auch schon gelöscht, hier bin ich bei beiden Shops (wobei ich nicht weiß ob die Backends sich wirklich unterschieden) über Einstellungen > Caches/Performance > Cache >Alle Auswählen > Leeren gegangen dazu habe ich noch in den Webverzeichnissen alles aus var/caches gelöscht.

@derHarry schrieb:

@NextMike‍  Wenn ich die VHOST auf eine leeres Verzeichnis verweisen lasse, zeigt er mir ganz normal den Inhalt.

das würde für mich bedeuten, dass Shopware weiterleitet 

Hallo,

mal eine ganz doofe Frage: Der Zugriff auf Shopware erfolgt immer ohne SSL-Verschlüsselung auf Port 80 oder benutzt ihr https:// und die vHost-Konfiguration ist für Port 443 nicht korrekt bzw. zeigt immer nur auf einen der beiden Shops?

Grundsätzlich sehen die beiden vHost-Konfigurationen in Ordnung aus. Ich würde aber immer die www-Version des Servernamens als Alias setzten und umgekehrt. Sonst kann es bei diesem Setting dazukommen, dass anstatt der zweite vHost-Eintrag der erste zum Tragen kommt.

 

Hallo hth,

normal ist der Shop über SSL und ohne Verschlüsselung erreichbar, nachdem die Probleme auftraten habe ich ala KISS die SSL vHost Einträge deaktiviert, um dies als Fehlerquelle auszuschließen.

Also kurz und knapp, die Shops sind momentan nur über Port 80 ohne Verschlüsselung erreichbar. (Das soll natürlich nicht so im Produktivbetrieb laufen, sondern nur fürs Testen.)