Instalace WordPressu s Ubuntu 22.04, Apache2, MariaDB a PHP 8.2-FPM

Pokud plánujete hostovat WordPress na Cloud Server, bude pro vás tento průvodce užitečný. LAMP znamená Linux, Apache, MariaDB and PHP softwaru, které se společně označují jako LAMP stack.

Výhody a nevýhody volby webového serveru Apache oproti NGINX

  • Klady: Podporuje soubor .htaccess, který je běžně používán mnoha stránkami Caching & Optimization. To je skvělá volba pro non-coder.
  • Nevýhody: Je o něco méně výkonný než NGINX, ale to lze spravovat pomocí APO. Pro stránky s vysokou návštěvností, LEMP szásobník je nejlepší volbou.

Postupujte podle těchto 3 kroků a podívejte se na video. Potřebujete pomoc? Contact me. 😊

  1. Nastavení Cloudflare DNS
  2. Získání Ubuntu Server
  3. Deploying LAMP Stack

Než se pustíte do práce, přinášíme vám krátkou radu.. Použijte Search and Replace Extension k hromadné změně example.com do vlastní domény v této web page.

Tip na úsporu času pro Google Chrome users.
search replace

Část A: Udržujte aktivní jmenné servery Cloudflare

Budeme používat Cloudflare DNS pro získání Let’s Encrypt Wildcard SSL certificate. Tento krok dokončete jako první, abyste si mohli vychutnat migraci bez prostojů..

Zkontrolujte aktuální stav Nameservers

Část B: Příprava serveru Ubuntu Server 22.04 LTS

Ubuntu
Ubuntu logo

1. Zaregistrujte se Vultr uchopit $100 Volné kredity (Platnost 14 dní)

Jako někdo, kdo vyzkoušel tolik Cloud server company, moje zkušenost říká, že se nemůžete splést s Vultr. Tito lidé jsou upřímní a pečují o podporu a služby.

vultr

⚡ Výkon

  • 3rd Generation AMD EPYC™
  • NVME / SSD
  • Up to 4 GHz CPU
  • Up to 5Gbps Network Speed
  • Datacenter in America, Europe, Asia, Austraillia
  • IPV6 ready

💡 Funkce

  • Beginner-Friendly Dashboard
  • One-click to Snapshot
  • Automtatic Backup (Paid)
  • Free Cloud Firewall
  • DDoS protection (Paid)
  • 100% KVM Virtualization

⚙ Podpora

  • PayPal/Card
  • 24/7 Ticket Support
  • Documentation

2. Deloy a New Server

Stačí kliknout na plus button začít

Deploy New Server

3. Vyberte si Server type

Vyberte Cloud Compute for shared CPU v dostupných cenách.

Cloud Compute

Poté můžete v části Technologie procesoru a úložiště vybrat možnost AMD High Performance nebo Intel High Frequency. Má nejrychlejší procesor a disk NVMe vůbec. Pokud je rozpočet nižší, zvolte plán Regular s procesorem Intel, ve kterém získáte disk SSD.

CPU Technology

Vyberte si umístění serveru

Vultr nabízí server na čtyřech kontinentech. Pro dosažení nejnižší latence a nejlepšího výkonu byste měli vždy zvolit region, který je vašemu publiku nejblíže.

vultr server region

Pokud například 99 % vašeho provozu pochází z Evropy, vyberte nejbližší region – Německo.

Asia

  • Mumbai, India
  • Delhi NCR, India
  • Bengaluru, India
  • Singapore, Singapore
  • Tokyo, Japan
  • Seoul, South Korea

America

  • Miami, United States
  • Atlanta, United States
  • Chicago, United States
  • Dallas, United States
  • Honolulu, United States
  • Los Angeles, United States
  • Mexico City, Mexico
  • New York (NJ), United States
  • Seattle, United States
  • Silicon Valley, United States
  • Toronto, Canada, São Paulo

Europe

  • Stockholm, Sweden
  • London, United Kingdom
  • Amsterdam, Netherlands
  • Frankfurt, Germany
  • Madrid, Spain
  • Paris, France
  • Warsaw, Poland

Australlia

  • Sydney, Australlia
  • Melbourne, Australia

5. Vyberte Server Image > Operating System > Ubuntu 22.04 LTS x64

ubuntu os

Dlouhodobá podpora (LTS) je politika správy životního cyklu produktu, při níž je stabilní vydání počítačového softwaru udržováno po delší dobu než standardní vydání.

ubuntu releases 2

6. Vyberte si Server Size

server size

$6/mo plán by byl skvělým výchozím bodem pro nový blog. Kdykoli můžete upgradovat podle potřeby.

Tip: Pokud migrujete, zkontrolujte Total installation size in Site health info.

Site health info

7. Enable IPV6, Backup

vultr enable backup ipv6

8. Přidat a SSH key

Jedná se o doporučený, volitelný krok pro enhanced security.

Add SSH key
  • Klikněte na Přidat nový tlačítko pro přidání nového SSH key odeslat své 🔒Public key.
  • Generujte klíče pomocí níže uvedené metody podle vašeho operačního systému.
win os
  • Stáhnout PuTTy application.
  • Vyhledávání PuTTygen in the Start menu
  • Klikněte na Generate button and hover mouse pointer
  • Copy Public key and provide to Vultr
  • Enter key passphrase
  • Save 🔑Private Key at the safest location.
  • To lze použít pro přihlášení k SSH nebo SFTP.
linux 2
  • Run: ssh-keygen -t rsa. For a more secure 4096-bit key, run: ssh-keygen -t rsa -b 4096
  • Po dotazu, kam chcete klíč uložit, stiskněte enter (použije se výchozí umístění).
  • Enter a passphrase for your key.
  • Run cat ~/.ssh/id_rsa.pub – this will give you the key in the proper format to paste into the control panel.
  • Make sure you backup the ~/.ssh/id_rsa file. This cannot be recovered if it is lost.

Vyberte si svůj SSH key

Po provedení těchto kroků připojíte public key do vašeho nového Instance. Pak, se budete moci přihlásit to SSH using Plain Text password and SSH key both.

select SSH public key

9. Link Web Firewall rule to Server Instance

Firewall
  1. Click on Manage and create a new Firewall Group.
  2. Allow TCP port 22 for SSH. 80 for HTTP and 443 HTTPS for IPV4 and IPV6 rules both.
  3. Po dokončení, link the Firewall group to your Instance.
firewall status
Accept TCP connection from 22, 80, 443 only
Link Firewall Group
Link firewall rule to new instance

10. Enter Hostname and label click Deploy Now

server hostname label

Nyní uvidíte instalaci v průběhu

Instance Installing

11. Go to New Instance page

Copy IP address, username and password. Your default port is 22.

new instance info page

12. Disable Password Login

For security reasons, doporučuje se disable password authentication a povolit pouze key based authentication.

  1. Edit the configuration file nano /etc/ssh/sshd_config
  2. Find (CTRL + W) and search PasswordAuthentication
  3. Change value from yes to no
  4. To save type, CTRL + O
  5. Restart the SSH service using command sudo service ssh restart
disable password auth
Disable Password Authentication

From the next time, you can use SSH via key only as shown in the video.

For Linux or Mac, use Terminal with command like this

ssh root@192.168.1.1 -p 22 -i id_rsa

Step 13. Disable UFW

When you deploy a new instance at VULTR it comes with UFW (Uncomplicated Firewall) enabled that keeps all ports blocked except the SSH port 22. This can return ERR_CONNECTION_REFUSED Error in the browser. To fix this, I would suggest keeping UFW disabled.

ufw disable

Nyní urychlím původní proces nasazení WordPressu na stoh LAMP.

Část C. Nasazení WordPressu na LAMP Stack

1. Update repositories

Type below command and press enter key

sudo -s
apt update && apt upgrade -y && apt dist-upgrade && apt autoclean && apt autoremove -y && reboot

or

wget -qO update https://dl.gulshankumar.net/update && chmod +x update

Příště vždy použijte níže uvedený příkaz pro aktualizaci.

./update

2. Install MariaDB with security

Login again and enter following command

sudo apt install mariadb-server -y && sudo mysql_secure_installation

Odpovězte na níže uvedené otázky

  • Enter current password for root (enter for none): Stiskněte klávesu Enter
  • Switch to unix_socket authentication [Y/n]: n
  • Set root password? [Y/n]: Stiskněte klávesu Enter.
  • New password: Zadejte heslo, které můžete vygenerovat pomocí služby Dashlane. Klikněte pravým tlačítkem myši na možnost vložit.
  • Re-enter new password: Znovu zadejte heslo.

Po úspěšném nastavení hesla se zobrazí

Password updated successfully!
Reloading privilege tables..
... Success!

Dále je třeba odpovědět na následující otázky.

Remove anonymous users? [Y/n]: Stiskněte klávesu Enter.
Disallow root login remotely? [Y/n]: Stiskněte klávesu Enter.
Remove test database and access to it? [Y/n]: Stiskněte klávesu Enter.
Reload privilege tables now? [Y/n]: Stiskněte klávesu Enter.

3. Create a new Database for WordPress

Login to MySQL, press enter key when it asks for password.

mysql -u root -p

Create a new Database, and Grant Privileges to use its user with password. This is where WordPress store all post, pages, themes, plugin, etc information.

create database wordpress;
grant all on wordpress.* to gulshan@localhost identified by '5pY8CKJxDRJEGQNkX7';
flush privileges;
exit;

Where your …
database is wordpress
username is gulshan
password is 5pY8CKJxDRJEGQNkX7

Tip: Zvažte použití jedinečného přihlašovacího pověření

4. Install PHP 8.2, Apache2 and set Permission

sudo add-apt-repository ppa:ondrej/php -y && apt update && apt install php8.2-fpm php8.2-common php8.2-mysql php8.2-xml php8.2-xmlrpc php8.2-curl php8.2-gd php8.2-imagick php8.2-cli php8.2-dev php8.2-imap php8.2-mbstring php8.2-soap php8.2-zip php8.2-bcmath -y && sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php/8.2/fpm/php.ini && service php8.2-fpm restart && apt install apache2 -y && chown -R www-data:www-data /var/www/ && chmod -R 755 /var/www/

Tweak PHP Configuration

Most fancy theme and plugin requires high-end PHP configuration to run. Therefore, we should make this changes.

sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 128M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_file_uploads = 20/max_file_uploads = 30/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_execution_time = 30/max_execution_time = 900/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_input_time = 60/max_input_time = 3000/g' /etc/php/8.2/fpm/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/g' /etc/php/8.2/fpm/php.ini
service php8.2-fpm restart

5. Install Wildcard Let’s Encrypt SSL Certificate

Create a cloudflare.ini file inside /root/.secrets/ directory.

mkdir -p /root/.secrets/ && cd /root/.secrets/ && nano cloudflare.ini

Add below code and save using CTRL+O and exit using CTRL+X

dns_cloudflare_email = "your-cloudflare-email@example.com"
dns_cloudflare_api_key = "XXXXXXXXXXXXXXXXX"

Find your Cloudflare e-mail and Global API key at „My Profile“ > API Tokens > Global API Key

chmod 0400 /root/.secrets/cloudflare.ini

Install Certbot and DNS Authenticator according to OS and HTTP web server

apt install snapd -y
snap install --beta --classic certbot
snap set certbot trust-plugin-with-root=ok
snap install --beta certbot-dns-cloudflare
snap connect certbot:plugin certbot-dns-cloudflare

Get Wildcard SSL Certificate

certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d example.com,*.example.com --preferred-challenges dns-01

Set Automatic Renewal using Cron Job

  • Type crontab -e
  • Type 1 for nano editor
  • Enter below command and save
0 0 * * *  /etc/init.d/apache2 reload >/dev/null 2>&1

Test renewal

certbot renew --dry-run

Activate these useful modules

a2enmod proxy_fcgi ssl http2 expires headers rewrite remoteip
systemctl restart apache2

6. Create App Directory pro každý web WordPress, který chcete nainstalovat

mkdir -p /var/www/example.com/public

Toto bude váš kořenový dokument path in your Apache Configuration file. Důvod vytvoření example.com inside www is to keep each site organized way. Second, Vytvořil jsem public directory s cílem udržet tam všechny základní soubory WordPressu, ale wp-config.php one level up (/var/www/example.com/).

7. Create Apache2 Configuration

This is important where you need configure your domain, how Apache2 should handle your HTTP requests.

Delete default server blocks configuration files of Apache2

rm /etc/apache2/sites-available/000-default.conf
rm /etc/apache2/sites-available/default-ssl.conf
rm /etc/apache2/sites-enabled/000-default.conf
source /etc/apache2/envvars

Nyní, Create a new server block configuration files. Tento krok musíte provést pokaždé, když chcete přidat nový WordPress na stejný server..

Vyměňte prosím example.com s vlastní doménou a nezapomeňte ukončit název konfiguračního souboru znakem .conf extension. Jinak nebude fungovat.

cd /etc/apache2/sites-available/
nano example.com.conf
  1. Replace example.com with own domain
  2. Enter below code and Press ctrl+o to save and ctrl+x to exit.
##############################################################
#                                                               
# POZNÁMKY: Laskavě proveďte vyhledání a nahrazení example.com na vlastní doménu. 
#                                                                
##############################################################


# Budeme vynucovat HTTPS newww
# Pokud chcete HTTPS www, ponechte v posledním řádku https://www.example.com/.
# Jinak se můžete setkat s problémem smyčky přesměrování.

<VirtualHost *:80>
   ServerSignature Off
   ServerName example.com
   ServerAlias www.example.com
   Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
   ServerSignature Off
   ServerName example.com
   ServerAlias www.example.com
   Protocols h2 h2c http/1.1
   DirectoryIndex index.php index.html
    
   # Doporučeno pro uživatele služby Cloudflare
   # RemoteIPHeader X-Forwarded-For
   
   # Cesta ke kořenovému dokumentu (věnujte pozornost této cestě, abyste se vyhnuli 404)
   DocumentRoot /var/www/example.com/public
   
   # Cesta k protokolům je /var/log/apache2/example.com-access.log
   ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
   CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
   
   # Let's Encrypt SSL
   SSLEngine On
   SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
   
   # Povolení použití souboru .htaccess k přepsání konfigurace
   <Directory /var/www/example.com/public>
     Options FollowSymLinks
     AllowOverride All
     Require all granted
   </Directory>
   
   # Blokování provádění PHP uvnitř adresáře Uploads
   <Directory /var/www/example.com/public/wp-content/uploads>
    <Files *.php>
      deny from all
    </Files>
   </Directory>
   
   # Protect wp-config.php
   <files wp-config.php>
      order allow,deny
      deny from all
   </files>

  # HTTP Auth pro další zabezpečení
  # Pokud chcete HTTP Auth pro přihlašovací stránku WordPressu, odkomentujte tento blok kódu.
  # Pokud tak učiníte, musíte také vygenerovat soubor .htpasswd.
  # <Files wp-login.php>
  #  AuthName "Admins Only"
  #    AuthUserFile /var/www/.htpasswd
  #   AuthType basic
  #    require user gulshan
  #   <RequireAny>
  #      Require ip 127.0.0.1
  #       Require valid-user
  #   </RequireAny>
  # </Files>
   
   # Blokování XML-RPC pro zabránění útoku DDoS. 
   <Files xmlrpc.php>
      Order Deny,Allow
      Deny from all
   </Files>
   
   # Zpracování spuštění PHP
   <FilesMatch ".php$">
      SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost/"
   </FilesMatch>
</VirtualHost>

To save, press CTRL+O and Enter key. Then, exit nano editor using command CTRL+X.

To activate server block, enter the command

Před spuštěním níže command, prosím, vyměňte example.com to own domain.

a2ensite example.com.conf

Test configuration (optional)

apache2 -t

Restart and update

service apache2 restart && service php8.2-fpm restart && service mysql restart && apt-get update && apt upgrade -y

8. Install WordPress files

Download WordPress files in /var/www/example.com/public/ directory and set permission.

cd /var/www/example.com/public/ && wget https://wordpress.org/latest.tar.gz && tar -xvzf latest.tar.gz && mv -v wordpress/* /var/www/example.com/public/ && rm -rf latest.tar.gz wordpress && chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/

To update permission in future, use below command. This will set www-data for everything inside /var/www/ directory

chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/

9. Updating DNS

Pokud hostujete WordPress lokálně, chcete obejít proxy server nebo chcete provést migraci bez prostojů, je tento krok užitečný. Obecně dávám přednost v případě Static WordPress Dev area. 😉

  • Systém DNS lze nasměrovat dvěma způsoby. Pokud migrujete stránky na Vultr a chcete je nejprve otestovat lokálně, upravte soubor hosts a nasměrujte jej tam.

For Windows

  • Go to properties of ‪‪C:\Windows\System32\drivers\etc\hosts
  • Change „Security“ permission to full control for your current Username
  • Now you can freely edit the hosts file under your System user and save it.
# For same machine you can have localhost address else public IP
127.0.0.1 example.com
127.0.0.1 www.example.com

Příklad, takto by to mělo vypadat

For Mac or Linux

You can edit hosts file using this command under sudo user.

sudo nano /etc/hosts

Updating DNS with Cloudflare

  • Pokud vše vypadá perfektně a chcete svůj web spustit., Login to Cloudflare DNS and update new IP.
A@IPV4
AAAA@IPV6
CNAMEwwwexample.com

where @ denotes root domain example.com

9. Visit your domain name to setup WordPress

If you want to keep non-www version domain for your WordPress then visit non-www version else www.

https://example.com
  • Provide Database login credential to begin WordPress Setup
  • Run Installation
  • Fill up Basic details of your new Site and Install WordPress.
  • Login to WordPress

Other neccessary things

  • Increase the Swap Memory to deal with sudden load
swapoff -a
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  • Ujistěte se, že používáte plugin pro ukládání do mezipaměti, abyste měli pod kontrolou zatížení serveru. Protože se jedná o stack LAMP, doporučil bych vám WP Fastest Cache.
  • Vždy mějte zálohu.
  • Use SMTP plugin Services for sending outgoing email of WordPress jinak nebudete moci přijímat password reset link, contact form 7 messages.

Konečně byla dokončena instalace WordPress.

Velmi si vážím vašeho drahocenného času, který jste věnovali čtení tohoto článku. Uvidíme se v dalším tutoriálu!

Chcete víc? 
Buďte první, kdo obdrží nejnovější příspěvek na blogu přímo do své e-mailové schránky. 🙂

Napsat komentář