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ánkyZí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ářů.