Nginx ist ein kostenloser, quelloffener, hochleistungsfähiger HTTP-Webserver die im Gegensatz zu einigen anderen Webservern nicht auf eine Thread-Verarbeitung der Anfragen angewiesen ist, sondern stattdessen eine viel besser skalierbare, ereignisgesteuerte (asynchrone ) Architektur.
Dies verwendet eine sehr kleine und vorhersagbare Menge an Speicher unter hoher Last. Nginx in Kombination mit dem einfachen und sehr robusten FastCGI Process Manager für PHP (PHP-FPM ) und dem weltweit beliebtesten Datenbankserver MySQL kann Ihnen viel Leistung und Leistung bieten, während Sie dennoch wenig Speicher benötigen.
Im folgenden Artikel geht es um die Installation und Konfiguration von LEMP Stack auf einem CentOS 6 VPS und hosten Sie blitzschnelles WordPress unterstützte Webanwendungen.
Der Artikel ist in die folgenden Abschnitte unterteilt:
- Erste Einrichtung
- Installieren und konfigurieren Sie Nginx
- Installieren und konfigurieren Sie MySQL
- Installieren und konfigurieren Sie PHP-FPM
- WordPress installieren und einrichten
- Richten Sie Caching für beste Leistung ein
## screen -U -S lemp-stack
Sobald Sie sich in der Bildschirmsitzung befinden, stellen Sie sicher, dass Ihr CentOS 6-VPS vollständig auf dem neuesten Stand ist, indem Sie Folgendes ausführen:
## yum update
Wenn Sie Apache auf Ihrem VPS installiert haben, stoppen Sie es und entfernen Sie es, indem Sie Folgendes ausführen:
## /etc/init.d/httpd stop ## yum remove httpdSCHRITT 1) Nginx installieren und konfigurieren
Aktivieren Sie das Epel-Repository, indem Sie Folgendes ausführen:
Finden Sie Ihre VPS-Architektur, indem Sie uname -m
ausführen
– 32-Bit-VPS:
## wget -P /tmp http://mirror.pnl.gov/epel/6/i386/epel-release-6-8.noarch.rpm ## rpm -Uvh /tmp/epel-release-6-8.noarch.rpm ## rm -f /tmp/epel-release-6-8.noarch.rpm
– 64-Bit-VPS:
## wget -P /tmp http://mirror.itc.virginia.edu/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm ## rpm -Uvh /tmp/epel-release-6-8.noarch.rpm ## rm -f /tmp/epel-release-6-8.noarch.rpm
Überprüfen Sie, ob alles auf dem neuesten Stand ist
## yum update
Installieren Sie Nginx
über yum durch Ausführen von:
## yum install nginx
Navigieren Sie zum Konfigurationsverzeichnis von Nginx in /etc/nginx/
und bearbeiten Sie nginx.conf
mit Ihrem bevorzugten Editor:
## cd /etc/nginx/ ## vim nginx.conf
user nginx; worker_processes 2; error_log /var/log/nginx/error.log; #error_log /var/log/nginx/error.log notice; #error_log /var/log/nginx/error.log info; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-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 /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; 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/sites-enabled/*; }
Erstellen Sie sites-enabled
und sites-available
innerhalb von /etc/nginx
Verzeichnis:
## mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled
Richten Sie die standardmäßige virtuelle Nginx-Host-Direktive ein, indem Sie Folgendes in /etc/nginx/sites-available/default.conf
hinzufügen
server { listen 80 default_server; server_name _; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
Aktivieren Sie die standardmäßige virtuelle Nginx-Host-Direktive, indem Sie einen symbolischen Link zur standardmäßigen vhost-Konfiguration in /etc/nginx/sites-enabled/
erstellen
## cd /etc/nginx/sites-enabled ## ln -s /etc/nginx/sites-available/default.conf
Testen Sie die Konfiguration von Nginx, fügen Sie sie Ihrem Systemstart hinzu und starten Sie sie schließlich durch:
## nginx -t ## /etc/init.d/nginx restart ## chkconfig nginx onSCHRITT 2) Installieren und konfigurieren Sie MySQL
Installieren Sie den MySQL-Datenbankserver, starten Sie ihn und fügen Sie ihn Ihrem Systemstart hinzu, indem Sie die folgenden Befehle ausführen:
## yum install mysql mysql-server ## service mysqld restart ## chkconfig mysqld on
Führen Sie als Nächstes den folgenden Befehl aus, um MySQL einzurichten
## mysql_secure_installation
Enter current password for root (enter for none): Set root password? [Y/n] y Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] y Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y
Stellen Sie sicher, dass Ihr MySQL nicht offengelegt wird, um die öffentliche IP Ihres Servers abzuhören, indem Sie Folgendes zu /etc/my.cnf
hinzufügen
## vim /etc/my.cnf [mysqld] bind-address = 127.0.0.1 ...
Starten Sie den Datenbankserver neu, damit die Änderungen wirksam werden, indem Sie:
## /etc/init.d/mysqld restartSCHRITT 3) Installieren und konfigurieren Sie PHP-FPM
Installieren Sie PHP-FPM
und einige nützliche PHP-Erweiterungen, indem Sie den folgenden Befehl ausführen:
## yum install php-fpm php-mysql php-gd php-mcrypt
Bearbeiten Sie /etc/php.ini
und ändern/entkommentieren Sie Folgendes:
cgi.fix_pathinfo=0 date.timezone = America/New_York memory_limit = 64M expose_php = Off
Als nächstes bearbeiten Sie /etc/php-fpm.conf
mit Ihrem bevorzugten Editor und kommentieren Sie Folgendes aus:
emergency_restart_threshold = 10 emergency_restart_interval = 1m process_control_timeout = 10
Wenn alles vorhanden ist, richten Sie einen PHP-FPM-Pool in /etc/php-fpm.d/www.conf
ein :
## mv /etc/php-fpm.d/www.conf /root/ ## vim /etc/php-fpm.d/www.conf
[wordpress] ;listen = 127.0.0.1:9001 listen = /var/run/php-wordpress.socket user = nginx group = nginx 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/wordpress-error.log php_admin_flag[log_errors] = on
Starten Sie PHP-FPM neu und fügen Sie es Ihrem Systemstart hinzu:
## /etc/init.d/php-fpm restart ## chkconfig php-fpm on
An diesem Punkt sollten Sie Nginx haben , MySQL und PHP-FPM auf Ihrem Server läuft. Fahren Sie mit dem Erstellen einer vhost-Anweisung für Ihr WordPress fort Anwendung:
## vim /etc/nginx/sites-available/my-wordpress.tld.conf
server { listen 80; server_name my-wordpress.tld; rewrite ^(.*) http://www.my-wordpress.tld$1 permanent; } server { listen 80; server_name www.my-wordpress.tld; client_max_body_size 5m; client_body_timeout 60; access_log /var/log/nginx/my-wordpress.tld-access; error_log /var/log/nginx/my-wordpress.tld-error error; root /var/www/html/my-wordpress.tld/; index index.html index.php; ### root 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-includes/ { internal; } #location ~* wp-config.php { deny all; } location ~* ^/wp-content/uploads/.*.(html|htm|shtml|php)$ { types { } default_type text/plain; } # location ~* wp-admin { # allow <YOUR_IP>; # allow 127.0.0.1; # 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; } location ~* \.(js)$ { access_log off; log_not_found off; expires 7d; } ### php block ### location ~ \.php?$ { try_files $uri =404; include fastcgi_params; #fastcgi_pass 127.0.0.1:9001; fastcgi_pass unix:/var/run/php-wordpress.socket; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors on; fastcgi_split_path_info ^(.+\.php)(.*)$; #Prevent version info leakage fastcgi_hide_header X-Powered-By; } }
Aktivieren Sie die Direktive für virtuelle Hosts und starten Sie nginx neu, indem Sie die folgenden Befehle ausführen:
## cd /etc/nginx/sites-enabled ## ln -s /etc/nginx/sites-available/my-wordpress.tld.conf ## nginx -t ## /etc/init.d/nginx restart
Testen Sie PHP-FPM, indem Sie PHP info.php
erstellen -Skript in Ihrem vhost-Dokumentstammverzeichnis in /var/www/html/my-wordpress.tld/
:
## mkdir -p /var/www/html/my-wordpress.tld/ ## cd /var/www/html/my-wordpress.tld/ ## echo -e "<?php\n\tphpinfo();\n" > info.php
Greifen Sie auf http://my-wordpress.tld/info.php
zu um Ihr PHP-FPM zu testen
Der nächste Schritt besteht darin, WordPress in Ihrem vhost-Dokumentenstamm in /var/www/html/my-wordpress.tld/
zu installieren . Bevor wir WordPress installieren, erstellen wir zunächst eine MySQL-Datenbank, indem wir Folgendes ausführen:
## mysql -u root -p
mysql> create database wordpressDB; mysql> grant all on wordpressDB.* to wpUser@localhost identified by 'YOUR_PASS'; mysql> quit
## cd /var/www/html/my-wordpress.tld/ ## wget http://wordpress.org/latest.zip ## unzip latest.zip ## mv wordpress/* . ## rm -rf latest.zip wordpress/
Kopieren Sie als Nächstes die WordPress-Beispielkonfiguration und richten Sie Ihre MySQL-Datenbankinformationen ein:
## cp wp-config-sample.php wp-config.php ## vim wp-config.php
define('DB_NAME', 'wordpressDB'); define('DB_USER', 'wpUser'); define('DB_PASSWORD', 'YOUR_PASS');
## chown nginx: -R /var/www/html/my-wordpress.tld/
Öffnen Sie http://my-wordpress.tld und vervollständigen Sie Ihre WordPress-Installation
SCHRITT 5) Richten Sie Caching für beste Leistung ein
Installieren Sie PHP-APC (Alternativer PHP-Cache), indem Sie Folgendes ausführen:
## yum install php-pecl-apc
Sobald APC installiert ist, fügen Sie Folgendes zu /etc/php.d/apc.ini
hinzu
## cat > /etc/php.d/apc.ini
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
und starten Sie PHP-FPM neu damit die Änderungen wirksam werden.
## /etc/init.d/php-fpm restart
überprüfen Sie, ob APC wird geladen durch Ausführen von:
## php -m | grep -w apc
oder durch Öffnen der info.php
Skript in Ihrem Dokumentenstamm.
Als nächstes müssen Sie sich bei Ihrer WordPress-Administration anmelden und das W3 Total Cache Plugin installieren . Damit das W3 Total Cache Plugin funktioniert, müssen Sie zuerst Pretty URLs
aktivieren in
Settings->Permalinks->Custom Structure
:
http://my-wordpress.tld/%postname%/
und fahren Sie dann mit der Installation von W3 Total Cache
fort . Gehen Sie nach der Installation zu
Performance->General Settings
und aktivieren/deaktivieren Sie die folgenden Optionen:
Page cache: enabled Page cache method: Disk: Enhaced Minify: disabled Database Cache: enabled Database Cache Method: Opcode: Alternative PHP Cache (APC) Object Cache: enbabled Object Cache Method: Opcode: Alternative PHP Cache (APC) Browser Cache: disabled CDN: this is up to you.
Klicken Sie auf Save all settings
um die Änderungen zu übermitteln.
Fügen Sie Folgendes in /var/www/html/my-wordpress.tld/nginx.conf
hinzu
## cat > /var/www/html/my-wordpress.tld/nginx.conf
# BEGIN W3TC Page Cache cache location ~ /wp-content/cache/page_enhanced.*html$ { add_header Vary Cookie; } # END W3TC Page Cache cache # BEGIN W3TC Page Cache core set $w3tc_rewrite 1; if ($request_method = POST) { set $w3tc_rewrite 0; } if ($query_string != "") { set $w3tc_rewrite 0; } if ($request_uri !~ \/$) { set $w3tc_rewrite 0; } if ($http_cookie ~* "(comment_author|wp\-postpass|w3tc_logged_out|wordpress_logged_in|wptouch_switch_toggle)") { set $w3tc_rewrite 0; } if (!-f "$document_root/wp-content/cache/page_enhanced/$http_host/$request_uri/_index.html") { set $w3tc_rewrite 0; } if ($w3tc_rewrite = 1) { rewrite .* "/wp-content/cache/page_enhanced/$http_host/$request_uri/_index.html" last; } # END W3TC Page Cache core
Stellen Sie sicher, dass der Besitz des Dokumentstammverzeichnisses in Ordnung ist, indem Sie:
## chown nginx: -R /var/www/html/my-wordpress.tld/
Der nächste Schritt besteht darin, Nginx anzuweisen, diese Konfigurationsdatei zu verwenden. Bearbeiten Sie /etc/nginx/sites-enabled/my-wordpress.tld.conf
und fügen Sie Folgendes hinzu/kommentieren Sie Folgendes aus:
include /var/www/html/my-wordpress.tld/nginx.conf; ... location ~* wp-config.php { deny all; }
Testen Sie die Konfigurationsdatei von Nginx und starten Sie sie neu, damit die Änderungen wirksam werden, indem Sie Folgendes ausführen:
## nginx -t ## /etc/init.d/nginx restart
Sie können auch Ihre WordPress-Konfigurationsdatei /var/www/html/my-wordpress.tld/wp-config.php
bearbeiten und definiere Folgendes, damit WordPress die Datenbank nicht nach der Site-URL abfragen muss:
define('WP_HOME', 'http://my-wordpress.tld'); define('WP_SITEURL', 'http://my-wordpress.tld');
Wenn Sie einer unserer Linux-VPS-Hosting-Kunden sind, müssen Sie dies natürlich nicht tun. Fragen Sie einfach unsere Administratoren, lehnen Sie sich zurück und entspannen Sie sich. Unsere Administratoren werden dies umgehend für Sie einrichten.
PS. Wenn Ihnen dieser Beitrag gefallen hat, teilen Sie ihn bitte mit Ihren Freunden in den sozialen Netzwerken über die Schaltflächen auf der linken Seite oder hinterlassen Sie einfach unten eine Antwort. Danke.