Webserver einrichten auf einem Dedicated Server

Hallo,

heute erkläre ich euch wie man mit wenigen Mitteln einen funktionierenden Webserver aufsetzt. Und das ohne Zusatzprogramme wie Plesk oder ähnlichen Müll

Als erstes Installieren wir Mariadb

apt-get -y install mariadb-server mariadb-client
mysql_secure_installation

ab hier wird alles mit Enter und y bestätigt

nun Installieren wir einen Apache web Server

apt-get -y install apache2

nun können wir bereits die IP unseres Servers eingeben und erhalten die Startseite vom Apache.

Nun binden wir PHP 7.0 ein

apt-get -y install php7.0 libapache2-mod-php7.0

jetzte starten wir den apache einmal neu

service apache2 restart

Wenn Ihr wollt könnt Ihr nun auch die PHP Datei anzeigen lassen. Dafür erstellt Ihr einfach eine info.php

nano /var/www/html/info.php

und fügt ein

<?php

phpinfo();

wenn Ihr nun eure IP/info.php im Brwoser eingebt habt Ihr die Seite von PHP

Nun verbinden wir Mysql und PHP

apt-cache search php7.0

apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl

und starten den apache wieder neu

service apache2 restart

nun können wir die Geschwindigkeit ein wenig erhöhen

apt-get -y install php7.0-opcache

apt-get -y install php-apcu

und starten den Apache neu

service apache2 restart

wenn wir nun die info php neu laden sehen wir mysqli funktionen

Wenn jemand unbedingt will kann man nun auch noch phpMyAdmin installieren um eine bessere kontrolle über die Datenbank zu haben.

apt-get -y install phpmyadmin

wir wählen hier apache aus, klicken auf yes und vergeben ein password

nun können wir mit unserer IP adresse/phpmyadmin/ auf das gewünschte Produkt zugreifen. Ich bin kein Freund von Oberflächen deswegen empfehle ich dies nicht.

natürlich können wir nun auch noch den root login für phpmyadmin aktiveren

echo "UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';FLUSH PRIVILEGES;" | mysql -u root -p

Alternativ können wir nun auch noch unser eigenes Openssl zertifikat erstellen um den Usern ein gefühl der Sicherheit zu geben

dafür erstellen wir einen ordner und wechseln hinein

mkdir /etc/apache2/ssl
cd /etc/apache2/ssl

erstellen uns einen Privat Key

openssl genrsa -out sslcert.key 2048

aus dem Key erstellen wir nun unsere CSR

openssl req -new -key sslcert.key -out sslcert.csr

jetzt könnt Ihr eure Daten entsprechend anpassen oder leer lassen.

jetzte erstellen wir aus der csr unser Zertifikat

openssl x509 -req -days 365 -in sslcert.csr -signkey sslcert.key -out sslcert.crt

aktiveren im apache unser SSL Modul

a2enmod ssl

und weisen den apache an den richtigen Port zu finden

nano /etc/apache2/ports.conf

das sollte dann ungefähr so aussehen

Listen 80
Listen 443 Listen 443

jetzt nurnoch eine Vhost Config für den SSL Port

nano /etc/apache2/sites-available/application-ssl.conf

hier hauen wir nun den Inhalt rein

<virtualhost>
DocumentRoot /var/www/application/public

ErrorLog /var/www/application/log/error.log
CustomLog /var/www/application/log/access.log combined

SSLEngine on
SSLCertificateKeyFile /etc/apache2/ssl/sslcert.key
SSLCertificateFile /etc/apache2/ssl/sslcert.crt

<directory application="" public="" var="" www="">

    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted

</directory>

und starten nun den Server neu

service apache2 restart

und schon haben wir einen vernünftig aufgebauten Server, Die Daten hochladne und die Datenbank erstellen sowie Importieren und fertig ist die Zauberei.

1 „Gefällt mir“

Nicht apache sondern nginx nutzen.

2 „Gefällt mir“

Bei nginx funktioniert die .htaccess nicht. Wir nutzen beide Webserver.

wrathofkhan es geht hier um einsteiger Tutorials, und da erwartest du das ich mit einer Nginx Konfiguration anfange?

Eher net oder?

1 „Gefällt mir“

Wieso denn nicht? nginx ist der wesenlich bessere Webserver und auch leicht zu konfigurieren da vieles intuitiv läuft. Meine Meinung.
Außerdem kann ich ja in nginx alles was apache auch kann nachrüsten. Muss man halt mit den dementsprechenden modulen selbst compilen. Geht alles wenn man nur will.

apache2 finde ich intuitiver, da nur die index.html im root-Verzeichnis ausgetauscht werden muss.
Dann müssen die Dateien noch den Besitzer www-data haben und der Server läuft.

Seit dem 6. Dezember '18 ist PHP 7.3 draußen. Da in einem Tutorial, das einem Monat später erschien die Installation des veralteten PHP 7.0 zu empfehlen ist riesengroßer Bullshit. Old stable sind 7.1 und 7.2, 7.0 wird seitens PHP nichtmal mehr unterstützt …

Desweiteren:

<directory application="" public="" var="" www="">

Was ist das bitte für Müll? https://httpd.apache.org/docs/2.4/de/mod/core.html#directory verstehend lesen. Danke

@LizardSquad stimmt das?

wenn sich deine frage auf php bezog, kann ich das nur so bestätigen, was von bernd gesagt wurde!
hab vor ca. 3 wo. selber noch nen root bei voxility mit nem webserver beimpfen dürfen…da ich jmd. von früher dort beim support noch kenne, hat der mir gottseidank ein cooles auto-script gegeben, dass wie die bekannte faust aufs auge passte (fast tagesaktuell) :ok_hand:

  • 7.0 ist nicht nur outdatet, sondern auch so voll bugs und lücken, da kannste erstmal tagelang reparieren ( 7.0 EOL 10. Jan 2019 1 month ago [ 7.0.33] last branch release) :wink:
  • 7.1 active support until 01.12.2018 security support until 01.12.2019
  • 7.2 active support until 30.11.2019 security support until 30.11.2020
  • 7.3 active support until 06.12.2020 security support until 06.12.2021

°°