So erstellen Sie einen virtuellen Apache-Host in Ubuntu LTS

apache2.jpg

Dieses Mal bringe ich ein Handbuch zum Verwalten mehrerer Domänen mit derselben IP-Adresse auf dem Apache-Webserver mit , was bei Shared Hosting üblich ist. Dies ist eine ideale Lösung in Testumgebungen, auch in der Produktion, um ein zusätzliches Maß an Sicherheit zu bieten.

Was ist Apache?

Der Apache HTTP-Server ist ein Open Source-Webserver für Unix-ähnliche Plattformen . Windows einschließlich Mac enthält HTTP-Protokolle und die Option für virtuelle Sites. Es ist der beliebteste Webserver der Welt (seit 1996), da es sowohl sehr stabil als auch optimal sicher ist (gut konfiguriert). Apache ist der Server, der unter Apache Software Foundation- Programmierern weiterentwickelt wird.

Hauptmerkmale von Apache

Zu den Hauptmerkmalen gehören:

  • SSL- und TLS-Sicherheit für verschlüsselte Verbindungen (HTTPS).
  • SGDB (Datenauthentifizierung).
  • Unterstützung mit Programmiersprachen wie Perl, PHP, Python.
Was ist ein virtueller Host ?

Der virtuelle Begriff ” Hosts” bezieht sich auf die Praxis, ein oder mehrere Websites verschiedener Domänen unter derselben IP-Adresse zu betreiben, wobei die interne Portumleitung für jede Domäne verwendet wird. Sie können einen virtuellen Host als die Methode einer Versandfirma definieren, mit der jedes Paket an die entsprechende Filiale übertragen wird. Apache war einer der ersten Webserver, der virtuelle Hosts auf IP-Basis ohne Installation eines zusätzlichen Plugins unterstützt. Nach Version 1.1 wird die Erstellung eines virtuellen Hosts basierend auf IP und Namen unterstützt .

Unterschiede zwischen dem virtuellen Hosting basierend auf Namen und dem IP basierend

Apache unterstützt zwei Möglichkeiten, einen virtuellen Host zu konfigurieren:

  • Von IP
  • Nach Domainnamen

In der Lösung für IP-Apache ist die IP des Clients festgelegt, der die Anfrage stellt, und je nach dem Bereich von IP, den Sie vordefiniert haben, können Sie Standort A oder B eingeben. Dies ist in Verbindung mit einer Geolokalisierung durch IP bei Seiten mit mehreren Sprachen sehr vorteilhaft .

Das auf Namen basierende virtuelle Hosting ist normalerweise einfacher , es ist dasjenige, das wir im Labor anwenden. Es ist lediglich erforderlich, den DNS-Server entweder extern oder lokal zu konfigurieren, damit er auf unseren Server verweist, der den HTTP-Header filtert und ihn entsprechend umleitet. an den richtigen Ort. Der größte Vorteil ist, dass Sie die Anzahl der IP-Adressen pro Domain drastisch reduzieren können, andernfalls durch IP-Umleitung, wenn Sie für jeden Standort eine öffentliche IP benötigen würden. Sie haben Situationen, in denen Sie Hosting basierend auf Namen aus den folgenden Gründen nicht implementieren können:

  • Einige ältere Webbrowser sind nicht mit namensbasiertem virtuellem Hosting kompatibel. Damit das namensbasierte virtuelle Hosting funktioniert, muss der Client den HTTP-Host-Header senden.
  • Auf Namen basierendes virtuelles Hosting kann nicht zusammen mit SSL verwendet werden. Wenn Sie HTTPS implementieren möchten, ist dies nicht Ihre Option.
  • Einige Betriebssysteme und einige Netzwerkelemente haben Bandbreitenverwaltungstechniken implementiert, die nicht zwischen Hosts unterscheiden können, es sei denn, sie haben unterschiedliche IP-Adressen.
System vorbereiten.

Um den virtuellen Host zu konfigurieren, muss der Apache-Server installiert werden, der in den Ubuntu-Repositories enthalten ist .

 sudo ap-get installiere apache2 

Einmal installiert, können wir es ausführen mit:

 Sudo Service Apache starten 

Wir erstellen einen Benutzer ohne Administratorrechte, der Eigentümer der Webserver-Dateien ist:

 useadd fulanitopasswd so-so # Geben Sie das Passwort für den Benutzer ein 

Auf diese Weise wird es ohne Administratorrechte sein.

Verzeichnis erstellen

Wir müssen die Struktur der Verzeichnisse erstellen, in denen die Informationen der Sites gespeichert werden.

See also  So verbergen Sie Inhalte oder zeigen versteckten Text in Word 2016 an und drucken ihn

Unser Root-Dokument muss in den einzelnen Verzeichnissen konfiguriert werden, die sich normalerweise im Pfad / var / www befinden. Hier erstellen wir die Verzeichnisse für die beiden virtuellen Hosts, die wir als Beispiel konfigurieren. Zum Erstellen des Verzeichnisses können Sie die Option -p des Befehls mkdir verwenden , damit alle erforderlichen Verzeichnisse und Unterverzeichnisse erstellt werden.

 sudo mkdir -p /var/www/fulanito.com/httpdocssudo mkdir -p /var/www/menganito.com/httpdocs 

Dies ist das Stammverzeichnis der 2 Domains.

Berechtigungen erteilen

Um dem Benutzer die Berechtigung zum Arbeiten mit den Dateien der Verzeichnisse zu erteilen, empfehle ich, den von uns erstellten Nicht-Root-Benutzer zu verwenden und zusätzlich deren Zugriff über FTP oder SFTP zu aktivieren

 sudo chown -R fulanito.fulanito /var/www/fulanito.com/httpdocssudo chown -R menganito.menganito /var/www/menganito.com/httpdocs 

Ihr Server verfügt nun über die erforderlichen Berechtigungen, um den Inhalt anzuzeigen, und der Benutzer sollte in der Lage sein, nach Bedarf Inhalte in den Verzeichnissen zu erstellen.

Erstellen Sie die Homepage

Wir werden nur eine Demonstration machen, deshalb werden unsere Seiten sehr einfach sein. Wir erstellen nur eine index.html-Datei für jede Site.

 sudo touch /var/www/fulanito.com/public_html/index.htmlsudo touch /var/www/menganito.com/public_html/index.html 

Wir haben mit der so-and-so-Datei begonnen und verwenden in meinem Fall vim unseren Lieblingseditor.

 sudo vim /var/www/fulanito.com/public_html/index.html 
 <html> <head> <title> Sie haben die Website von Fulanito </ title> </ head> <body> <h1> aufgerufen. Perfekt! Sie haben bereits den virtuellen Host von Fulanito </ h1> </ body> </ html> 

Wir speichern die Datei mit: wq bei Verwendung von vim und beginnen mit menganito.

 sudo vim /var/www/menganito.com/public_html/index.html 
 <html> <head> <title> Sie haben die Seite von Menganito </ title> </ head> <body> <h1> aufgerufen. Perfekt! Sie haben den virtuellen Menganito-Host </ h1> </ body> </ html> bereits konfiguriert 

Speichern Sie die Datei und beenden Sie den Editor.

Erstellen Sie Dateien der neuen virtuellen Hosts

Virtual Host- Dateien sind Dateien, die Informationen und eine bestimmte Konfiguration für jede Domain enthalten. Beispielsweise können wir eine globale Apache-Konfiguration und unabhängige Optionen für eine bestimmte Domain haben.

Apache enthält eine Standarddatei für virtuelle Hosts mit dem Namen 000-default.conf, mit der wir zum gewünschten Punkt springen können. Wir werden eine Kopie erstellen, um daran zu arbeiten und unseren virtuellen Host für jede Domain zu erstellen .

Wir beginnen mit einer Domäne, konfigurieren sie, kopieren sie für die zweite Domäne und nehmen dann die erforderlichen Anpassungen vor. Die Standardkonfiguration von Ubuntu erfordert, dass jede Konfigurationsdatei des virtuellen Hosts auf .conf endet.

Erstellen Sie den virtuellen Host von Fulanito

Wir beginnen damit, die standardmäßige Apache-Datei zu kopieren und als Basis zu verwenden.

 sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/fulanito.com.conf 

Dann bearbeiten wir es und ändern die Werte für unsere Domain und unseren Root-Standort.

 sudo vim /et/apache2/sites-available/fulanito.com 

Wir werden den Namen der Domain bearbeiten, die vom virtuellen Host verwendet wird. In diesem Fall ist das so und so.

 Servername fulanito.com 

Wenn Sie möchten, dass auf unsere Website über mehr als einen Domainnamen zugegriffen werden kann (von Google verwendete Vorgehensweise), müssen Sie diesen auf folgende Weise in den ServerAlias hinzufügen.

 <VirtualHost *: 80> Servername fulanito.com ServerAlias ​​www.fulanito.com fulanitooo.com www.fulanitooo.com ... 

Denken Sie daran, dass Sie Zugriff auf die öffentlichen Domänen haben müssen, die Sie in ServerAlias hinzufügen. In meinem Fall ist dies nicht erforderlich, da alle Domänen lokal sind.

See also  Ansichten in phpMyAdmin

Als Nächstes muss die E-Mail des Webmasters hinzugefügt werden, der für die Verwaltung zuständig ist.

 ServerAdmin [email protected] 

Und fügen Sie den Ordner Root unserer Domain hinzu.

 DocumentRoot /var/www/fulanito.com/httpdocs 

Erstellen Sie den virtuellen Menganito-Host

Wir fahren dieses Mal mit der Domäne von Menganito fort und kopieren direkt aus der Datei von So und So.

 sudo cp /etc/apache2/sites-available/fulanito.com.conf /etc/apache2/sites-available/menganito.com.conf 

Wir bearbeiten es so, dass es so aussieht:

 <VirtualHost *: 80> ServerAdmin [email protected] Servername menganito.com ServerAlias ​​www.menganito.com DocumentRoot /var/www/menganito.com/httpdocs ErrorLog $ {APACHE_LOG_DIR} /error.log CustomLog $ {APACHE_LOG_DIR} /access.log kombiniert </ VirtualHost> 

Wir behalten die Änderungen.

Aktivieren Sie neue Domains in Apache

Wir müssen den Zugriff auf die neuen Sites aktivieren , damit Apache sie nach dem Neustart berücksichtigt. Wir verwenden:

 sudo a2ensite fulanito.comsudo a2ensite menganito.com 

Starten Sie zum Schluss den Apache-Server neu :

 sudo service apache2 neu starten 

Möglicherweise zeigt das System eine Meldung ähnlich der folgenden an:

 Der vollständig qualifizierte Domänenname des Servers konnte mit 127.0.0.1 für Servername nicht zuverlässig ermittelt werden 

Da es sich um eine Warnmeldung handelt, haben wir keine Probleme und werden uns nicht daran hindern, auf die neuen Websites zuzugreifen.

Hosts konfigurieren

Dieser Schritt ist optional. Wenn Sie Zugriff auf kostenpflichtige öffentliche Domains haben, können wir den Schritt überspringen. In meinem Fall handelt es sich um ein Labor und die Domains sind falsch. Ich muss die Datei / etc / hosts meines lokalen Computers bearbeiten.

Im Falle von Linux müssen wir die Datei bearbeiten:

 sudo vim / etc / hosts 

Bei Windows müssen wir die Datei mit dem Notebook im Administratormodus bearbeiten:

 C:  Windows  System32  drivers  etc  hosts 

Jedes Betriebssystem die Datei ist sehr ähnlich und wir müssen die Domänen am Ende hinzufügen:

 # Host Database ## localhost wird verwendet, um die # Loopback-Schnittstelle beim Booten des Systems zu konfigurieren. Ändern Sie diesen Eintrag nicht. ## 127.0.0.1 localhost # Virtual Hosts 127.0.0.1 fulanito.com127.0.0.1 menganito.com ... 

Dies ist sehr nützlich, wenn Sie die Website entwickeln, bevor Sie sie auf den Server hochladen, damit Sie navigieren und testen können, als ob Sie dies in Echtzeit tun.

Damit die in der Datei / etc / hosts vorgenommenen Änderungen wirksam werden, kann der folgende Befehl ausgeführt werden:

 sudo /etc/init.d/networking restart 
Testen Sie Ihren Apache-Server
  • http://www.fulanito.com/

fulanito.png

  • http://www.menganito.com/

menganito.png

Skript zum Hinzufügen eines virtuellen Hosts

Die Aufgabe des Vhost ist sehr häufig und wiederholt, um ein kleines Skript in bash hinzuzufügen, damit Sie diese Aufgabe auf Servern mit Ubuntu schneller automatisieren können.

 #! / bin / bash TEXTDOMAIN = Example.com ### Definieren Sie die Argumente in dieser Reihenfolge Action, Domain und Root Directory. Aktion = $ 1 domain = $ 2 rootDir = $ 3 owner = $ (wer bin ich | awk '{print $ 1}') email = 'webmaster @ localhost' sitesEnable = '/ etc / apache2 / sites-enabled /' sitesAvailable = '/ etc / apache2 / sites-available /' userDir = '/ var / www /' sitesAvailabledomain = $ sitesAvailable $ domain.conf ### NICHT ÄNDERN if ["$ (whoami)"! = 'root']; dann echo $ "Sie haben keine Berechtigung, $ 0 als nicht privilegierter Benutzer auszuführen. Verwenden Sie sudo." Ausfahrt 1; fi if ["$ action"! = 'create'] && ["$ action"! = 'delete'] dann echo $ "Sie müssen eine Aktion angeben {create, delete}" Ausfahrt 1; fi while ["$ domain" == ""] zu tun echo -e $ "Geben Sie eine Domain für example.com ein." Domain lesen fertig if ["$ rootDir" == ""]; dann rootDir = $ {domain //./} fi ### Wenn das Stammverzeichnis mit '/' beginnt, verwenden Sie / var / www nicht als Standardstartpunkt if [["$ rootDir" = ~ ^ /]]; dann userDir = '' fi rootDir = $ userDir $ rootDir if ["$ action" == 'create'] dann ### überprüfe ob die Domain bereits existiert if [-e $ sitesAvailabledomain]; dann echo -e $ "Die Domain existiert bereits. Bitte fügen Sie eine weitere hinzu." Ausfahrt; fi ### Überprüfen Sie, ob das Verzeichnis existiert oder nicht wenn! [-d $ rootDir]; dann ### Erstelle das Verzeichnis mkdir $ rootDir ### Erlaubnis geben an root dir chmod 755 $ rootDir ### Testdatei in das neue Domainverzeichnis schreiben wenn! echo "<? php echo phpinfo ();?>"> $ rootDir / phpinfo.php dann echo $ "ERROR: Unzureichende Berechtigungen zum Schreiben in das Verzeichnis $ userDir / $ rootDir / phpinfo.php Überprüfen Sie Ihre Berechtigungen" Ausfahrt; sonst echo $ "Inhalt zu $ ​​rootDir / phpinfo.php hinzugefügt" fi fi ### Erstelle eine virtuelle Host-Regeldatei wenn! echo " <VirtualHost *: 80> ServerAdmin $ email Servername $ Domäne ServerAlias ​​$ domain DocumentRoot $ rootDir <Directory /> AllowOverride All </ Directory> <Verzeichnis $ rootDir> Optionen Indizes FollowSymLinks MultiViews AllowOverride all Benötigt alles gewährt </ Directory> ErrorLog /var/log/apache2/$domain-error.log LogLevel-Fehler CustomLog /var/log/apache2/$domain-access.log kombiniert </ VirtualHost> "> $ sitesAvailabledomain dann echo -e $ "Es ist ein FEHLER aufgetreten, der eine $ domain-Datei erstellt" Ausfahrt; sonst echo -e $ " nNeuer virtueller Host erstellt  n" fi ### Domain in / etc / hosts hinzufügen wenn! Echo "127.0.0.1 $ domain" >> / etc / hosts dann echo $ "FEHLER: Schreiben in / etc / hosts nicht möglich" Ausfahrt; sonst echo -e $ "Host zur Datei / etc / hosts hinzugefügt  n" fi if ["$ owner" == ""]; dann chown -R $ (whoami): $ (whoami) $ rootDir sonst chown -R $ owner: $ owner $ rootDir fi ### Website aktivieren a2ensite $ domain ### Starten Sie Apache neu /etc/init.d/apache2 neu laden ### zeigt die fertige Nachricht an echo -e $ "Fertig!  nSie haben jetzt einen neuen virtuellen Host  nIhr neuer Host lautet: http: // $ domain  nUnd er befindet sich unter $ rootDir" Ausfahrt; sonst ### Überprüfen Sie, ob die Domain bereits existiert wenn! [-e $ sitesAvailabledomain]; dann echo -e $ "Diese Domain existiert nicht.  nBitte versuchen Sie es mit einer anderen" Ausfahrt; sonst ### Domain in / etc / hosts löschen newhost = $ {domain //./ \.} sed -i "/ $ newhost / d" / etc / hosts ### Website deaktivieren a2dissite $ domain ### Starten Sie Apache neu /etc/init.d/apache2 neu laden ### Löschen Sie die Regeldateien des virtuellen Hosts rm $ sitesAvailabledomain fi ### Überprüfen Sie, ob das Verzeichnis existiert oder nicht if [-d $ rootDir]; dann echo -e $ "Host-Stammverzeichnis löschen? (und / n)" lesen Sie deldir if ["$ deldir" == 'y' -o "$ deldir" == 'Y']; dann ### Löschen Sie das Verzeichnis rm -rf $ rootDir echo -e $ "Verzeichnis gelöscht" sonst echo -e $ "Host-Verzeichnis konserviert" fi sonst echo -e $ "Host-Verzeichnis nicht gefunden. Ignoriert" fi ### zeigt die fertige Nachricht an echo -e $ "Complete!  nSie haben gerade die Virtual Host $ -Domäne entfernt" Ausfahrt 0; fi 

Verwenden des Skripts zum Erstellen einer neuen Domäne

Wir werden neue vhosts für zutano domain erstellen.

 sudo virtualhost erstelle zutano.com /var/www/zutano.com/httpdocs 

Damit wird es erstellt.

Schlussfolgerungen
Wir haben ein kleines Labor für 3 falsche Domänen erstellt, die auf eine Adresse reagieren. Wenn wir vhosts mit NAT verwenden , können wir Staging-Sites erstellen, z. B. dev.fulanito.com, um Änderungen in einem Replikat vorzunehmen, ohne die ursprüngliche Site zu beeinträchtigen. Die Schritte für andere Distros wie Centos variieren in einigen Schritten, sind jedoch durch Ändern des Paketmanagers sehr ähnlich.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *