So erstellen Sie eine LNMP-Umgebung unter Ubuntu 20.04

So erstellen Sie eine LNMP-Umgebung unter Ubuntu 20.04

Einfache Beschreibung

Da es zuvor mit Centos7 erstellt wurde und ich später Ubuntu 20.04 als meine persönliche Entwicklungsumgebung verwendete, wollte ich auch eine Umgebung auf Ubuntu erstellen. Es gibt einige kleine Unterschiede zu Centos, daher zeichne ich es nur zum Lernen auf.

Vorbereitung vor der Installation

Software herunterladen:
php:7.3.18
nginx: 1.18.0
mariadb:10.5.4

Entpacken Sie die Dateien:

tar zxf php-7.3.18.tar.gz
tar zxf mariadb-10.5.4.tar.gz
tar zxf nginx-1.18.0.tar.gz 

Installieren Sie Nginx

sudo groupadd -r nginx und sudo useradd -r -g nginx -s /sbin/nologin -d /usr/local/nginx nginx
sudo apt install -y libpcre3-dev zlib1g-dev
cd /home/allen/Downloads/nginx-1.18.0
./configure --user=nginx --group=nginx
make -j 4 und sudo make install
sudo /usr/local/nginx/sbin/nginx -t
#nginx: die Syntax der Konfigurationsdatei /usr/local/nginx/conf/nginx.conf ist in Ordnung
#nginx: Test der Konfigurationsdatei /usr/local/nginx/conf/nginx.conf ist erfolgreich
sudo mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.back
sudo vim /usr/local/nginx/conf/nginx.conf

Benutzer nginx;
Arbeitsprozesse 4;
Ereignisse {
  Arbeiterverbindungen 1024;
}
http {
  mime.types einschließen;
  Standardtyp Anwendung/Oktett-Stream;
  sendfile an;
  KeepAlive-Timeout 65;
  log_format main '$remote_addr || $remote_user || $time_local || $request || $status || $body_bytes_sent || $http_referer || $http_user_agent || $http_x_forwarded_for';
  einschließen /data/www/*/*.conf;
} 

sudo chown -R nginx:nginx /usr/local/nginx

sudo vim /lib/systemd/system/nginx.service

[Einheit]
Beschreibung=nginx
Nach=Netzwerk.Ziel

[Service]
Typ=Forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s neu laden
ExecStop=/usr/local/nginx/sbin/nginx -s beenden
PrivateTmp=true

[Installieren]
WantedBy=Mehrbenutzer.Ziel


sudo systemctl aktiviere nginx

#Symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /lib/systemd/system/nginx.service erstellt.

Neustart

Überprüfen Sie nach dem Neustart, ob der Start erfolgreich war.

Installieren Sie Mariadb

sudo rm -rf /etc/mysql
sudo apt remove -y mysql-common
sudo apt autoremove -y
sudo apt install -y cmake libncurses5-dev libgnutls28-dev
sudo groupadd -r mysql und sudo useradd -r -g mysql -s /sbin/nologin -d /usr/local/mariadb mysql
sudo mkdir -p /data/db /var/log/mariadb
cd /home/allen/Downloads/mariadb-10.5.4/
cmake. -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DMYSQL_DATADIR=/data/db -DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci
make -j 4 und sudo make install
sudo /usr/local/mariadb/scripts/mysql_install_db --user=mysql --datadir=/data/db
sudo vim /etc/my.cnf

[mysqld]
Datenverzeichnis = /Daten/DB
Socket = /tmp/mysql.sock
# Es wird empfohlen, symbolische Links zu deaktivieren, um verschiedene Sicherheitsrisiken zu vermeiden symbolic-links = 0
Sortierserver = utf8mb4_general_ci
init-connect = "Namen festlegen utf8mb4"
Zeichensatzserver = utf8mb4

[mysql]
Standardzeichensatz = utf8mb4

[Kunde]
Port = 3306
Socket = /tmp/mysql.sock
Standardzeichensatz = utf8mb4

[mysqld_safe]
Log-Fehler = /var/log/mariadb/mariadb.log
pid-Datei = /var/run/mariadb/mariadb.pid

sudo cp /usr/local/mariadb/support-files/mysql.server /etc/init.d/mariadb

sudo vim /etc/profile.d/mariadb.sh
export PATH=$PATH:/usr/local/mariadb/bin/

sudo chmod 0777 /etc/profile.d/mariadb.sh
Quelle /etc/profile.d/mariadb.sh

sudo /etc/init.d/mariadb starten
#MariaDB starten (über systemctl): mariadb.service.

sudo /usr/local/mariadb/bin/mysql_secure_installation 	 

#HINWEIS: DIE AUSFÜHRUNG ALLER TEILE DIESES SCRIPTS WIRD FÜR ALLE MariaDB EMPFOHLEN
# SERVER IM PRODUKTIONSEINSATZ! BITTE JEDEN SCHRITT SORGFÄLTIG DURCHLESEN!

#Um uns bei MariaDB anzumelden und es zu sichern, benötigen wir die aktuelle
#Passwort für den Root-Benutzer. Wenn Sie MariaDB gerade installiert haben und
#das Root-Passwort noch nicht festgelegt haben, drücken Sie hier einfach die Eingabetaste.

#Geben Sie das aktuelle Passwort für root ein (geben Sie es für keins ein): 
#OK, Passwort erfolgreich verwendet, weiter geht‘s …

#Das Setzen des Root-Passworts oder die Verwendung des Unix_Sockets stellt sicher, dass niemand
#kann sich ohne entsprechende Autorisierung beim MariaDB-Root-Benutzer anmelden.

#Ihr Root-Konto ist bereits geschützt, Sie können also bedenkenlos mit „n“ antworten.

#Wechseln zur Unix_Socket-Authentifizierung [J/n] y
#Erfolgreich aktiviert!
#Berechtigungstabellen neu laden..
# ... Erfolg!


#Ihr Root-Konto ist bereits geschützt, Sie können also bedenkenlos mit „n“ antworten.

#Das Root-Passwort ändern? [J/n] y
#Neues Passwort: 
#Neues Passwort erneut eingeben: 
#Passwort erfolgreich aktualisiert!
#Berechtigungstabellen neu laden..
# ... Erfolg!


#Standardmäßig hat eine MariaDB-Installation einen anonymen Benutzer, der es jedem ermöglicht,
#um sich bei MariaDB anzumelden, ohne ein Benutzerkonto erstellen zu müssen
#sie. Dies ist nur zum Testen gedacht und um die Installation
#geh etwas sanfter vor. Du solltest sie entfernen, bevor du in eine
#Produktionsumgebung.

#Anonyme Benutzer entfernen? [J/n] j
# ... Erfolg!

#Normalerweise sollte root nur von 'localhost' aus eine Verbindung herstellen dürfen.
#stellt sicher, dass niemand das Root-Passwort vom Netzwerk aus erraten kann.

#Root-Login aus der Ferne verbieten? [J/n] n
# ... überspringen.

#Standardmäßig wird MariaDB mit einer Datenbank namens „test“ ausgeliefert, die jeder
#access. Dies ist auch nur für Tests gedacht und sollte entfernt werden
#bevor Sie in eine Produktionsumgebung wechseln.

#Testdatenbank und Zugriff darauf entfernen? [J/n] j
# - Testdatenbank wird gelöscht …
# ... Erfolg!
# - Berechtigungen für die Testdatenbank werden entfernt …
# ... Erfolg!

#Durch das Neuladen der Berechtigungstabellen wird sichergestellt, dass alle bisher vorgenommenen Änderungen
#wird sofort wirksam.

#Berechtigungstabellen jetzt neu laden? [J/n] j
# ... Erfolg!

#Aufräumen...

#Fertig! Wenn Sie alle oben genannten Schritte abgeschlossen haben, wird Ihr MariaDB
#Installation sollte jetzt sicher sein.

#Danke, dass Sie MariaDB verwenden!

sudo systemctl aktiviere MariaDB 

sudo chown mysql:mysql -R /usr/local/mariadb /data/db /var/log/mariadb

Neustart

Überprüfen Sie nach dem Neustart, ob der Start erfolgreich war.

Installieren Sie PHP

sudo apt install -y libxml2-dev libssl-dev libbz2-dev libcurl4-gnutls-dev libjpeg-dev libpng-dev pkg-config libxslt1-dev libzip-dev libfreetype6-dev libfontconfig1-dev autoconf
sudo groupadd -r php und sudo useradd -r -g php -s /sbin/nologin -d /usr/local/php php
sudo vim /etc/sudoers
php ALLE = (ALLE:ALLE) ALLE
cd /home/allen/Downloads/php-7.3.18/


. -With-pdo-mysql-mit-Pdo-sqlite-mit Pear-mit Xmlrpc-mit XSL-mit Zlib-mit BZ2-mit Mhash-enable-bcmath--Enable-Inline-optimization--Enable-sable-mbable-opcmable-Opcache---Enable-Opdel-Opcning-Optima-Opdel-Opcning--Enable-Optima enable-sysvSem-enable-sysvshm-enable-xml-enable-fpm--with-Freetyp-dir-mit-with-with-libxml-dir--with-pcre-regex-enable-libxml-enable-zip--with-png-dir--with-jpeg-dire

Es liegt ein Fehler vor:

Konfigurieren: Fehler: Freetype-Konfiguration nicht gefunden.

Lösung:
Dort heißt es: https://www.doopsky.com/ops/981.html

Dies liegt daran, dass die von apt-get in Ubuntu 19.04 installierte libfreetype6-dev-Version 2.9.1-3 ist
http://changelogs.ubuntu.com/changelogs/pool/main/f/freetype/freetype_2.9.1-3/changelog
Im Changelog heißt es:

Das Skript „freetype-config“ wird nicht mehr standardmäßig installiert
(Schließt: #871470, #886461). Alle Pakete, die von libfreetype6-dev abhängen
sollten pkg-config verwenden, um die relevanten CFLAGS und Bibliotheken zu finden.
freetype-config wurde durch pkg-config ersetzt und die neue Version verwendet pkg-config zur Verwaltung von CFLAGS und Bibliotheken.

Die Lösung lautet also wie folgt:
Die Hauptidee besteht darin, pkg-config anstelle von freetype-config zu verwenden. Installieren Sie pkg-config, das ich oben bereits installiert habe

cat ./konfigurieren | grep "freetype-config" -n
34847: wenn test -f "$i/bin/freetype-config"; dann
34849: FREETYPE2_CONFIG="$i/bin/freetype-config"
34855: as_fn_error $? "Freetype-Konfiguration nicht gefunden." "$LINENO" 5
36568: wenn test -f "$i/bin/freetype-config"; dann
36570: FREETYPE2_CONFIG="$i/bin/freetype-config"
36576: as_fn_error $? "Freetype-Konfiguration nicht gefunden." "$LINENO" 5

sed -i "s/freetype-config/pkg-config/g" ./konfigurieren
cat ./konfigurieren | grep "FREETYPE2_CONFIG --cflags" -n
34858: FREETYPE2_CFLAGS=`$FREETYPE2_CONFIG --cflags`
36579: FREETYPE2_CFLAGS=`$FREETYPE2_CONFIG --cflags`

sed -i "s/FREETYPE2_CONFIG --cflags/FREETYPE2_CONFIG freetype2 --cflags/g" ./konfigurieren
cat ./konfigurieren | grep "FREETYPE2_CONFIG --libs" -n 
34859: FREETYPE2_LIBS=`$FREETYPE2_CONFIG --libs`
36580: FREETYPE2_LIBS=`$FREETYPE2_CONFIG --libs`

sed -i "s/FREETYPE2_CONFIG --libs/FREETYPE2_CONFIG freetype2 --libs/g" ./konfigurieren
grep "freetype-config" -n
188: wenn test -f "$i/bin/freetype-config"; dann
190: FREETYPE2_CONFIG="$i/bin/freetype-config"
196: AC_MSG_ERROR([Freetype-Konfiguration nicht gefunden.])

sed -i "s/freetype-config/pkg-config/g" ./ext/gd/config.m4

Neu kompilieren und installieren OK

Vielen Dank für die Verwendung von PHP.

make -j 4 und sudo make install

sudo cp php.ini-Produktion /usr/local/php/lib/php.ini

sudo cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

sudo cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

vim /usr/local/php/etc/php-fpm.d/www.conf
Listenmodus = 0666
pm.max_kinder = 128
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 10000
langsamlog = log/$pool.log.slow
rlimit_files = 1024

sudo vim /etc/profile.d/php.sh
export PATH=$PATH:/usr/local/php/bin/

sudo chmod 0777 /etc/profile.d/php.sh && Quelle /etc/profile.d/php.sh

sudo cp sapi/fpm/php-fpm.service /etc/systemd/system/php.service

Installieren Sie xdebug

Laden Sie xdebug herunter: http://pecl.php.net/get/xdebug-2.9.6.tgz

cd /home/allen/download tar zxf xdebug-2.9.6.tgz
cd xdebug-2.9.6
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make -j 4 und sudo make install

Apcu installieren

Laden Sie Apcu herunter: http://pecl.php.net/get/apcu-5.1.18.tgz

cd /home/allen/Downloads tar zxf apcu-5.1.18.tgz
CD apcu-5.1.18
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make -j 4 und sudo make install

PHP.INI bearbeiten

sudo 
vim /usr/local/php/lib/php.ini

Datum.Zeitzone = Asien/Shanghai
exhibit_php = aus
max_Ausführungszeit = 0
Speicherlimit = 4096 M
display_errors = Ein
cgi.fix_pathinfo=0
Erweiterungsverzeichnis = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/"
Erweiterung=pgsql
Erweiterung=apcu

zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so
[xdebug]
xdebug.var_display_max_children=10240
xdebug.var_display_max_data=20480
xdebug.var_display_max_depth=50

Start-up

sudo systemctl aktiviere php-fpm

sudo chown -R mysql:mysql /usr/local/mariadb
sudo chown -R nginx:nginx /usr/local/nginx
sudo chown -R php:php /usr/local/php
Neustart 

Dies ist das Ende dieses Artikels über die Schritte zum Erstellen der LNMP-Umgebung unter Ubuntu 20.04. Weitere Informationen zum Erstellen von LNMP unter Ubuntu 20.04 finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Ubuntu erstellt eine auf Docker basierende LNMP + Redis-Entwicklungsumgebung (Bild und Text)

<<:  MySQL-Serververbindung, Trennung und cmd-Bedienung

>>:  Verwendung und Ausführungsprozess des HTTP-Moduls im Knoten

Artikel empfehlen

So installieren Sie Theano und Keras auf einem Ubuntu-System

Hinweis: Das System ist Ubuntu 14.04LTS, ein 32-B...

Verwenden Sie js, um ein einfaches Schlangenspiel zu schreiben

In diesem Artikel wird der spezifische Code eines...

Detaillierte Erklärung zur Verwendung von Scoped Slots in Vue.js-Slots

Inhaltsverzeichnis Keine Slots Vue2.x-Steckplätze...

js implementiert benutzerdefinierte Dropdown-Box

In diesem Artikelbeispiel wird der spezifische JS...

Detaillierte Erläuterung des Vue-Routing-Routers

Inhaltsverzeichnis Routing-Plugins modular nutzen...

So verwenden Sie den EXPLAIN-Befehl in SQL

Bei unserer täglichen Arbeit führen wir manchmal ...

Einige Hinweise zu MySQL-Routineberechtigungen

1. Wenn der Benutzer über die Berechtigung zum Er...

Tools zur Bildoptimierung für Webseiten und Tipps zur Verwendung

Als grundlegendes Element einer Webseite sind Bil...

Entwicklungsdetails von Vue3-Komponenten

Inhaltsverzeichnis 1. Einleitung 2. Komponentenen...

MySql-Lerntag 03: Verbindungs- und Abfragedetails zwischen Datentabellen

Primärschlüssel: Schlagwort: Primärschlüssel Funk...