GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nainstalovat WordPress 5.x s Nginx na Ubuntu 18.04 / Ubuntu 16.04

WordPress je nejrozšířenější open-source webový software pro blogování a správu obsahu, který pohání přibližně 60 milionů webových stránek. Je napsán v PHP a jako databázi používá MariaDB / MySQL.

Tento tutoriál vám pomůže nainstalovat WordPress 5.x s Nginx na Ubuntu 18.04 / Ubuntu 16.04.

Také uvidíme, jak nainstalovat Let’s Encrypt SSL pro WordPress pro bezpečné doručení webu.

Instalovat LEMP Stack

Než budete pokračovat, možná se budete chtít podívat na to, jak nainstalovat LEMP stack.

Instalace zásobníku LEMP (Nginx, MariaDB a PHP) na Ubuntu 18.04

Instalace zásobníku LEMP (Nginx, MariaDB a PHP) na Ubuntu 16.04

Nainstalujte rozšíření PHP

K instalaci a spuštění WordPressu v OS Ubuntu jsou vyžadována následující rozšíření.

sudo apt install -y php-mysql php-dom php-simplexml php-ssh2 php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-iconv php-imagick php-json php-mbstring php-posix php-sockets php-tokenizer

Nakonfigurujte blok serveru Nginx pro WordPress

Pojďme vytvořit blok serveru Nginx pro instalaci WordPress. Konfigurační soubory virtuálního hostitele lze nalézt v adresáři /etc/nginx/conf.d.

Blokování serveru vyžaduje název domény, číslo portu, kořen dokumentu, umístění protokolu, rychlé CGI atd.

Předpokládejme následující,

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

Vytvořte virtuálního hostitele.

Pokud jste nainstalovali Nginx z úložiště Ubuntu, konfigurační soubory virtuálního hostitele se nacházejí v /etc/nginx/sites-enabled a cesta k souboru bude vypadat jako /etc/nginx/sites-enabled/www.itzgeek.net.conf.
sudo nano /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.

sudo nginx -t

Pokud se zobrazí následující, znamená to, že položky virtuálního hostitele jsou správné.

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

Restartujte služby.

sudo systemctl restart nginx

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

V současné situaci téměř všechny webové stránky používají HTTPS (certifikát SSL) pro autenticitu, zabezpečené účty, aby byla komunikace uživatelů soukromá. Google žádá vlastníky, aby pro lepší zabezpečení a zlepšení hodnocení přešli na HTTPS.

Nainstalujte Certbot

Chcete-li vygenerovat certifikát SSL, nainstalujte do systému klienta Certbot ACME. Zvládá vydání certifikátu a instalaci certifikátu bez prostojů.

Klient Certbot není dostupný v úložištích Ubuntu. Takže musíme nakonfigurovat Certbot PPA na Ubuntu.

sudo apt update

sudo apt install -y software-properties-common

sudo add-apt-repository universe

sudo add-apt-repository ppa:certbot/certbot

sudo apt update

Nyní nainstalujte klienta certbot.

sudo apt install -y certbot python-certbot-nginx

Aktualizovat/změnit DNS záznam

Přihlaste se ke svému registrátorovi domény a vytvořte záznam A/CNAME pro svou doménu.

Počkejte nějakou dobu, než se záznam rozšíří.

Nainstalujte Let's Encrypt SSL certifikát

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

sudo certbot --nginx

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
Deploying Certificate to VirtualHost /etc/nginx/conf.d/www.itzgeek.net.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/www.itzgeek.net.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-12. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot 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

Nyní vytvoříme nový blok serveru pro přesměrování provozu přicházejícího pro web bez www HTTP na web www HTTPS. T.j. http://itzgeek.net>> https://www.itzgeek.net .

sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf

Přidejte níže uvedený blok 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.

sudo systemctl restart nginx

Vytvoření databáze pro WordPress

Přihlaste se do MySQL.

sudo mysql -u root -p

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

CREATE DATABASE wordpress;

Vytvořte uživatele.

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

Udělte vytvořenému uživateli oprávnění pro přístup k databázi.

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

Ukončete prostředí MariaDB.

quit

Stáhněte si WordPress

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

wget http://wordpress.org/latest.tar.gz

Extrahujte balíček WordPress.

tar -zxvf latest.tar.gz

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

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

Udělejte z uživatele Apache (www-data) vlastníka webu WordPress.

sudo chown -R www-data:www-data /sites/www.itzgeek.net/public_html/

sudo chown -R www-data:www-data /sites/www.itzgeek.net/logs/

Nainstalujte si WordPress

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

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

Získáte průvodce instalací WordPress.

Vyberte jazyk pro instalaci WordPressu.

Ujistěte se, že máte název databáze WordPress, uživatele databáze a heslo uživatele databáze. Pokud jste připraveni, klikněte na tlačítko Pojďme!.

Na této stránce zadejte informace o databázi, aby se WordPress mohl připojit k databázi.

Pokud je připojení k databázi úspěšné, zobrazí se stránka níže. Klikněte na Spustit instalaci.

Na této stránce zadejte název webu, správce WordPress a heslo (dle vašeho výběru) a poté e-mailovou adresu. Poté klikněte na Instalovat WordPress.

Instalace WordPressu je nyní dokončena. Kliknutím na Přihlásit se přejdete na stránku správce WordPress.

Zadejte uživatele správce WordPress a jeho heslo pro přístup na stránku správce WordPress.

Správce aplikace WordPress:

Rozhraní WordPress:

Informace o serveru WordPress (plugin YLD Server Information):

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í z webu nad 2 MB. Chcete-li povolit nahrávání větších souborů prostřednictvím webového rozhraní WordPress, nakonfigurujte nastavení upload_max_filesize v php.ini.

sudo nano /etc/php/7.2/fpm/php.ini

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

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

Restartujte službu php7.2-fpm.

sudo systemctl restart php7.2-fpm

Nakonfigurujte client_max_body_size na Nginx pro WordPress

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

2019/09/13 04:40:08 [error] 3803#3803: *517 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 serveru Nginx.

sudo nano /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í. Do bloku http přidávám direktivu, 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 php7.2-fpm.

sudo nano /etc/php/7.2/fpm/php.ini

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

post_max_size = 256M

Restartujte služby.

sudo systemctl restart php7.2-fpm

sudo systemctl restart nginx

Závěr

To je vše. Doufám, že jste se naučili, jak nainstalovat WordPress 5.x s Nginx na Ubuntu 18.04 / Ubuntu 16.04. Podělte se o svůj názor v sekci komentářů.


Ubuntu
  1. Jak nainstalovat WordPress pomocí Nginx na Ubuntu 18.04

  2. Jak nainstalovat Nginx na Ubuntu 16.04

  3. Jak nainstalovat Joomla s Nginx na Ubuntu 18.04

  1. Jak nainstalovat Nginx na Ubuntu 16.04

  2. Jak nainstalovat WordPress s Nginx na Ubuntu 18.04

  3. Jak nainstalovat Elgg s Nginx na Ubuntu 14.04

  1. Jak nainstalovat MediaWiki s Nginx na Ubuntu 16.04

  2. Jak nainstalovat Magento s Nginx na Ubuntu 15.10

  3. Jak nainstalovat Mailpile s Nginx na Ubuntu 15.10