GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Führen Sie WordPress+W3TotalCache mit dem LEMP-Stack (Nginx, PHP-FPM+APC und MySQL) auf CentOS 6 VPS aus, um maximale Leistung zu erzielen

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
Bevor Sie mit der Installation fortfahren, starten Sie eine Bildschirmsitzung, indem Sie Folgendes ausführen:
## 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 httpd
SCHRITT 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 on
SCHRITT 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 restart
SCHRITT 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

SCHRITT 4) WordPress einrichten

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.


Cent OS
  1. Führen Sie Joomla mit Nginx auf einem Centos VPS aus

  2. So installieren Sie Varnish und phpMyAdmin auf einem CentOS 7 VPS mit Nginx, MariaDB und PHP-FPM

  3. Installieren Sie FluxBB auf einem CentOS 7 VPS mit Nginx und PHP-FPM

  4. Installieren Sie das eZ Publish Community Project auf einem CentOS 7 VPS mit Nginx und PHP-FPM

  5. So installieren Sie den LEMP-Stack auf CentOS 7

Installieren Sie Mattermost mit PostgreSQL und Nginx auf CentOS 7

So installieren Sie Redmine 3 mit Nginx unter CentOS 7

So installieren Sie Nginx mit PHP und MySQL (LEMP Stack) unter Ubuntu 18.04

So installieren Sie Nginx mit PHP und MySQL (LEMP Stack) unter Ubuntu 20.04 LTS

So installieren Sie Nginx mit PHP und MySQL (LEMP Stack) unter CentOS 7.6

Installieren von Nginx mit PHP5 (und PHP-FPM) und MySQL-Unterstützung unter CentOS 6.4