GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So konfigurieren Sie NGINX auf einem CentOS 7-Server

NGINX-Auto von Walker Cahall

Einführung

Diese Anleitung hilft Ihnen bei der Installation und Konfiguration von NGINX, damit Sie stark frequentierte Websites ausführen und gleichzeitig das hohe Leistungsniveau beibehalten können, das Ihre Kunden erwarten. Wir werden auch zusätzliche Software installieren, um das Beste aus NGINX herauszuholen, daher wird dieser Leitfaden auch die Installation und Konfiguration von MySQL, PHP-APC und PHP-FPM beinhalten.

Warum NGINX? Es gibt eine lange Diskussion darüber, ob Sie Apache oder NGINX verwenden sollten, und obwohl die Gesamtleistung der beiden Webserver-Plattformen ungefähr gleich ist, glänzt das ereignisbasierte Verarbeitungsmodell von NGINX dadurch, dass es einfach, leichtgewichtig und einfach besser im Umgang mit großen ist Anzahl gleichzeitiger Zugriffe auf statische Inhalte, ohne Ihre Serverhardware übermäßig zu belasten.

Was brauchen Sie?

– Sie benötigen einen CentOS 7-Server, der mit einer statischen IP-Adresse konfiguriert ist. Wenn Sie noch keinen Server haben, können Sie unsere VPS-Hosting-Seite besuchen und in weniger als 30 Sekunden einen neuen Server einrichten.

Servervorbereitung

Melden Sie sich zunächst über SSH bei Ihrem CentOS-Server an. Atlantic.Net Cloud-Server werden als minimale Installationen eingerichtet, um zu vermeiden, dass unnötige Pakete installiert und nie verwendet werden. Aus diesem Grund beginnen wir mit der Installation einiger Pakete, die standardmäßig nicht vorhanden sind.

yum install wget
yum install nano

Stellen Sie nach dem Einloggen sicher, dass Ihr Server auf dem neuesten Stand ist.

yum update

Wenn der Server auf dem neuesten Stand ist, können wir den Prozess fortsetzen und NGINX installieren. Da NGINX nicht in den standardmäßigen CentOS-Repositories enthalten ist, verwenden wir das Repo Extra Packages for Enterprise Linux (EPEL). Wir werden im weiteren Verlauf des Prozesses auch Pakete aus den REMI-Repositories verwenden, also lasst uns auch diese herunterladen und installieren.

Sie können die neueste Version von EPEL mit dem folgenden Befehl installieren:

yum install epel-release -y

Bevor wir fortfahren, werden wir auch einen neuen Benutzer und eine neue Gruppe erstellen, die von NGINX und PHP-FPM verwendet werden. Wenn Sie Benutzer und Gruppen mit den Standardeinstellungen belassen, sollte alles weiterhin für Sie funktionieren, aber um das gewisse Extra an Sicherheit zu bieten, werden wir die Änderung vornehmen.

groupadd www-data
useradd -g www-data www-data

Während wir an der Servervorbereitung arbeiten, lass uns weitermachen und ein neues Verzeichnis für unseren Webserver einrichten. Normalerweise verwenden die Leute /var/www/html für ihre Sites, aber ich habe mich immer wohler gefühlt, Site-Dateien in /home/domainname.tld/html zu haben , also werden wir das verwenden. Für die exemplarische Vorgehensweise verwenden wir example.tld als unsere Domäne — stellen Sie sicher, dass Sie die fettgedruckten Einträge aktualisieren, damit sie mit der Domäne übereinstimmen, die Sie konfigurieren.

mkdir -p /home/example.tld/html
chown -R www-data:www-data /home/example.tld/
chmod -R 0755 /home/example.tld/html

Nachdem wir den Server fertig vorbereitet haben, können wir mit der Installation unserer Softwarepakete fortfahren.

MariaDB unter CentOS 7 installieren und konfigurieren

Installieren Sie zuerst das MariaDB-Serverpaket mit dem folgenden Befehl:

yum install mariadb-server -y

Starten Sie nach der Installation von MariaDB den MariaDB-Dienst und ermöglichen Sie ihm, beim Systemneustart zu starten:

systemctl start mariadb
systemctl enable mariadb

Als nächstes sichern Sie die MariaDB-Installation mit dem folgenden Befehl:

mysql_secure_installation

Der sichere MySQL-Installationsprozess führt Sie durch die ersten Sicherheitsänderungen, die für Ihre neue MySQL-Instanz vorgenommen werden sollten.

Hinweis:Wählen Sie ein sicheres Passwort und beschränken Sie den Root-Zugriff nur auf localhost.

mysql_secure_installation

Bearbeiten Sie die /etc/my.cf Datei so, dass sie mit Folgendem übereinstimmt, wodurch der Server darauf beschränkt wird, nur lokale Verbindungen abzuhören:

[mysqld]
bind-address = 127.0.0.1
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mariadb/mariadb.pid

Am Ende starten wir alle Dienste neu, also machen wir weiter.

Installieren und konfigurieren Sie NGINX unter CentOS 7

yum install nginx

Nach der Installation müssen wir prüfen, wie viele logische CPU-Kerne auf Ihrem Server verfügbar sind. Führen Sie dazu den folgenden Befehl aus:

grep -c 'model name' /proc/cpuinfo

Notieren Sie sich das Ergebnis, da Sie auch die Einstellung worker_processes sehen werden. Öffnen Sie /etc/nginx/nginx.conf und ersetzen Sie den aktuellen Inhalt durch Folgendes:

user    www-data;
worker_processes  2;

pid        /var/run/nginx.pid;

events {
        worker_connections  1024;
}

http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;

        server_names_hash_bucket_size 64;

        error_log  /var/log/nginx/error_log;

        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" "$http_x_forwarded_for"';

        sendfile        on;

        keepalive_timeout  30;
        server_tokens off;

        gzip on;
        gzip_disable "MSIE [1-6]\.(?!.*SV1)";
        gzip_http_version 1.1;
        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_buffers 16 8k;
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;

        # enabled sites
        include /etc/nginx/conf.d/*.conf;
}

Als nächstes müssen wir unsere Domänenkonfigurationsdatei einrichten. Dazu erstellen Sie eine neue Datei mit dem Namen /etc/nginx/conf.d/example.conf . Achten Sie auch hier darauf, die fettgedruckten Einträge so zu aktualisieren, dass sie mit der Domain übereinstimmen, die Sie hinzufügen.

server {
        listen  80;

        server_name     example.tld;

        client_max_body_size 5m;
        client_body_timeout 60;

        access_log /var/log/nginx/example.tld_access;
        error_log  /var/log/nginx/example.tld_error error;

        root /home/example.tld/html/;
        index  index.html index.php;

        ### SEO sitemaps ###
        rewrite ^/sitemap_index\.xml$ /index.php?sitemap=1 last;
        rewrite ^/([^/]+?)-sitemap([0-9]+)?\.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;

        ### www directory ###
        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        ### security ###
        error_page 403 =404;
        location ~ /\. { access_log off; log_not_found off; deny all; }
        location ~ ~$ { access_log off; log_not_found off; deny all; }
        location ~* wp-admin/includes { deny all; }
        location ~* wp-includes/theme-compat/ { deny all; }
        location ~* wp-includes/js/tinymce/langs/.*\.php { deny all; }
        location /wp-content/ { internal; }
        location /wp-includes/ { internal; }
        location ~* wp-config.php { deny all; }

        ### disable logging ###
        location = /robots.txt { access_log off; log_not_found off; }
        location = /favicon.ico { access_log off; log_not_found off; }

        ### caches ###
        location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; }
        location ~* \.(woff|svg)$ { access_log off; log_not_found off; expires 30d; }

        ### php block ###
        location ~ \.php?$ {
                try_files $uri =404;
                include fastcgi_params;
                fastcgi_pass unix:/var/run/php-www.socket;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_intercept_errors on;
                fastcgi_split_path_info ^(.+\.php)(.*)$;
                fastcgi_hide_header X-Powered-By;
        }
}

Da wir den Benutzer geändert haben, unter dem NGINX ausgeführt wird, müssen wir die Eigentümerberechtigungen für die temporären NGINX-Dateien ändern.

chown -R www-data:www-data /var/lib/nginx/
chmod 700 /var/lib/nginx/

Auch hier werden wir am Ende alle Dienste neu starten. Anstatt eine Vollversion von PHP auf dem Server zu installieren, gehen wir weiter zu PHP-FPM – einer alternativen PHP FastCGI-Implementierung.

Installieren und konfigurieren Sie PHP-FPM unter CentOS 7

Hinweis:Nach der Installation müssen wir die Einstellung „cgi.fix_pathinfo“ aktualisieren, um eine potenzielle Schwachstelle zu deaktivieren, die es einem Drittanbieter ermöglichen könnte, ihren eigenen PHP-Code auf Ihrem neuen Server auszuführen.

Installieren Sie zuerst das Remi-Repository mit dem folgenden Befehl:

yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Als nächstes installieren Sie PHP-FPM mit anderen erforderlichen Erweiterungen mit dem folgenden Befehl:

yum --enablerepo=remi-php74 install php-fpm php-mysql
nano /etc/php.ini

Ändern

;cgi.fix_pathinfo=1

zu

cgi.fix_pathinfo=0

Öffnen Sie /etc/php-fpm.d/www.conf und ändern Sie die Konfiguration wie folgt:

[www]
listen = /var/run/php-www.socket

user = www-data
group = www-data

listen.owner = www-data
listen.group = www-data
listen.mode = 0660
listen = /var/run/php-www.socket
request_slowlog_timeout = 5s
slowlog = /var/log/php-fpm/blogcms_log
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 400
listen.backlog = -1
pm.status_path = /status

request_terminate_timeout = 120s
rlimit_files = 131072
rlimit_core = unlimited

catch_workers_output = yes

php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
php_admin_value[error_log] = /var/log/php-fpm/www-error_log
php_admin_flag[log_errors] = on

Speichern Sie Ihre Änderungen.

Installieren und konfigurieren Sie PHP-APC unter CentOS 7

Das letzte Teil des Puzzles wird die Installation eines PHP-Beschleunigers sein, um die Ladezeiten statischer Dateien weiter zu verbessern.

yum --enablerepo=remi-php74 install php-pecl-apc

Sobald die Installation abgeschlossen ist, öffnen Sie /etc/php.d/50-apc.ini und ersetzen Sie den Inhalt durch Folgendes:

extension = apc.so
apc.enabled=1
apc.shm_segments=1
apc.shm_size=128M
apc.num_files_hint=1024
apc.user_entries_hint=4096
apc.ttl=7200
apc.use_request_time=1
apc.user_ttl=7200
apc.gc_ttl=3600
apc.cache_by_default=1
apc.filters
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.file_update_protection=2
apc.enable_cli=0
apc.max_file_size=1M
apc.stat=1
apc.stat_ctime=0
apc.canonicalize=0
apc.write_lock=1
apc.report_autofilter=0
apc.rfc1867=0
apc.rfc1867_prefix =upload_
apc.rfc1867_name=APC_UPLOAD_PROGRESS
apc.rfc1867_freq=0
apc.rfc1867_ttl=3600
apc.include_once_override=0
apc.lazy_classes=0
apc.lazy_functions=0
apc.coredump_unmap=0
apc.file_md5=0
apc.preload_path

Letzter Schliff

Nachdem alles erledigt ist, können wir unsere NGINX-Konfiguration überprüfen, indem wir Folgendes ausführen:

nginx -t

Wenn die Konfiguration mit „nginx:configuration file /etc/nginx/nginx.conf test is successfully“ zurückkommt, können wir alle Dienste starten (oder neu starten) und sicherstellen, dass alle Dienste so eingestellt sind, dass sie beim Systemstart gestartet werden.

systemctl start mariadb ; systemctl enable mariadb
systemctl start nginx ; systemctl enable mariadb
systemctl start php-fpm ; systemctl enable php-fpm

Als letzten Schritt werden wir überprüfen, ob die Konfiguration funktioniert, indem wir eine info.php-Testseite erstellen und eine Kopie der standardmäßigen index.html in das Home-Verzeichnis unserer Website verschieben. Achten Sie wie zuvor darauf, die fettgedruckten Einträge mit der Domain zu aktualisieren, die Sie einrichten.

cp -R /usr/share/nginx/html/* /home/example.tld/html/
nano /home/example.tld/html/info.php
<?php

// Show all information, defaults to INFO_ALL
phpinfo();

?>

Alles testen

Besuchen Sie http://example.tld sollte die Standarddatei index.html anzeigen. Besuchen Sie http://example.tld /info.php sollte Informationen über PHP anzeigen.

Damit haben Sie jetzt einen Server, auf dem alle notwendigen Komponenten laufen, um Ihre Website zu betreiben!

Bitte schauen Sie hier wieder vorbei, um weitere Updates zu erhalten und einen marktführenden virtuellen privaten Server von Atlantic.Net in Betracht zu ziehen.


Linux
  1. So installieren und konfigurieren Sie Nginx unter CentOS 8

  2. Konfigurieren Sie den MariaDB-Server auf CentOS

  3. CentOS / RHEL :So konfigurieren Sie einen DHCP-Server

  4. CentOS / RHEL 5 :So installieren und konfigurieren Sie den vsftpd-Server

  5. Centos 7:Konfigurieren Sie den DNS-Server

So installieren und konfigurieren Sie Subversion (SVN) unter CentOS 7

So installieren und konfigurieren Sie Sandstorm Server unter CentOS 8

So installieren und konfigurieren Sie Privoxy Server auf CentOS 8

Wie installiere ich Nginx unter CentOS 7?

So konfigurieren Sie VNC Server unter CentOS/RHEL 6

Centos 7:NTP-Server konfigurieren