Beispiel, wie nginx dynamische und statische Trennung implementiert

Beispiel, wie nginx dynamische und statische Trennung implementiert

Dieser Artikel stellt hauptsächlich ein Beispiel vor, wie nginx eine dynamische und statische Trennung erreichen kann, was einen gewissen Lernwert hat. Die Details sind wie folgt

Umfeld:

System/Hostname IP-Adresse Aufschlag
Redhat8: Server1 192.168.244.131 nginx
Redhat8: Server2 192.168.244.133 lnmp
Inhalt7: Knoten3 192.168.244.142 httpd

Deaktivieren Sie die Firewall auf den drei Hosts

[root@server1 ~]# systemctl stoppe Firewall
[root@server1 ~]# systemctl Firewall deaktivieren
[root@server1 ~]# vim /etc/selinux/config 
SELINUX=deaktiviert

Stellen Sie nginx auf Server1 bereit

[root@server1 opt]# cat nginx.sh 
#!/bin/bash

wenn [ $UID -ne 0 ];dann
        echo "Bitte Administratorkonto verwenden"
        Ausfahrt
fi

app_a=nginx-1.20.1.tar.gz

dir_a=/usr/local
dir_b=/var/log
dir_c=nginx-1.20.1

wenn [ ! -d $dir_b/nginx ];dann
        mkdir -p $dir_b/nginx
fi
chown -R nginx.nginx $dir_b/nginx

yum -y installiere pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make
yum -y groups mark install 'Entwicklungstools'

ID nginx &>/dev/null 
wenn [ $? -ne 0 ];dann
        Benutzeradd -r -M -s /sbin/nologin nginx
fi

tar xf bag/$app_a -C $dir_a

cd $dir_a/$dir_c
wenn [ ! -d $dir_a/nginx ];dann
        ./konfigurieren \
                --prefix=$dir_a/nginx \
                --Benutzer=nginx \
                --group=nginx \
                --mit-debug \
                --mit-http_ssl_module \
                --mit-http_realip_module \
                --mit-http_image_filter_module \
                --mit-http_gunzip_module \
                --mit-http_gzip_static_module \
                --mit-http_stub_status_module \
                --http-log-path=$dir_b/nginx/access.log \
                --error-log-path=$dir_b/nginx/error.log && make && make install
fi

CD ..
wenn [ ! -f /etc/profile.d/nginx.sh ];dann
        echo "export PATH=$dir_a/nginx/sbin:\$PATH" > /etc/profile.d/nginx.sh
fi

Katze > /usr/lib/systemd/system/nginx.service << EOF
[Einheit]
Beschreibung=Nginx-Server-Daemon
Will=sshd-keygen.target

[Service]
Typ=Forking
ExecStart=$dir_a/nginx/sbin/nginx
ExecStop=$dir_a/nginx/sbin/nginx -s stoppen
ExecReload=/bin/kill -HUP $MAINPID

[Installieren]
WantedBy=Mehrbenutzer.Ziel
Ende der Laufzeit


systemctl daemon-reload
systemctl aktivieren --now nginx

Anschlüsse anzeigen

[root@server1 ~]# ss -antl
Status Recv-Q Send-Q Lokale Adresse:Port Peer-Adresse:Port                 
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*                    
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*                    
HÖREN 0 128 [::]:22 [::]:*   

Seite besuchen

Bildbeschreibung hier einfügen

Bereitstellen von lnmp auf dem Server

Bereitstellen von nginx

[root@server2 lnmp]# cat install.sh 
#!/bin/bash

wenn [ $UID -ne 0 ];dann
        echo "Bitte Administratorkonto verwenden"
        Ausfahrt
fi

app_a=nginx-1.20.1.tar.gz

dir_a=/usr/local
dir_b=/var/log
dir_c=nginx-1.20.1

wenn [ ! -d $dir_b/nginx ];dann
        mkdir -p $dir_b/nginx
fi
chown -R nginx.nginx $dir_b/nginx

yum -y installiere pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make
yum -y groups mark install 'Entwicklungstools'

ID nginx &>/dev/null 
wenn [ $? -ne 0 ];dann
        Benutzeradd -r -M -s /sbin/nologin nginx
fi

tar xf bag/$app_a -C $dir_a

cd $dir_a/$dir_c
wenn [ ! -d $dir_a/nginx ];dann
        ./konfigurieren \
                --prefix=$dir_a/nginx \
                --Benutzer=nginx \
                --group=nginx \
                --mit-debug \
                --mit-http_ssl_module \
                --mit-http_realip_module \
                --mit-http_image_filter_module \
                --mit-http_gunzip_module \
                --mit-http_gzip_static_module \
                --mit-http_stub_status_module \
                --http-log-path=$dir_b/nginx/access.log \
                --error-log-path=$dir_b/nginx/error.log && make && make install
fi

CD ..
wenn [ ! -f /etc/profile.d/nginx.sh ];dann
        echo "export PATH=$dir_a/nginx/sbin:\$PATH" > /etc/profile.d/nginx.sh
fi

Katze > /usr/lib/systemd/system/nginx.service << EOF
[Einheit]
Beschreibung=Nginx-Server-Daemon
Will=sshd-keygen.target

[Service]
Typ=Forking
ExecStart=$dir_a/nginx/sbin/nginx
ExecStop=$dir_a/nginx/sbin/nginx -s stoppen
ExecReload=/bin/kill -HUP $MAINPID

[Installieren]
WantedBy=Mehrbenutzer.Ziel
Ende der Laufzeit

systemctl daemon-reload
systemctl aktivieren --now nginx

MySQL bereitstellen

[root@server2 lnmp]# cat mysql.sh 
#!/bin/bash

wenn [ $UID -ne 0 ];dann
        echo "Wurzel?"
        Ausfahrt
fi

dir_a=/usr/local
dir_b=/opt/data
app_a=mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
app_b=mysql-5.7.34-linux-glibc2.12-x86_64

id mysql &>/dev/null
wenn [ $? -ne 0 ];dann
        useradd -r -M -s /sbin/nologin mysql
 fi


yum -y installiere ncurses-compat-libs ncurses-devel openssl-devel openssl cmake mariadb-devel 


wenn [ ! -d $dir_a/$app_b ];dann
        tar xf bag/$app_a -C $dir_a
fi

wenn [ ! -d $dir_a/mysql ];dann
        ln -sv $dir_a/$app_b $dir_a/mysql
fi
chown -R mysql:mysql $dir_a/mysql*

echo "export PATH=$dir_a/mysql/bin:\$PATH" > /etc/profile.d/mysql.sh

Quelle /etc/profile.d/mysql.sh

wenn [ ! -d /$dir_b ];dann
        mkdir -p /$dir_b 
        chown -R mysql.mysql /$dir_b
fi


Inhalt=$(ls $dir_b | wc -l)
wenn [ $content -eq 0 ];dann
        mysqld --initialize-insecure --user mysql --datadir $dir_b
fi

Katze > /etc/my.cnf <<EOF
[mysqld]
basedir = $dir_a/mysql    
Datenverzeichnis = $dir_b           
Socket = /tmp/mysql.sock      
Port = 3306                   
pid-Datei = $dir_b/mysql.pid
Benutzer = MySQL                  
Namensauflösung überspringen
Ende der Laufzeit



sed -ri "s#^(basedir=).*#\1$dir_a/mysql#g" $dir_a/mysql/support-files/mysql.server
sed -ri "s#^(datadir=).*#\1$dir_b#g" $dir_a/mysql/support-files/mysql.server


Katze > /usr/lib/systemd/system/mysqld.service <<EOF
[Einheit]
Beschreibung=MySQL-Server-Daemon
Nach=Netzwerk.Ziel 

[Service]
Typ=Forking

ExecStart=$dir_a/mysql/support-files/mysql.server start
ExecStop=$dir_a/mysql/support-files/mysql.server stoppen
ExecReload=/bin/kill -HUP $MAINPID

[Installieren]
WantedBy=Mehrbenutzer.Ziel
Ende der Laufzeit

systemctl daemon-reload
systemctl aktivieren --now mysqld

PHP bereitstellen

 https://www.php.net/distributions/php-8.0.10.tar.xz

Entpacken

[root@server2 ~]# tar -xf php-8.0.10.tar.gz -C /usr/local/

Installieren von Abhängigkeitspaketen

[root@server2 ~]# wget http://mirrors.aliyun.com/repo/epel-7.repo
[root@server1 ~]# yum -y installiere libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel pcre-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel mhash mhash-devel php-mysqlnd libsqlite3x-devel libzip-devel
[root@server2 ~]# yum -y install http://mirror.centos.org/centos/8-stream/PowerTools/x86_64/os/Packages/oniguruma-devel-6.8.2-2.el8.x86_64.rpm

Kompilieren und installieren

[root@server2 ~]# cd /usr/local/php-8.0.10/
[root@server2 php-8.0.10]# ./configure --prefix=/usr/local/php8 --with-config-file-path=/etc --enable-fpm --disable-debug --disable-rpath --enable-shared --enable-soap --with-openssl --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --enable-exif --enable-ftp --enable-gd --with-jpeg --with-zlib-dir --with-freetype --with-gettext --enable-mbstring --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-readline --enable-shmop --enable-simplexml --enable-sockets --with-zip --enable-mysqlnd-compression-support --with-pear --enable-pcntl --enable-posix
......
......
......
config.status: ext/phar/phar.phar.1 wird erstellt
config.status: main/php_config.h erstellen
config.status: Standardbefehle ausführen

+--------------------------------------------------------------------+
| Lizenz: |
| Diese Software unterliegt der PHP-Lizenz, verfügbar hier |
| Verteilung in der Datei LICENSE. Durch die Fortsetzung dieser Installation |
| Durch die Nutzung dieses Prozesses sind Sie an die Bedingungen dieser Lizenzvereinbarung gebunden. |
| Wenn Sie mit den Bedingungen dieser Lizenz nicht einverstanden sind, müssen Sie abbrechen |
| den Installationsvorgang an dieser Stelle. |
+--------------------------------------------------------------------+

Vielen Dank für die Verwendung von PHP.


[root@server2 php-8.0.10]# machen
.......
.......
.......
invertedregexiterator.inc
pharcommand.inc
phar.inc

Bau abgeschlossen.
Vergessen Sie nicht, „make test“ auszuführen.

[root@server2 php-8.0.10]# make install
......
......
/root/php-8.0.10/build/shtool install -c ext/phar/phar.phar /usr/local/php8/bin/phar.phar
ln -s -f phar.phar /usr/local/php8/bin/phar
PDO-Header installieren: /usr/local/php8/include/php/ext/pdo/

Konfigurieren Sie php-fpm

[root@server2 php-8.0.10]# cp /etc/php.ini /opt/
[root@server2 php-8.0.10]# cp php.ini-Produktion /etc/php.ini 
cp: '/etc/php.ini' überschreiben? y
[root@server2 php-8.0.10]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@server2 php-8.0.10]# chmod +x /etc/init.d/php-fpm
[root@server2 php-8.0.10]# cd ..
[root@server2 lokal]# cd php8/
[root@server2 php8]# cd etc/
[root@server2 usw.]# cp php-fpm.conf.default php-fpm.conf
[root@server2 usw.]# cp php-fpm.d/www.conf.default php-fpm.d/www.conf
[root@server2 usw.]# cd php-fpm.d
[root@server2 php-fpm.d]# ls
www.conf www.conf.default

Konfigurieren von Umgebungsvariablen

[root@server2 ~]# echo 'export PATH=/usr/local/php8/bin:$PATH' > /etc/profile.d/php.sh
[root@server2 ~]# cat /etc/profile.d/php.sh
export PATH=/usr/local/php8/bin:$PATH
[root@server2 ~]# Quelle /etc/profile.d/php.sh
[root@server2 ~]# welches php
/usr/local/php8/bin/php

Schreiben von Servicedateien

[root@server2 ~]# cat /usr/lib/systemd/system/php-fpm.service 
[Einheit]
Beschreibung=php-fpm-Server-Daemon
Nach=Netzwerk.Ziel 

[Service]
Typ=Forking

ExecStart=/etc/init.d/php-fpm starten
ExecStop=/etc/init.d/php-fpm stoppen
ExecReload=/bin/kill -HUP $MAINPID

[Installieren]
[root@server2 ]# systemctl daemon-reload

Starten Sie PHP

[root@server2 ~]# systemctl start php-fpm
[root@server2 ~]# ss -antl
Status Recv-Q Send-Q Lokale Adresse:Port Peer-Adresse:Port                 
LISTEN 0 128 127.0.0.1:9000 0.0.0.0:*                    
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*                    
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*                    
HÖREN 0 80 *:3306 *:*                    
HÖREN 0 128 [::]:22 [::]:*

Konfigurieren Sie virtuelle Hosts in nginx.conf

[root@server2 ~]# cd /usr/local/nginx/html/
[root@server2 html]# ls
50x.html index.html
[root@server2 html]# vim index.php
[root@server2 html]# cat index.php 
<?php
    phpinfo();
?>
[root@server2 conf]# pwd
/usr/local/nginx/conf
[root@server2 conf]# vim nginx.conf
........
http {
    mime.types einschließen;
    Standardtyp Anwendung/Oktett-Stream;

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

    access_log Protokolle/access.log Haupt;

    sendfile an;

......
        Standort / {
            Stamm-HTML;
            index.php index.html index.htm;
        }
.....



        Standort ~ \.php$ {
            Stamm-HTML;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $Dokumentstammsatz$fastcgi_script_name;
            fastcgi_params einschließen;
        }
[root@server2 conf]# nginx -s neu laden

Zugang

Bildbeschreibung hier einfügen

Stellen Sie httpd auf Knoten3 bereit

[root@node3 ~]# yum -y installiere httpd

Start-up

[root@node3 ~]# systemctl start httpd
[root@node3 ~]# ss -antl
Status Recv-Q Send-Q Lokale Adresse:Port Peer-Adresse:Port              
HÖREN 0 128 *:22 *:*                  
LISTEN 0 100 127.0.0.1:25 *:*                  
HÖREN 0 128 :::80 :::*                  
HÖREN 0 128 :::22 :::*                  
HÖREN 0 100 ::1:25 :::*

Zugang

Bildbeschreibung hier einfügen

Implementieren einer separaten Bereitstellung

Konfigurieren Sie nginx.conf auf Server1

[root@server1 ~]# cat /usr/local/nginx/conf/nginx.conf

#Benutzer niemand;
Arbeiterprozesse 1;

#error_log Protokolle/Fehler.log;
#error_log Protokolle/error.log Hinweis;
#error_log Protokolle/error.log-Info;

#pid-Protokolle/nginx.pid;


Ereignisse {
    Arbeiterverbindungen 1024;
}


http {
    mime.types einschließen;
    Standardtyp Anwendung/Oktett-Stream;

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

    #access_log Protokolle/access.log Haupt;

    sendfile an;
    #tcp_nopush ein;

    #keepalive_timeout 0;
    KeepAlive-Timeout 65;

    #gzip ein;

    Upstream cm { #statische Ressourcenadresse Server 192.168.244.142;
    }
    
    Upstream nm { #dynamische Ressourcenadresse Server 192.168.244.133;
    }


    Server {
        hören Sie 80;
        Servername localhost;

        #Zeichensatz koi8-r;

        #access_log Protokolle/Host.access.log Haupt;

        Standort / {
            proxy_pass http://cm; #auf statisch zeigen}
        
        #Fehlerseite 404 /404.html;

        # Server-Fehlerseiten auf die statische Seite /50x.html umleiten
        #
        Fehlerseite 500 502 503 504 /50x.html;
        Standort = /50x.html {
            Stamm-HTML;
        }

        # Proxy für die PHP-Skripte an Apache, das auf 127.0.0.1:80 lauscht
        #
        Standort ~ \.php$ { #auf dynamischen Proxy-Pass http://nm zeigen;
        }

[root@server1 ~]# nginx -s neu laden

Besuchen Sie 192.168.244.131

Bildbeschreibung hier einfügen

Beim Zugriff auf 192.168.244.131/index.php

Bildbeschreibung hier einfügen

Dies ist das Ende dieses Artikels über das Beispiel, wie dynamische und statische Trennung in nginx erreicht werden kann. Weitere relevante Inhalte zur dynamischen und statischen Trennung in nginx finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Grundlegendes Konfigurationsbeispiel von Nginx mit Apache oder Tomcat zur dynamischen und statischen Trennung
  • Verwenden von Nginx+uWsgi zum Trennen der dynamischen und statischen Teile der Django-Framework-Site von Python
  • Einfache Implementierung des Nginx+Tomcat-Reverse-Proxys und der dynamischen und statischen Trennung
  • Detaillierte Erklärung von Nginx zum Trennen von statischem und dynamischem Tomcat
  • nginx realisiert Lastausgleich und dynamische und statische Trennung
  • Nginx-Beispielcode zur Implementierung dynamischer und statischer Trennung
  • Detailliertes Beispiel für die Bereitstellung der dynamischen und statischen Trennung von Nginx+Apache
  • Beispielcode für Nginx zur Erreichung dynamischer und statischer Trennung
  • Nginx implementiert dynamische und statische Trennung Beispielerklärung
  • Implementierungsfallcodeanalyse für dynamische und statische Trennung von Nginx
  • Detaillierte Erläuterung des Prozesses zur Realisierung der dynamischen und statischen Trennung in Springmvc nginx
  • Docker Nginx-Container und Tomcat-Container zur Realisierung von Lastausgleich und dynamischen und statischen Trennungsvorgängen
  • Analyse des Prinzips von Nginx + Tomcat zur Erreichung eines Lastausgleichs sowie einer dynamischen und statischen Trennung
  • Das Prinzip und die Konfiguration des Nginx-Lastausgleichs sowie der dynamischen und statischen Trennung
  • Detaillierte Anleitung für nginx von der Installation bis zur Konfiguration (Installation, Sicherheitskonfiguration, Anti-Hotlinking, dynamische und statische Trennung, HTTPS-Konfiguration, Leistungsoptimierung)
  • Implementierung des Nginx+Tomcat-Lastausgleichs und der dynamischen und statischen Clustertrennung
  • Server-Lastausgleich von Nginx + Tomcat zur Erzielung einer dynamischen und statischen Trennung
  • Implementierung und Beschreibung der dynamischen und statischen Trennungskonfiguration von Nginx

<<:  Die endgültige Lösung für Chromes Mindestschriftgrößenbeschränkung von 12px

>>:  js realisiert eine schrittweise zunehmende digitale Animation

Artikel empfehlen

Schaltflächen und Dropdown-Menüs für Studiennotizen in Bootstrap 3.0

Der vorherige Artikel war eine einfache Überprüfu...

Implementierung der MySQL-Datendesensibilisierung (Telefonnummer, ID-Karte)

1. Erklärung zur Datendesensibilisierung Bei den ...

Installations-Tutorial zur neuesten MySQL-Version 8.0.17 mit Dekomprimierung

Ich persönlich denke, dass die dekomprimierte Ver...

Detaillierte Erläuterung des Problemfalls beim Löschen des Vue KeepAlive-Cache

Keepalive wird häufig zum Caching in Vue-Projekte...

Achten Sie bei der Webseitenerstellung auf die Verwendung von HTML-Tags

HTML hat versucht, sich von der Präsentation weg ...

So verwenden Sie async await elegant in JS

Inhaltsverzeichnis $.ajax von jQuery Der Beginn d...

Analyse und Beschreibung von Netzwerkkonfigurationsdateien unter Ubuntu-System

Ich bin heute auf ein seltsames Netzwerkproblem g...