Zainstaluj WordPress z Ubuntu 22.04, Apache2, MariaDB i PHP 8.2-FPM

Jeśli planujesz hostować WordPress na Cloud Serverze, ten poradnik będzie dla Ciebie pomocny. LAMP oznacza oprogramowanie Linux, Apache, MariaDB i PHP, które połączone razem znane jest jako stos LAMP.

Zalety i wady wyboru serwera Apache zamiast NGINX

  • Pros: Obsługuje plik .htaccess, który jest powszechnie używany przez wielu Page Caching & Optimization. Jest to świetny wybór dla nie-koderów.
  • Cons: Jest nieco mniej wydajny niż NGINX, ale można nim zarządzać za pomocą APO. Dla witryny o dużym ruchu, stos LEMP jest najlepszym wyborem.

Wykonaj te 3 kroki i obejrzyj film. Potrzebujesz pomocy? Kontaktuj się ze mną. 😊

  1. Konfiguracja Cloudflare DNS
  2. Uzyskanie Ubuntu Server
  3. Wdrażanie stosu LAMP

Teraz zanim zaczniesz, oto szybka wskazówka. Użyj Search and Replace Extension, aby masowo zmienić example.com na własną domenę na tej stronie.

Wskazówka oszczędzająca czas dla użytkowników Google Chrome.
search replace

Część A: Utrzymuj aktywny Cloudflare Nameservers

Będziemy używać Cloudflare DNS do uzyskania certyfikatu Let’s Encrypt Wildcard SSL. Wykonaj ten krok jako pierwszy, aby cieszyć się migracją bez przestojów.

Sprawdź aktualne nameservers

Część B: Przygotuj serwer Ubuntu 22.04 LTS

Ubuntu
Ubuntu logo

1. Zarejestruj się w Vultr, aby otrzymać 100$ darmowych kredytów (ważne przez 14 dni)

Jako ktoś, kto wypróbował tak wiele firm oferujących serwery w chmurze, moje doświadczenie mówi, że nie można się pomylić z Vultr. Ci ludzie są autentyczni i troskliwi, jeśli chodzi o wsparcie i usługi.

vultr

⚡ Wydajność

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

💡 Cechy

  • Deska rozdzielcza przyjazna dla początkujących
  • Jedno kliknięcie, aby wykonać migawkę
  • Automtatic Backup (płatny)
  • Darmowy Cloud Firewall
  • Ochrona przed DDoS (płatna)
  • 100% wirtualizacji KVM

⚙ Wsparcie

  • PayPal/Card
  • Obsługa biletów 24/7
  • Dokumentacja

2. Deloy a New Server

Wystarczy kliknąć na przycisk plus, aby rozpocząć pracę

Deploy New Server

3. Wybierz typ serwera

Wybierz Cloud Compute dla współdzielonego CPU w przystępnych cenach.

Cloud Compute

Następnie trzeba wybrać CPU & Storage Technology, można zdecydować się na „AMD High Performance”.

CPU Technology

4. Wybierz lokalizację serwera.

Vultr oferuje serwer na czterech kontynentach. Aby uzyskać najniższe opóźnienia i najlepszą wydajność, powinieneś zawsze wybierać region, który jest najbliżej Twoich odbiorców.

vultr server region 1

Na przykład, jeśli 99% ruchu pochodzi z Indii wybierz najbliższy region – Mumbai.

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. Wybierz Obraz serwera > System operacyjny > Ubuntu 22.04 LTS x64

ubuntu os

Wsparcie długoterminowe (LTS) to polityka zarządzania cyklem życia produktu, w której stabilne wydanie oprogramowania komputerowego jest utrzymywane przez dłuższy okres czasu niż wydanie standardowe.

ubuntu releases 2

6. Wybierz rozmiar serwera

server size

Plan $6/mo byłby świetnym punktem wyjścia dla nowego bloga. Możesz uaktualnić w dowolnym momencie, jak na wymagania.

Wskazówka: Jeśli przeprowadzasz migrację, sprawdź Całkowity rozmiar instalacji w informacji o stanie witryny.

Site health info

7. Włącz IPV6, Kopia zapasowa

vultr enable backup ipv6

8. Dodaj klucz SSH

Jest to krok zalecany, opcjonalny dla zwiększonego bezpieczeństwa.

Add SSH key
  • Kliknij na przycisk Add New, aby dodać nowy SSH key, aby przesłać swój 🔒Public key.
  • Wygeneruj klucze za pomocą poniższej metody, zgodnie z systemem operacyjnym.
win os
  • Pobierz aplikację PuTTy.
  • Wyszukaj PuTTygen w menu Start
  • Kliknij na przycisk Generuj i przesuń wskaźnik myszy
  • Skopiuj klucz publiczny i przekaż do Vultr
  • Wprowadź frazę klucza
  • Zapisz 🔑Private Key w najbezpieczniejszym miejscu.
  • Może być użyty do logowania do SSH lub SFTP.
linux 2
  • Uruchom: ssh-keygen -t rsa. Aby uzyskać bardziej bezpieczny klucz 4096-bitowy, uruchom: ssh-keygen -t rsa -b 4096
  • Naciśnij enter, gdy zostaniesz zapytany, gdzie chcesz zapisać klucz (użyje to domyślnej lokalizacji).
  • Wprowadź hasło dla swojego klucza.
  • Uruchom cat ~/.ssh/id_rsa.pub – dzięki temu otrzymasz klucz w odpowiednim formacie do wklejenia do panelu sterowania.
  • Upewnij się, że wykonałeś kopię zapasową pliku ~/.ssh/id_rsa. Nie można go odzyskać, jeśli zostanie utracony.

Wybierz swój klucz SSH

Po wykonaniu tych czynności dołączymy Twój klucz publiczny do nowej instancji. Następnie będziesz mógł się zalogować do SSH używając hasła Plain Text i klucza SSH.

select SSH public key

9. Powiązanie reguły Web Firewall z instancją serwera

Firewall
  1. Kliknij na Manage i utwórz nową Firewall Group.
  2. Zezwól na port TCP 22 dla SSH. 80 dla HTTP i 443 HTTPS zarówno dla reguł IPV4 jak i IPV6.
  3. Po wykonaniu tych czynności, połącz grupę Firewall z Twoją instancją.
firewall status
Akceptuj połączenia TCP tylko z 22, 80, 443
Link Firewall Group
Powiązanie reguły firewalla z nową instancją

10. Wpisz nazwę hosta i etykietę kliknij Deploy Now

server hostname label

Teraz zobaczysz instalację w postępie

Instance Installing

11. Przejdź do strony Nowa instancja

Skopiuj adres IP, nazwę użytkownika i hasło. Twój domyślny port to 22.

new instance info page

12. Wyłączenie logowania na hasło

Ze względów bezpieczeństwa zaleca się wyłączenie uwierzytelniania za pomocą hasła i zezwolenie na uwierzytelnianie oparte na kluczach.

  1. Edytuj plik konfiguracyjny nano /etc/ssh/sshd_config
  2. Znajdź (CTRL + W) i wyszukaj PasswordAuthentication
  3. Zmiana wartości z tak na nie
  4. Aby zapisać typ, CTRL + O
  5. Uruchom ponownie usługę SSH za pomocą polecenia sudo service ssh restart
disable password auth
Wyłączenie uwierzytelniania za pomocą hasła

Od następnego razu możesz używać SSH tylko przez klucz, jak pokazano na filmie.

Dla Linuxa lub Maca, użyj Terminala z poleceniem jak poniżej

ssh root@192.168.1.1 -p 22 -i id_rsa

Krok 13. Wyłączenie UFW

Kiedy wdrażasz nową instancję w VULTR, jest ona dostarczana z włączonym UFW (Uncomplicated Firewall), który blokuje wszystkie porty oprócz portu SSH 22. To może zwrócić ERR_CONNECTION_REFUSED Error w przeglądarce. Aby to naprawić, sugerowałbym utrzymanie UFW w stanie wyłączonym.

ufw disable

Teraz przyspieszę oryginalny proces wdrażania WordPress na stosie LAMP.

Część C. Wdrożenie WordPress na stosie LAMP.

1. Aktualizacja repozytoriów

Wpisz poniższe polecenie i naciśnij klawisz Enter

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

lub

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

Następnym razem zawsze używaj poniższego polecenia skrótu do aktualizacji.

./update

2. Zainstaluj MariaDB z zabezpieczeniami

Zaloguj się ponownie i wprowadź następujące polecenie

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

Odpowiedz na poniższe pytania

  • Enter current password for root (enter for none): Naciśnij klawisz Enter
  • Switch to unix_socket authentication [Y/n]: Wpisz n i naciśnij klawisz Enter.
  • Set root password? [Y/n]: Naciśnij klawisz Enter.
  • New password: Skopiuj silne hasło z Generatora haseł Dashlane. Aby wkleić hasło w konsoli SSH, kliknij prawym przyciskiem myszy i naciśnij klawisz Enter. Hasło nie będzie widoczne na ekranie.
  • Re-enter new password: Right-click and press the Enter key again.

Po pomyślnym ustawieniu hasła, zobaczysz

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

Należy również odpowiedzieć na następujące pytania.

  • Remove anonymous users? [Y/n]: Naciśnij klawisz Enter
  • Disallow root login remotely? [Y/n]: Naciśnij klawisz Enter
  • Remove test database and access to it? [Y/n]: Naciśnij klawisz Enter
  • Reload privilege tables now? [Y/n]: Naciśnij klawisz Enter

3. Utwórz nową bazę danych dla WordPress

Zaloguj się do MySQL, naciśnij klawisz enter, gdy zapyta o hasło.

mysql -u root -p

Utwórz nową bazę danych i przyznaj uprawnienia do korzystania z jej użytkownika z hasłem. To tutaj WordPress przechowuje wszystkie posty, strony, motywy, wtyczki itp. informacje.

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

Gdzie twój…
baza danych to wordpress
nazwa użytkownika to gulshan
hasło to 5pY8CKJxDRJEGQNkX7

Wskazówka: Rozważ użycie unikalnego poświadczenia logowania

4. Zainstaluj PHP 8.2, Apache2 i ustaw uprawnienia

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/

Poprawić konfigurację PHP

Większość wymyślnych motywów i pluginów wymaga wysokiej klasy konfiguracji PHP do uruchomienia. Dlatego powinniśmy wprowadzić te zmiany.

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. Zainstaluj certyfikat Wildcard Let’s Encrypt SSL

Utwórz plik cloudflare.ini wewnątrz katalogu /root/.secrets/

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

Dodaj poniższy kod i zapisz go używając CTRL+O i wyjdź używając CTRL+X

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

Znajdź swój e-mail Cloudflare i globalny klucz API w „Mój profil” > Tokeny API > Globalny klucz API

chmod 0400 /root/.secrets/cloudflare.ini

Zainstaluj Certbot i DNS Authenticator zgodnie z systemem operacyjnym i serwerem internetowym HTTP

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

Uzyskaj certyfikat Wildcard SSL

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

Ustaw automatyczne odnawianie przy użyciu zadania Cron

  • Typ crontab -e
  • Typ 1 dla edytora nano
  • Wpisz poniższe polecenie i zapisz
0 0 * * *  /etc/init.d/apache2 reload >/dev/null 2>&1

Odnowienie badania

certbot renew --dry-run

Aktywuj te przydatne moduły

a2enmod proxy_fcgi ssl http2 expires headers rewrite remoteip
systemctl restart apache2

6. Utwórz App Directory dla każdej witryny WordPress, którą chcesz zainstalować

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

Będzie to ścieżka do głównego dokumentu w pliku konfiguracyjnym Apache. Powodem utworzenia example.com wewnątrz www jest to, że każda witryna jest zorganizowana w ten sposób. Po drugie, utworzyłem katalog publiczny, aby trzymać tam wszystkie pliki podstawowe WordPressa, ale wp-config.php jeden poziom wyżej (/var/www/example.com/).

7. Tworzenie konfiguracji Apache2

Jest to ważne, gdy trzeba skonfigurować domenę, jak Apache2 powinien obsługiwać żądania HTTP.

Usuń pliki konfiguracyjne bloków domyślnych serwera 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

Teraz, Utwórz nowy blok serwera pliki konfiguracyjne. Musisz wykonać ten krok za każdym razem, gdy chcesz dodać nowy WordPress na tym samym serwerze.

Proszę zamienić example.com na własną domenę i nie zapomnieć zakończyć nazwy pliku konfiguracyjnego rozszerzeniem .conf. W przeciwnym razie nie będzie działać.

cd /etc/apache2/sites-available/
nano example.com.conf
  1. Zastąpić example.com własną domeną
  2. Wpisz poniższy kod i naciśnij ctrl+o, aby zapisać i ctrl+x, aby wyjść.
##############################################################
#                                                               
#  UWAGI: Kindly make search and replace of example.com to own domain.
#                                                                
##############################################################


# Zamierzamy wymusić HTTPS non-www.
# Jeśli chcesz HTTPS www proszę zachować https://www.example.com/ w ostatniej linii.
# W przeciwnym razie możesz napotkać problem pętli przekierowania.

<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
    
   # Zalecane dla użytkowników Cloudflare
   # RemoteIPHeader X-Forwarded-For
   
   # Ścieżka główna dokumentu (Zwróć uwagę na tę ścieżkę, aby uniknąć 404)
   DocumentRoot /var/www/example.com/public
   
   # Ścieżka logów to /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
   
   # Pozwól na użycie pliku .htaccess do nadpisania konfiguracji
   <Directory /var/www/example.com/public>
     Options FollowSymLinks
     AllowOverride All
     Require all granted
   </Directory>
   
   # Zablokuj wykonywanie PHP w katalogu Uploads
   <Directory /var/www/example.com/public/wp-content/uploads>
    <Files *.php>
      deny from all
    </Files>
   </Directory>
   
   # Zabezpiecz wp-config.php
   <files wp-config.php>
      order allow,deny
      deny from all
   </files>

  # HTTP Auth dla dodatkowego bezpieczeństwa
  # Jeśli chcesz HTTP Auth dla strony logowania WordPressa to rozważ odkomentowanie tego bloku kodu.
  # Jeśli to zrobisz, musisz wygenerować również plik .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>
   
   # Blokuj XML-RPC, aby zapobiec atakowi DDoS. 
   <Files xmlrpc.php>
      Order Deny,Allow
      Deny from all
   </Files>
   
   # Handle PHP execution
   <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.

Aby aktywować blok serwera, należy wpisać polecenie

Przed uruchomieniem poniższej komendy, proszę zamienić example.com na własną domenę.

a2ensite example.com.conf

Konfiguracja badania (opcjonalnie)

apache2 -t

Ponowne uruchomienie i aktualizacja

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

8. Zainstaluj pliki WordPress

Pobierz pliki WordPress w katalogu /var/www/example.com/public/ i ustaw uprawnienia.

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

Aby zaktualizować uprawnienia w przyszłości, użyj poniższej komendy. To ustawi www-data dla wszystkiego co znajduje się w katalogu /var/www/

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

9. Aktualizacja DNS

Jeśli hostujesz WordPress lokalnie, chcesz ominąć proxy lub chcesz wykonać migrację z zerowym przestojem, ten krok jest przydatny. Ja generalnie preferuję w przypadku Static WordPress Dev area. 😉

  • Istnieją dwa sposoby na wskazanie DNS. Jeśli migrujesz stronę do Vultr i chcesz najpierw przetestować ją lokalnie, wtedy edytuj swój plik hosts i wskaż go tam.

Dla Windows

  • Przejdź do właściwości C:\System32\drivers\hosts
  • Zmień uprawnienia „Security” na pełną kontrolę dla obecnej nazwy użytkownika
  • Teraz możesz swobodnie edytować plik hosts pod swoim użytkownikiem System i zapisać go.
# For same machine you can have localhost address else public IP
127.0.0.1 example.com
127.0.0.1 www.example.com

Przykład, tak to powinno wyglądać

Dla komputerów Mac lub Linux

Możesz edytować plik hosts za pomocą tego polecenia pod użytkownikiem sudo.

sudo nano /etc/hosts

Aktualizacja DNS za pomocą Cloudflare

  • Jeśli wszystko wygląda idealnie i chcesz, aby Twoja strona żyła, Zaloguj się do Cloudflare DNS i zaktualizuj nowe IP.
Record TypeNameValue
A@IPV4
AAAA@IPV6
CNAMEwwwexample.com

gdzie @ oznacza domenę główną example.com

9. Odwiedź swoją nazwę domeny, aby skonfigurować WordPress

Jeśli chcesz zachować domenę wersji non-www dla swojego WordPress to odwiedź wersję non-www inaczej www.

https://example.com
  • Podaj poświadczenie logowania do bazy danych, aby rozpocząć konfigurację WordPress
  • Uruchomić instalację
  • Wypełnij Podstawowe dane swojej nowej Witryny i Zainstaluj WordPress.
  • Zaloguj się do WordPress

Inne niezbędne rzeczy

  • Zwiększ pamięć Swap, aby poradzić sobie z nagłym obciążeniem
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

Wreszcie instalacja WordPress została zakończona.

Bardzo doceniam Twój cenny czas poświęcony na przeczytanie tego artykułu. Do zobaczenia w kolejnym tutorialu!

Dodaj komentarz