GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nainstalovat WordPress s Nginx na CentOS 8 / RHEL 8

WordPress je systém pro správu obsahu (CMS), který se široce používá k vytváření blogů, webů, portálů elektronického obchodu a mnoha dalších. Je napsán v jazyce PHP a jako databázi používá MariaDB nebo MySQL.

WordPress pohání více než 60 milionů webových stránek, včetně 33 % z 10 milionů nejlepších webových stránek.

Zde je návod, jak nainstalovat WordPress s Nginx na CentOS 8 / RHEL 8.

Instalovat LEMP Stack

Než budete pokračovat, nastavte zásobník LEMP pomocí níže uvedeného odkazu.

Nainstalujte LEMP Stack (Nginx, MariaDB a PHP) na CentOS 8 / RHEL 8

Nainstalujte rozšíření PHP

K instalaci WordPressu na CentOS 8 / RHEL 8 jsou vyžadována následující rozšíření.

yum install -y php-mysqlnd php-dom php-simplexml php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-iconv  php-json php-mbstring php-posix php-sockets php-tokenizer

Nakonfigurujte blok serveru Nginx pro WordPress

Vytvořme blok serveru pro instalaci WordPressu. Konfigurační soubory virtuálního hostitele lze nalézt v adresáři /etc/nginx/conf.d.

Vytvářím blok serveru pro následující,

Název domény: www.itzgeek.net
Číslo portu: 80
Kořenový adresář dokumentu: /sites/www.itzgeek.net/public_html
Protokoly: /sites/www.itzgeek.net/logs

Nejprve vytvořte soubor virtuálního hostitele.

vi /etc/nginx/conf.d/www.itzgeek.net.conf

Umístěte následující obsah.

server {
	listen 80; 
	server_name www.itzgeek.net;

	root /sites/www.itzgeek.net/public_html/;

	index index.html index.php;

	access_log /sites/www.itzgeek.net/logs/access.log;
	error_log /sites/www.itzgeek.net/logs/error.log;

	# Don't allow pages to be rendered in an iframe on external domains.
	add_header X-Frame-Options "SAMEORIGIN";

	# MIME sniffing prevention
	add_header X-Content-Type-Options "nosniff";

	# Enable cross-site scripting filter in supported browsers.
	add_header X-Xss-Protection "1; mode=block";

	# Prevent access to hidden files
	location ~* /\.(?!well-known\/) {
		deny all;
	}

	# Prevent access to certain file extensions
	location ~\.(ini|log|conf)$ {
		deny all;
	}
        
        # Enable WordPress Permananent Links
	location / {
		try_files $uri $uri/ /index.php?$args;
	}

	location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	}

}

Vytvořte kořenový adresář dokumentů a adresář protokolů.

sudo mkdir -p /sites/www.itzgeek.net/public_html/

sudo mkdir -p /sites/www.itzgeek.net/logs/

Ověřte konfigurační soubory.

nginx -t

Níže uvedený výstup potvrzuje, že v bloku serveru není žádná syntaktická chyba.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Restartujte služby.

systemctl restart nginx

systemctl restart php-fpm

Pokud se při restartování služby Nginx objeví nějaká chyba, vypněte SELinux na vašem počítači.

setenforce 0

Nainstalujte Let's Encrypt SSL pro WordPress (volitelné)

V současné době téměř všechny webové stránky používají HTTPS (certifikát SSL) pro autenticitu, bezpečnost a zachování soukromí uživatelů. Google loni požádal vlastníky, aby kvůli zabezpečení a zlepšení hodnocení přešli na HTTPS.

Nainstalujte Certbot

Pro vydávání certifikátu a instalaci certifikátu bez prostojů musíte do svého systému nainstalovat klienta Certbot ACME.

Klient Certbot není dostupný v úložištích Red Hat. Potřebujeme si tedy stáhnout klienta Certbot z jeho oficiální stránky.

curl -O https://dl.eff.org/certbot-auto

mv certbot-auto /usr/local/bin/certbot-auto

chmod 0755 /usr/local/bin/certbot-auto

Aktualizovat/změnit DNS záznam

Přejděte k registrátorovi domény a vytvořte/aktualizujte záznam A/CNAME pro svou doménu.

Počkejte nějakou dobu, než se záznam DNS rozšíří, a poté pokračujte v instalaci Let’s Encrypt SSL.

Nainstalujte Let's Encrypt SSL certifikát

Pomocí příkazu certbot vytvořte a nainstalujte certifikát Let’s Encrypt.

/usr/local/bin/certbot-auto --nginx

Při prvním spuštění nainstaluje klient certbot požadované rpm balíčky pro nastavení virtuálního prostředí Pythonu pro generování certifikátů.

Výstup:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]  << Enter email id to receive notification

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A  << Accept Terms of Service

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y  << Subscribe to newsletter

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: www.itzgeek.net
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1  << Install SSL certificate for www.itzgeek.net
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for www.itzgeek.net
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/wordpress.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2  << Redirect HTTP traffic to HTTPS site
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/wordpress.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://www.itzgeek.net

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=www.itzgeek.net
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/www.itzgeek.net/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/www.itzgeek.net/privkey.pem
   Your cert will expire on 2019-12-17. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "certbot-auto renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Přesměrujte požadavky HTTP bez www na www HTTPS pomocí Nginx

Potřebujeme přesměrovat provoz přicházející pro web bez www HTTP na web www HTTPS. Pro můj web je to http://itzgeek.net>> https://www.itzgeek.net .

vi /etc/nginx/conf.d/www.itzgeek.net.conf

Přidejte blok přesměrování níže na konec souboru.

# Redirect NON-WWW HTTP to WWW HTTPS
server {
    if ($host = itzgeek.net) {
        return 301 https://www.itzgeek.net$request_uri;
    }


   server_name itzgeek.net;
    listen 80;
    return 404;

}

Restartujte službu Nginx.

systemctl restart nginx

Vytvoření databáze pro WordPress

Přihlaste se do MariaDB.

mysql -u root -p

Vytvořte požadovanou databázi pro instalaci WordPress.

CREATE DATABASE wordpress;

Vytvořte uživatele.

CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'wppassword';

Udělte vytvořenému uživateli plné oprávnění k přístupu k nově vytvořené databázi WordPress.

GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';

Ukončete prostředí MariaDB.

exit

Stáhněte si WordPress

Stáhněte si nejnovější WordPress.

curl -O https://wordpress.org/latest.tar.gz

Extrahujte to.

tar -zxvf latest.tar.gz

Přesuňte jej do kořenového adresáře dokumentu.

mv wordpress/* /sites/www.itzgeek.net/public_html/

Zkopírujte soubor wp-sample-config.php a vytvořte jej jako soubor wp-config.php.

cp /sites/www.itzgeek.net/public_html/wp-config-sample.php /sites/www.itzgeek.net/public_html/wp-config.php

Upravte konfigurační soubor a aktualizujte informace o databázi.

vi /sites/www.itzgeek.net/public_html/wp-config.php

Upravte položky podle vytvořené databáze, uživatele a hesla.

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );

/** MySQL database username */
define( 'DB_USER', 'wpuser' );

/** MySQL database password */
define( 'DB_PASSWORD', 'wppassword' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

Udělejte uživatele Nginx jako vlastníka adresáře WordPress.

chown -R apache:apache /sites/www.itzgeek.net/public_html/

Nainstalujte si WordPress

Otevřete prohlížeč a navštivte

http://url-vase-webove-stránky

Vyberte jazyk pro instalaci WordPressu.

Zadejte informace o svém webu a klikněte na Instalovat WordPress.

Zobrazí se další stránka, jako níže.

Pokud kliknete na Přihlásit, budete požádáni o zadání hesla pro přístup do WordPress Admin.

Administrátorský panel aplikace WordPress:

Rozhraní WordPress:

Několik dalších konfigurací

Nakonfigurujte maximální velikost nahrávání souboru pro WordPress

Ve výchozím nastavení PHP neumožňuje nahrávání souborů nad 2 MB. Chcete-li povolit nahrávání větších souborů, nakonfigurujte nastavení upload_max_filesize v php.ini.

vi /etc/php.ini

Změňte velikost nahrávaného souboru podle svých požadavků

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 256M

Restartujte službu php-fpm.

systemctl restart php-fpm

Nastavte client_max_body_size na Nginx pro WordPress

Níže uvedená chyba se může zobrazit i v případě, že jste v předchozím kroku změnili maximální velikost nahrávaného souboru.

2019/09/18 03:37:17 [error] 11773#11773: *121 client intended to send too large body: 9872781 bytes, client: 49.207.143.143, server: www.itzgeek.net, request: "POST /wp-admin/update.php?action=upload-theme HTTP/1.1", host: "www.itzgeek.net", referrer: "https://www.itzgeek.net/wp-admin/theme-install.php?browse=featured"

Přidejte základní modul client_max_body_size do konfiguračního souboru Nginx.

vi /etc/nginx/nginx.conf

Direktivu lze přidat do bloku http (pro všechny weby), konkrétního bloku serveru nebo v kontextu umístění.

Zde přidávám direktivu do bloku http, který nastavuje hodnotu pro všechny stránky běžící na tomto serveru.

http {
....

    client_max_body_size 256M;

....
}

Také musíme změnit hodnotu post_max_size v souboru php.ini.

vi /etc/php.ini

Změňte velikost nahrávání podle svých požadavků.

post_max_size = 256M

Restartujte služby.

systemctl restart php-fpm

systemctl restart nginx

Závěr

To je vše. Doufám, že nyní můžete provozovat svůj WordPress s Nginx na CentOS 8 / RHEL 8. Podělte se prosím o svůj názor v sekci komentářů.


Cent OS
  1. Jak nainstalovat phpMyAdmin s Nginx na CentOS 7 / RHEL 7

  2. Jak nainstalovat WordPress Multisite na Centos VPS s Nginx

  3. Jak nainstalovat WordPress s LEMP Stack na CentOS 8

  1. Jak nainstalovat WordPress na RHEL 8 / CentOS 8 Linux

  2. Jak nainstalovat WordPress s Nginx na CentOS 7

  3. Jak nainstalovat phpMyAdmin s Nginx na CentOS 7

  1. Jak nainstalovat WordPress s Apache na CentOS 7

  2. Jak nainstalovat WordPress s HHVM a Nginx na CentOS 7

  3. Jak nainstalovat SuiteCRM s Nginx na CentOS 7