Es gibt viele Bedienfelder, die einen generischen LAMP-Server mit jeder Linux- oder fast Linux-Distribution konfigurieren können. Andere kostenpflichtige sind auch mit anderen Plattformen wie Fenstern kompatibel.
Viele Befehle in diesem Handbuch können in einem zusammengefasst werden, aber ich ziehe es vor, sie zu teilen, um Ihnen zu helfen, Fehler zu identifizieren. Dieses Handbuch wurde Schritt für Schritt getestet und geht davon aus, dass Sie ein sauberes Centos 7-System installiert haben, auf dem das Netzwerk konfiguriert ist.
Wenn Sie den Befehl sudo installiert haben und als normaler Benutzer angemeldet sind, können Sie einfach das Wort „sudo“ vor den Befehlen eingeben. Aber jetzt beginnen wir mit der Einrichtung unseres „Testservers“.
Konfigurieren der Firewall
Zuerst müssen Sie sicherstellen, dass Ihr Server bestimmte Anforderungen an bestimmten Ports akzeptiert. Wenn die Firewall nicht installiert ist, installieren Sie sie nicht, es sei denn, Sie wissen, was Sie tun, oder wenn Sie den physischen Computer vor sich haben. Wenn Sie über einen komplexeren Router oder ein komplexeres Netzwerk verfügen, empfehle ich Ihnen, einen Artikel über die Netzwerktheorie oder einen Artikel darüber zu lesen, wie Sie virtuelle Server auf einem Router konfigurieren, um Datenverkehr an bestimmte Ports weiterzuleiten. Hier gehe ich davon aus, dass Sie eine öffentliche Adresse auf einem Server im Internet zur Verfügung haben. Also, Sie sollten diese Befehle auf Ihre Eingabeaufforderung (Shell) schreiben.
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --runtime-to-permanent
firewall-cmd --reload
Installieren von Apache2
Wir haben Ports geöffnet, um tcp-Verbindungen in den Standardports http (80) und httpd (443) von apache zu akzeptieren. Jetzt müssen wir apache2 als einfachen Webserver installieren, indem wir diesen Befehl schreiben:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch-rpm
yum -y install epel-release
yum -y install httpd
Inbetriebnahme und Aktivieren von Apache2
Nach der Installation von apache müssen Sie den Dienst (Dämon) mit diesem Befehl verwenden und aktivieren.
systemctl start httpd
systemctl enable httpd
Wenn Sie die IP-Adresse des Servers in einem Browser angeben, sollten Sie die Willkommensseite von Apache und Centos sehen.
Konfigurieren virtueller Hosts
Um virtuelle Hosts auf CentOS zu konfigurieren, sollten Sie die selinux deaktivieren, oder Sie erhalten eine Fehlermeldung. Um es vorübergehend zu deaktivieren und so zu vermeiden, dass das System neu gestartet werden muss, können Sie
setenforce 0
echo 0 > /sys/fs/selinux/enforce
Um sicherzustellen, dass diese Änderung auch nach dem Neustart beibehalten wird, sollten Sie die Datei /etc/sysconfig/selinux bearbeiten und sicherstellen, dass die Zeile in Bezug auf selinux deaktiviert ist, wie in diesem Beispiel gezeigt:
SELINUX=disabled
Jetzt müssen wir nur noch die Konfigurationsdatei für den virtuellen Host erstellen, die wir in den Ordner legen.
/etc/httpd/conf.d/
In diesem Artikel verwenden wir die example.com Domäne als Beispiel. Sie müssen den example.com Domänennamen durch Ihren Domänennamen ersetzen.
Erstellen Sie dann die Konfigurationsdatei und geben Sie die folgenden Zeilen ein:
ServerName www.example.com
DocumentRoot /var/www/example.com
ServerAlias example.com
ErrorLog /var/log/httpd/www.example.com.error.log
CustomLog /var/log/httpd/www.example.com.requests.log combined
Options FollowSymLinks MultiViews
AllowOvverride All
Order allow,deny
allow from all
Natürlich müssen Sie auch den Standort- und Protokollzielordner erstellen, wenn er nicht vorhanden ist:
mkdir -p /var/www/example.com
mkdir -p /var/log/httpd
An diesem Punkt müssen Sie apache neu starten
apachectl restart
Wenn Ihre Domäne korrekt auf den Server verweist, sollte die Willkommensseite angezeigt werden.
Überlegungen: Ich habe in vielen Artikeln über das Konfigurieren virtueller Hosts mit CentOS gelesen, in denen empfohlen wird, einen bestimmten Ordner zu erstellen, der die verfügbaren Websites und einen anderen enthält, der die aktivierten Websites enthält. Diese Methode wird in debian-basierten Bereitstellungen verwendet und ermöglicht es Ihnen, eine Website einfach zu deaktivieren und zu aktivieren, indem Sie auf symbolische Links reagieren. Aber in diesem Artikel geht es um CentOS und so werden wir dem Weg der RedHat-basierten Distributionen folgen.
Installieren und Konfigurieren von Certbot (letsencrypt) für https-Unterstützung (optional, aber empfohlen)
Wenn die Website dynamisch ist, könnte sie normalerweise vertrauliche Informationen enthalten und daher ist es eine gute Idee, sie zu verschlüsseln. Der Kauf eines gültigen Zertifikats war einst eine teure Operation, aber jetzt gibt es ein System, um eins vollständig kostenlos zu erwerben.
Stellen Sie sicher, dass Ihr DNS auf Ihren Server verweist.
Das erste, was Sie tun müssen, ist Apache-Module für ssl-Unterstützung installieren
yum -y install mod_ssl
yum -y install openssl
Und installieren Sie das certbot-Programm
yum -y install python-certbot-apache
Um zu arbeiten, muss das https-Protokoll beim Start über ein gültiges Zertifikat verfügen. Wir können dieses Zertifikat wie folgt erstellen:
mkdir -p /etc/ssl/private
chmod 700 /etc/ssl/private
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out
/etc/ssl/certs/apache-selfsigned.crt
Für diese Zeit können Sie alle Antworten leer lassen und müssen bis zum Ende der Zertifikatsgenerierung warten. Da certbot überprüft, ob die Apache-Konfiguration konsistent ist, müssen wir Anweisungen für den virtuellen Host auch für das https-Protokoll am Ende der Datei hinzufügen.
/etc/httpd/conf.d/example.com.conf
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
ServerName www.example.com
DocumentRoot /var/www/example.com
ServerAlias example.com
ErrorLog /var/log/httpd/www.example.com.error.ssl.log
CustomLog /var/log/httpd/www.example.com.requests.ssl.log combined
Optionen FolgenSymLinks MultiViews
AllowOverride Alle
Bestellen erlauben,verweigern
von allen zulassen
Jetzt können wir das Zertifikat mit certbot erstellen. Halten Sie sich in mir, dass Sie einen Dienst wie Cloudflare vorübergehend anhalten müssen, wenn Sie einen Dienst wie Cloudflare verwenden.
apachectl stop
certbot certonly --standalone -d example.com -d
www.example.com
apachectl start
Ihre Domäne http://www.example.com
sollte nun von sichtbar sein. Wenn Benutzer automatisch zu https umgeleitet werden sollen, müssen Sie die Anweisungen Ihres virtuellen Hosts für das http-Protokoll ändern, indem Sie die Zeile hinzufügen.
Redirect "/" "https://www.example.com"
Konfigurationsdatei
/etc/httpd/conf.d/example.com.conf
wie in diesem Beispiel gezeigt
ServerName www.example.com
DocumentRoot /var/www/example.com
ServerAlias example.com
Redirect "/" "https://www.example.com"
ErrorLog /var/log/httpd/www.example.com.error.log
CustomLog /var/log/httpd/www.example.com.requests.log combined
Optionen FolgenSymLinks MultiViews
AllowOvverride Alle
Bestellen erlauben,verweigern
von allen zulassen
Wenn Sie Dienste wie cloudflare oder andere Umleitungsmethoden verwenden, wird diese Zeile nicht eingefügt oder es wird eine Endlosschleife der Adressierung generieren, die schließlich einen Fehler im Browser zurückgibt.
Installation MariaDB (für Mysql)
Um den mysql MariaDB-Server zu installieren, müssen Sie diesen Befehl
yum -y install mariadb-server mariadb
Sie müssen also den Server starten und aktivieren.
systemctl start mariadb
systemctl enable mariadb
Jetzt ist mariadb installiert, aber Sie sollten mit der grundlegenden automatischen Sicherheit fortfahren, da der Dienst so wie möglich mit so wenigen Einschränkungen wie möglich konfiguriert ist, so dass er für Entwickler bequemer ist. Sie können dies mit dem Befehl
mysql_secure_installation
Sie müssen alle empfohlenen Optionen auswählen und ein Kennwort für Ihr mysql root-Konto eingeben.
Überlegungen: CentOS hat sich entschieden, MariaDB als standardmäßigen mysql-Server zu verwenden. Allerdings muss ich Ihnen sagen, dass dies eine Gabel ungegart vom klassischen mysql-Server ist und es beim Importieren von Daten möglicherweise Inkompatibilitätsprobleme gibt. Wenn Sie den Unterschied zwischen mariadb und mysql community edition nicht kennen, empfehle ich Ihnen, einen Artikel darüber zu lesen, wie Sie Daten von einem mysql Community-Release-Server auf einen mariadb-Server migrieren oder wie Sie Daten von einem mariadb-Server zu einem mysql-Community-Releaseserver migrieren.
Installieren von PhPs und Modulen, die von gängigen CMS verwendet werden
Um mysql zu verwenden, benötigt apache ein Zwischenprogramm, das in unserem Fall php ist. Um php mit mysql-Unterstützung und den am häufigsten verwendeten Modulen von populärem CMS zu installieren, geben Sie diese Befehle ein.
yum -y install php
yum -y install php-opcache
yum -y install php-common
yum -y install php-fpm
yum -y install php-pear
yum -y install php-mysql
yum -y install php-cli
yum -y install php-gd
yum -y install php-odbc
yum -y install php-xml
yum -y install php-xmlrpc
yum -y install php-mbstring
yum -y install php-snmp
yum -y install php-soap
yum -y install php-mcrypt
Wenn Sie andere Module installieren müssen, können Sie diese mit dem Befehl
yum search php-
Sie können die Ergebnisse auch mit dem Befehl grep filtern. Wenn ich z.B. die Module mit pecl in den Namen schreiben möchte, muss ich nur schreiben
yum search php- | grep pecl
Überlegungen: CenOS ist eine stabile und konservative Linux-Distribution. Pakete, die Sie mit herkömmlichen Repositorys installieren können, werden getestet. Um die neuesten Versionen zu installieren, sollten Sie andere Repositorys importieren. Wenn Sie nicht die neueste Version von php installieren müssen, empfehle ich Ihnen, die Wahl von centOS zu respektieren. Wenn Sie Version 7 von php installieren müssen, empfehle ich Ihnen, einen Artikel über die Installation und Konfiguration eines LAMP (Linux Apache Mysql Php 7) Servers mit mehreren virtuellen Hosts auf CentOS 7 zu lesen.