Wstęp
WordPress to niezwykle popularna technologia open source do tworzenia stron WWW i blogów w Internecie. Wykorzystywany jest przez 63% wszystkich stron internetowych korzystających z systemu zarządzania treścią (CMS). Strony WWW tworzone w WordPress stanowią 36% wszystkich stron internetowych, które są obecnie online.
Istnieje wiele różnych sposobów wdrożenia WordPressa, a niektóre sposoby konfiguracji są bardziej złożone niż inne. Ten poradnik jest przeznaczony dla tych, którzy chcą zainstalować i administrować instancją WordPress na serwerze VPS w chmurze za pomocą wiersza poleceń. Chociaż to podejście wymaga więcej pracy niż gotowa instalacja WordPressa, zapewnia administratorom większą kontrolę nad środowiskiem WordPress i pozwala hostować więcej niż jedną witrynę WWW z jednego serwera.
Ten poradnik będzie używał stosu LAMP (Linux, Apache, MySQL i PHP), który jest jedną z opcji dla architektury serwerowej obsługującej WordPress, zawierający system operacyjny Linux, serwer WWW Apache, bazę danych MySQL i język programowania PHP. Zainstalujemy i skonfigurujemy WordPressa przez LAMP stack na serwerze Linux Ubuntu 20.04.
Wymagania wstępne
- Ubuntu Server 20.04
- Użytkownik z uprawnieniami sudo innym niż root.
- W pełni zarejestrowana domena, w tym poradniku użyjemy twoja_domena jako przykładu.
- Skonfigurowane dwa rekordy DNS dla twojej domeny:
- Rekord A, w którym twoja_domena wskazuje na publiczny adres IP Twojego serwera.
- Rekord A z www.twoja_domena wskazujący na publiczny adres IP Twojego serwera.
Krok 1 — Instalacja Apache i konfiguracja podstawowej zapory sieciowej
Serwer WWW Apache jest jednym z najpopularniejszych serwerów WWW na świecie. Jest dobrze udokumentowany, ma aktywną społeczność użytkowników i był szeroko stosowany przez większość historii sieci WWW, co czyni go doskonałym wyborem do hostowania witryny internetowej.
Zacznij od aktualizacji pamięci podręcznej menedżera pakietów. Jeśli po raz pierwszy używasz sudo w tej sesji, zostaniesz poproszony o podanie hasła użytkownika, aby potwierdzić, że masz odpowiednie uprawnienia do zarządzania pakietami systemowymi za pomocą apt.
sudo apt update
Następnie zainstaluj Apache:
sudo apt install apache2
Zostaniesz również poproszony o potwierdzenie instalacji, naciskając Y, a następnie ENTER.
Po zakończeniu instalacji musisz dostosować ustawienia zapory, aby zezwolić na ruch HTTP. UFW ma różne profile aplikacji, które możesz wykorzystać, aby to osiągnąć. Aby wyświetlić listę wszystkich aktualnie dostępnych profili aplikacji UFW, możesz uruchomić:
sudo ufw app list
Zobaczysz następujące dane wyjściowe:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Co oznacza każdy z tych profili:
- Apache: ten profil otwiera tylko port 80 (normalny, niezaszyfrowany ruch sieciowy).
- Apache Full: ten profil otwiera zarówno port 80 (normalny, nieszyfrowany ruch sieciowy), jak i port 443 (ruch szyfrowany za pomocą TLS/SSL).
- Apache Secure: ten profil otwiera tylko port 443 (ruch szyfrowany TLS/SSL).
- OpenSSH: ten profil otwiera port 22 (połączenie z serwerem przez SSH)
Musimy się upewnić, że zapora zezwala na połączenia SSH, abyśmy mogli zalogować się ponownie następnym razem. Możemy zezwolić na te połączenia, wpisując:
sudo ufw allow OpenSSH
Zezwalamy na ruch HTTP i HTTPS:
sudo ufw allow 'Apache Full'
Następnie włączamy zaporę, wpisując:
sudo ufw enable
sudo ufw status
Status zapory będzie teraz wyglądał tak:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
Ruch na porcie 80 i 443 jest teraz dozwolony przez zaporę.
Możesz sprawdzić czy wszystko poszło zgodnie z planem odwiedzając publiczny adres IP twojego serwera w przeglądarce:
http://adres_ip_twojego_serwera
Zobaczysz domyślną stronę internetową Ubuntu 20.04 Apache, która jest dostępna w celach informacyjnych i testowych. Powinno to wyglądać mniej więcej tak:
Krok 2 — Instalacja MySQL
Teraz, gdy masz już uruchomiony serwer WWW, musisz zainstalować system bazy danych, aby móc przechowywać i zarządzać danymi dla swojej witryny. MySQL to popularny system zarządzania bazami danych używany w środowiskach PHP.
Ponownie użyj apt, aby pobrać i zainstalować oprogramowanie:
sudo apt install mysql-server
Po wyświetleniu monitu potwierdź instalację, wpisując Y, a następnie ENTER.
Po zakończeniu instalacji zaleca się uruchomienie skryptu bezpieczeństwa, który jest wstępnie zainstalowany z MySQL. Ten skrypt usunie niektóre niebezpieczne ustawienia domyślne i zablokuje dostęp do systemu bazy danych. Uruchom interaktywny skrypt, wpisując w terminalu:
sudo mysql_secure_installation
Pojawi się pytanie, czy chcesz skonfigurować VALIDATE PASSWORD PLUGIN. Odpowiedz Y na tak lub cokolwiek innego, aby kontynuować bez włączania.
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:
Jeśli odpowiesz „tak”, zostaniesz poproszony o wybranie poziomu weryfikacji hasła. Pamiętaj, że jeśli wpiszesz 2 jako najsilniejszy poziom, otrzymasz błędy przy próbie ustawienia dowolnego hasła, które nie zawiera cyfr, dużych i małych liter oraz znaków specjalnych lub które opiera się na powszechnych słowach słownikowych.
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Niezależnie od tego, czy zdecydujesz się skonfigurować VALIDATE PASSWORD PLUGIN, Twój serwer poprosi Cię o wybranie i potwierdzenie hasła dla użytkownika root MySQL. Nie należy tego mylić z rootem systemu. Użytkownik root bazy danych jest użytkownikiem administracyjnym z pełnymi uprawnieniami do systemu bazy danych. Mimo że domyślna metoda uwierzytelniania dla użytkownika root MySQL nie używa hasła, nawet jeśli jest ono ustawione, należy zdefiniować tutaj silne hasło jako dodatkowy środek bezpieczeństwa.
Jeśli włączyłeś sprawdzanie poprawności hasła, zostanie wyświetlona siła hasła dla właśnie wprowadzonego hasła root, a serwer zapyta, czy chcesz kontynuować z tym hasłem. Jeśli jesteś zadowolony z obecnego hasła, wpisz Y dla „tak” w monicie:
Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
W przypadku pozostałych pytań naciśnij Y i klawisz ENTER przy każdej podpowiedzi. To usunie niektórych anonimowych użytkowników i testową bazę danych, wyłączy zdalne logowanie roota i załaduje te nowe reguły, aby MySQL natychmiast respektował wprowadzone przez Ciebie zmiany.
Po zakończeniu sprawdź, czy możesz zalogować się do konsoli MySQL, wpisując:
sudo mysql
Spowoduje to połączenie z serwerem MySQL jako root użytkownika administracyjnej bazy danych. Powinieneś zobaczyć następujące dane wyjściowe:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 8.0.19-0ubuntu5 (Ubuntu)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Aby wyjść z konsoli MySQL, wpisz:
mysql> exit
Serwer MySQL jest teraz zainstalowany i zabezpieczony. Następnie zainstalujemy PHP, ostatni składnik stosu LAMP.
Krok 3 — Instalacja PHP
Zainstalowałeś Apache do obsługi treści i MySQL do przechowywania danych i zarządzania nimi. PHP to składnik naszej konfiguracji, który przetwarza kod w celu wyświetlenia zawartości dynamicznej użytkownikowi końcowemu. Oprócz pakietu php będziesz potrzebować php-mysql, moduł PHP, który umożliwia PHP komunikację z bazami danych opartymi na MySQL. Będziesz także potrzebował libapache2-mod-php, aby umożliwić Apache obsługę plików PHP. Podstawowe pakiety PHP zostaną automatycznie zainstalowane jako zależności.
Aby zainstalować te pakiety, wpisz w terminalu:
sudo apt install php libapache2-mod-php php-mysql
Po zakończeniu instalacji możesz uruchomić następujące polecenie, aby sprawdzić wersję PHP:
php -v
Wyjście:
PHP 7.4.3 (cli) (built: Jul 5 2020 15:13:35) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
W tym momencie LAMP stack jest w pełni zainstalowany, ale zanim będziesz mógł przetestować swoją konfigurację za pomocą skryptu PHP, najlepiej skonfigurować odpowiedni wirtualny host Apache do przechowywania plików i folderów Twojej witryny.
Krok 4 — Tworzenie wirtualnego hosta
Korzystając z serwera WWW Apache, możesz tworzyć wirtualne hosty, aby hermetyzować szczegóły konfiguracji i hostować więcej niż jedną domenę z jednego serwera. W tym przewodniku skonfigurujemy domenę o nazwie twoja_domena, ale powinieneś ją zastąpić własną nazwą domeny (np. abcd.pl).
Apache na Ubuntu 20.04 ma domyślnie włączony jeden blok serwera, który jest skonfigurowany do obsługi dokumentów z katalogu /var/www/html. Chociaż działa to dobrze w przypadku jednej witryny, może stać się niewygodne, jeśli hostujesz wiele witryn. Zamiast modyfikować /var/www/html, utworzymy strukturę katalogów w /var/www dla witryny twoja_domena, pozostawiając /var/www/html jako domyślny katalog do obsługi, jeśli żądanie klienta nie pasuje do innych witryn.
Utwórz katalog dla twoja_domena w następujący sposób:
sudo mkdir /var/www/twoja_domena
Następnie przypisz własność katalogu za pomocą zmiennej środowiskowej $USER, która będzie odwoływać się do bieżącego użytkownika systemu:
sudo chown -R $USER:$USER /var/www/twoja_domena
Następnie otwórz nowy plik konfiguracyjny w katalogu witryn Apache za pomocą preferowanego edytora wiersza poleceń. Tutaj użyjemy nano:
sudo nano /etc/apache2/sites-available/twoja_domena.conf
Spowoduje to utworzenie nowego pustego pliku. Wklej następującą konfigurację do tego pliku:
<VirtualHost *:80>
ServerName twoja_domena
ServerAlias www.twoja_domena
ServerAdmin webmaster@localhost
DocumentRoot /var/www/twoja_domena
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Zapisz i zamknij plik, gdy skończysz. Jeśli używasz nano, możesz to zrobić, naciskając CTRL + X, a następnie Y i ENTER.
W tej konfiguracji VirtualHost mówimy Apache, aby obsługiwał twoja_domena przy użyciu /var/www/twoja_domena jako katalogu głównego WWW.
Możesz teraz użyć a2ensite, aby włączyć nowego wirtualnego hosta:
sudo a2ensite twoja_domena
Możesz chcieć wyłączyć domyślną witrynę instalowaną z Apache. Jest to wymagane, jeśli nie używasz niestandardowej nazwy domeny, ponieważ w tym przypadku domyślna konfiguracja Apache zastąpiłaby Twój wirtualny host. Aby wyłączyć domyślną witrynę Apache, wpisz:
sudo a2dissite 000-default
Aby upewnić się, że plik konfiguracyjny nie zawiera błędów składniowych, uruchom:
sudo apache2ctl configtest
Na koniec przeładuj Apache, aby te zmiany zaczęły obowiązywać:
sudo systemctl reload apache2
Twoja nowa witryna jest teraz aktywna, ale katalog główny /var/www/twoja_domena jest nadal pusty. Utwórz plik index.html w tej lokalizacji, abyśmy mogli sprawdzić, czy wirtualny host działa zgodnie z oczekiwaniami:
nano /var/www/twoja_domena/index.html
Zapisz w tym pliku następującą zawartość:
<html>
<head>
<title>twoja_domena WWW</title>
</head>
<body>
<h1>Hello World!</h1>
<p>To jest strona startowa <strong>twoja_domena</strong>.</p>
</body>
</html>
Teraz przejdź do przeglądarki i ponownie uzyskaj dostęp do nazwy domeny lub adresu IP serwera:
http://towja_domena_lub_IP
Zobaczysz stronę taką jak ta:
Jeśli zobaczysz tę stronę, oznacza to, że Twój wirtualny host Apache działa zgodnie z oczekiwaniami.
Możesz pozostawić ten plik jako tymczasową stronę docelową dla swojej aplikacji, dopóki nie skonfigurujesz pliku index.php, który go zastąpi. Gdy to zrobisz, pamiętaj, aby usunąć lub zmienić nazwę pliku index.html z katalogu głównego dokumentu, ponieważ domyślnie miałby on pierwszeństwo przed plikiem index.php.
Uwaga na temat DirectoryIndex na Apache
Przy domyślnych ustawieniach DirectoryIndex w Apache plik o nazwie index.html zawsze będzie miał pierwszeństwo przed plikiem index.php. Jest to przydatne przy konfigurowaniu stron tymczasowych w aplikacjach PHP poprzez utworzenie tymczasowego pliku index.html zawierającego informacyjną wiadomość dla odwiedzających. Ponieważ ta strona będzie miała pierwszeństwo przed stroną index.php, stanie się stroną docelową aplikacji. Po zakończeniu przerwy działania strony plik index.html jest zmieniany lub usuwany z katalogu głównego dokumentu, przywracając normalną stronę aplikacji.
Jeśli chcesz zmienić to zachowanie, musisz edytować plik /etc/apache2/mods-enabled/dir.conf i zmienić kolejność, w jakiej plik index.php jest wymieniony w dyrektywie DirectoryIndex:
sudo nano /etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
Po zapisaniu i zamknięciu pliku musisz ponownie załadować Apache, aby zmiany zaczęły obowiązywać:
sudo systemctl reload apache2
W następnym kroku stworzymy skrypt PHP, który sprawdzi, czy PHP jest poprawnie zainstalowany i skonfigurowany.
Krok 5 — Testowanie działania PHP na serwerze WWW
Teraz, gdy masz niestandardową lokalizację do hostowania plików i folderów Twojej witryny, utworzymy skrypt testowy PHP, aby potwierdzić, że Apache jest w stanie obsługiwać i przetwarzać żądania dotyczące plików PHP.
Utwórz nowy plik o nazwie info.php w niestandardowym folderze głównym sieci:
sudo nano /var/www/twoja_domena/info.php
Spowoduje to otwarcie pustego pliku. Dodaj następujący tekst, który jest kodem PHP, wewnątrz pliku:
<?php
phpinfo();
Po zakończeniu zapisz i zamknij plik.
Aby przetestować skrypt, uruchom przeglądarkę internetową i wpisz nazwę skonfigurowanej domeny lub adres IP serwera z dopiskiem info.php:
http://twoja_domena_lub_IP/info.php
Zobaczysz stronę podobną do tej:
Ta strona zawiera informacje o Twoim serwerze z perspektywy PHP. Jest to przydatne do debugowania i upewnienia się, że ustawienia są stosowane poprawnie.
Jeśli widzisz tę stronę w przeglądarce, oznacza to, że instalacja PHP działa zgodnie z oczekiwaniami.
Po sprawdzeniu odpowiednich informacji o serwerze PHP na tej stronie najlepiej usunąć utworzony plik, ponieważ zawiera on poufne informacje o środowisku PHP i serwerze Ubuntu. Możesz użyć rm, aby to zrobić:
sudo rm /var/www/your_domain/info.php
Zawsze możesz odtworzyć tę stronę, jeśli będziesz potrzebować później ponownie uzyskać dostęp do tych informacji.
Krok 6 — Instalacja Certbota
Aby uzyskać certyfikat SSL z Let’s Encrypt, musimy najpierw zainstalować oprogramowanie Certbot. Użyjemy do tego domyślnych repozytoriów pakietów Ubuntu.
Potrzebujemy dwóch pakietów: certbot i python3-certbot-apache. Ten ostatni to wtyczka integrująca Certbota z Apache, umożliwiająca zautomatyzowanie uzyskiwania certyfikatu i konfigurowania HTTPS na serwerze WWW za pomocą jednego polecenia.
sudo apt install certbot python3-certbot-apache
Zostaniesz poproszony o potwierdzenie instalacji, naciskając Y, a następnie ENTER.
Krok 7 — Uzyskanie certyfikatu SSL
Certbot zapewnia różne sposoby uzyskiwania certyfikatów SSL za pomocą wtyczek. Wtyczka Apache zajmie się ponowną konfiguracją Apache i przeładowaniem konfiguracji w razie potrzeby. Aby skorzystać z tej wtyczki, wpisz:
sudo certbot --apache
Ten skrypt poprosi Cię o odpowiedź na szereg pytań w celu skonfigurowania Twojego certyfikatu SSL. Najpierw poprosi Cię o poprawny adres e-mail. Ten e-mail będzie używany do powiadomień o odnowieniu i bezpieczeństwa:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter \'c\' to
cancel): ty@twoja_domena
Po podaniu prawidłowego adresu e-mail naciśnij ENTER, aby przejść do następnego kroku. Zostaniesz poproszony o potwierdzenie, czy zgadzasz się z warunkami korzystania z usługi Let’s Encrypt. Możesz potwierdzić, naciskając A, a następnie ENTER:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
Następnie zostaniesz zapytany, czy chcesz udostępnić swój adres e-mail firmie Electronic Frontier Foundation, aby otrzymywać wiadomości i inne informacje. Jeśli nie chcesz subskrybować ich zawartości, wpisz N. W przeciwnym razie wpisz Y. Następnie naciśnij ENTER, aby przejść do następnego kroku.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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: N
Następny krok poprosi Cię o poinformowanie Certbota, dla których domen chcesz aktywować HTTPS. Wymienione nazwy domen są automatycznie uzyskiwane z konfiguracji hosta wirtualnego Apache. Jeśli chcesz włączyć HTTPS dla wszystkich wymienionych nazw domen (zalecane), możesz pozostawić pusty monit i nacisnąć ENTER, aby kontynuować. W przeciwnym razie wybierz domeny, dla których chcesz włączyć HTTPS, podając każdy odpowiedni numer, oddzielony przecinkami i/lub spacjami, a następnie naciśnij ENTER.
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: twoja_domena
2: www.twoja_domena
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter \'c\' to cancel):
Zobaczysz następujące dane wyjściowe:
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for twoja_domena
http-01 challenge for www.twoja_domena
Enabled Apache rewrite module
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/twoja_domena-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/twoja_domena-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/twoja_domena-le-ssl.conf
Deploying Certificate to VirtualHost /etc/apache2/sites-available/twoja_domena-le-ssl.conf
Następnie zostaniesz poproszony o wybranie, czy chcesz, aby ruch HTTP był przekierowywany na HTTPS. W praktyce oznacza to, że gdy ktoś odwiedzi Twoją witrynę przez kanały nieszyfrowane (HTTP), zostanie automatycznie przekierowany na adres HTTPS Twojej witryny. Wybierz 2, aby włączyć przekierowanie, lub 1, jeśli chcesz zachować zarówno HTTP, jak i HTTPS jako oddzielne metody dostępu do Twojej witryny.
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
Po tym kroku konfiguracja Certbota jest zakończona, a Ty otrzymasz końcowe uwagi dotyczące Twojego nowego certyfikatu, gdzie zlokalizować wygenerowane pliki oraz jak przetestować konfigurację za pomocą zewnętrznego narzędzia analizującego autentyczność Twojego certyfikatu:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://twoja_domena and
https://www.twoja_domena
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=twoja_domena
https://www.ssllabs.com/ssltest/analyze.html?d=www.twoja_domena
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/twoja_domena/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/twoja_domena/privkey.pem
Your cert will expire on 2020-07-27. 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
Certyfikat jest teraz zainstalowany i załadowany do konfiguracji Apache. Spróbuj ponownie załadować swoją witrynę za pomocą https:// i zwróć uwagę na wskaźnik bezpieczeństwa przeglądarki. Powinno to wskazywać, że Twoja witryna jest odpowiednio zabezpieczona, zazwyczaj poprzez umieszczenie ikony kłódki na pasku adresu.
W następnym i ostatnim kroku przetestujemy funkcję automatycznego odnawiania Certbota, która gwarantuje, że Twój certyfikat zostanie automatycznie odnowiony przed datą wygaśnięcia.
Krok 8 — Weryfikacja automatycznego odnawiania Certbota
Certyfikaty Let’s Encrypt są ważne tylko przez dziewięćdziesiąt dni. Ma to zachęcić użytkowników do zautomatyzowania procesu odnawiania certyfikatów, a także zapewnić, że niewłaściwie używane certyfikaty lub skradzione klucze wygasną wcześniej niż później.
Zainstalowany pakiet certbot zajmuje się odnawianiem, dołączając skrypt odnawiania do /etc/cron.d, który jest zarządzany przez usługę systemctl o nazwie certbot.timer. Ten skrypt jest uruchamiany dwa razy dziennie i automatycznie odnawia każdy certyfikat w ciągu trzydziestu dni od wygaśnięcia.
Aby sprawdzić stan tej usługi i upewnić się, że jest aktywna i uruchomiona, możesz użyć:
sudo systemctl status certbot.timer
Otrzymasz dane wyjściowe podobne do tego:
● certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Tue 2020-04-28 17:57:48 UTC; 17h ago
Trigger: Wed 2020-04-29 23:50:31 UTC; 12h left
Triggers: ● certbot.service
Apr 28 17:57:48 fine-turtle systemd[1]: Started Run certbot twice daily.
Aby przetestować proces odnawiania, możesz wykonać test na sucho za pomocą certbot:
sudo certbot renew --dry-run
Jeśli nie widzisz żadnych błędów, wszystko gotowe. W razie potrzeby Certbot odnowi Twoje certyfikaty i ponownie załaduje Apache, aby wprowadzić zmiany. Jeśli automatyczny proces odnawiania kiedykolwiek się nie powiedzie, Let’s Encrypt wyśle wiadomość na podany przez Ciebie adres e-mail, ostrzegając Cię, gdy Twój certyfikat wkrótce wygaśnie.
Krok 9 — Tworzenie bazy danych MySQL i użytkownika dla WordPress
WordPress używa MySQL do zarządzania i przechowywania informacji o witrynie i użytkownikach. Mamy już zainstalowany MySQL, ale musimy stworzyć bazę danych i użytkownika dla WordPressa.
Aby rozpocząć, zaloguj się na konto root (administracyjne) MySQL, wpisując to polecenie (zauważ, że nie jest to użytkownik root twojego serwera):
sudo mysql -u root
W ramach bazy danych możemy stworzyć ekskluzywną bazę danych, którą WordPress będzie kontrolować. Możesz nazwać to jak chcesz, ale w tym przewodniku będziemy używać nazwy wordpress. Utwórz bazę danych dla WordPress, wpisując:
mysql> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Uwaga: Każda instrukcja MySQL musi kończyć się średnikiem (;). Sprawdź, czy jest to obecne, jeśli napotkasz jakiekolwiek problemy.
Następnie utworzymy osobne konto użytkownika MySQL, którego będziemy używać wyłącznie do obsługi naszej nowej bazy danych. Tworzenie konkretnych baz danych i kont może nas wesprzeć z punktu widzenia zarządzania i bezpieczeństwa. W tym przewodniku użyjemy nazwy wordpressuser, ale możesz użyć dowolnej nazwy, która jest dla Ciebie odpowiednia.
Zamierzamy utworzyć to konto, ustawić hasło i przyznać dostęp do utworzonej przez nas bazy danych. Możemy to zrobić, wpisując następujące polecenie. Pamiętaj, aby wybrać tutaj silne hasło dla użytkownika bazy danych, gdzie mamy ’password’:
mysql> CREATE USER 'wordpressuser'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
Następnie poinformuj bazę danych, że użytkownik wordpressuser powinien mieć pełny dostęp do utworzonej przez nas bazy danych:
mysql> GRANT ALL ON wordpress.* TO 'wordpressuser'@'%';
Masz teraz bazę danych i konto użytkownika, każde stworzone specjalnie dla WordPressa. Musimy odświeżyć uprawnienia, aby bieżąca instancja MySQL wiedziała o ostatnich zmianach, które wprowadziliśmy:
mysql> FLUSH PRIVILEGES;
Wyjdź z MySQL, wpisując:
mysql> EXIT;
W następnym kroku położymy fundamenty pod wtyczki WordPress, pobierając rozszerzenia PHP na nasz serwer.
Krok 10 — Instalacja dodatkowych rozszerzeń PHP
Konfigurując nasz stos LAMP, potrzebowaliśmy jedynie bardzo minimalnego zestawu rozszerzeń, aby PHP komunikował się z MySQL. WordPress i wiele jego wtyczek wykorzystuje dodatkowe rozszerzenia PHP.
Możemy pobrać i zainstalować niektóre z najpopularniejszych rozszerzeń PHP do użytku z WordPress, wpisując:
sudo apt update
sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
Położy to podwaliny pod instalację dodatkowych wtyczek w naszej witrynie WordPress.
Uwaga: Każda wtyczka WordPress ma swój własny zestaw wymagań. Niektóre mogą wymagać zainstalowania dodatkowych pakietów PHP. Sprawdź dokumentację wtyczki, aby poznać jej wymagania dotyczące PHP. Jeśli są dostępne, można je zainstalować za pomocą apt, jak pokazano powyżej.
Aby załadować te nowe rozszerzenia, będziemy musieli ponownie uruchomić Apache, w następnej sekcji będziemy robić więcej konfiguracji na Apache, więc możesz poczekać do tego czasu lub ponownie uruchomić teraz, aby zakończyć proces rozszerzenia PHP.
sudo systemctl restart apache2
Krok 11 — Dostosowanie konfiguracji Apache, aby umożliwić nadpisywanie i przepisywanie plików .htaccess
Następnie wprowadzimy kilka drobnych zmian w naszej konfiguracji Apache. Zgodnie z wykonanymi wcześniej krokami plik konfiguracyjny witryny powinien znajdować się w katalogu /etc/apache2/sites-available/.
Użyjemy tutaj /etc/apache2/sites-available/twoja_domena.conf jako przykładu. Dodatkowo użyjemy /var/www/twoja_domena jako katalogu głównego naszej instalacji WordPressa.
Po zidentyfikowaniu naszych ścieżek możemy przejść do pracy z .htaccess, aby Apache mógł obsługiwać zmiany konfiguracji na podstawie katalogu.
Włączanie nadpisań .htaccess
Obecnie korzystanie z plików .htaccess jest wyłączone. WordPress i wiele wtyczek WordPress używa tych plików w znacznym stopniu do wprowadzania zmian w zachowaniu serwera WWW w katalogach.
Otwórz plik konfiguracyjny Apache dla swojej witryny za pomocą edytora tekstu, takiego jak nano:
sudo nano /etc/apache2/sites-available/twoja_domena.conf
Aby zezwolić na pliki .htaccess, musimy ustawić dyrektywę AllowOverride w bloku Directory wskazującym na nasz katalog główny. Dodaj następujący blok tekstu wewnątrz bloku VirtualHost w pliku konfiguracyjnym, upewniając się, że używasz prawidłowego katalogu:
<Directory /var/www/twoja_domena/>
AllowOverride All
</Directory>
Gotowy plik powinien wyglądać tak:
<VirtualHost *:80>
<Directory /var/www/twoja_domena/>
AllowOverride All
</Directory>
ServerName twoja_domena
ServerAlias www.twoja_domena
ServerAdmin webmaster@localhost
DocumentRoot /var/www/twoja_domena
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =twoja_domena [OR]
RewriteCond %{SERVER_NAME} =www.twoja_domena
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
Po zakończeniu zapisz i zamknij plik. W nano możesz to zrobić, naciskając jednocześnie CTRL i X, następnie Y, a następnie ENTER.
Robimy to samo w pliku konfiguracyjnym dla połączenia HTTPS:
sudo nano /etc/apache2/sites-available/twoja_domena-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
<Directory /var/www/twoja_domena/>
AllowOverride All
</Directory>
ServerName twoja_domena
ServerAlias www.towja_domena
ServerAdmin webmaster@localhost
DocumentRoot /var/www/twoja_domena
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/twoja_domena/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/twoja_domena/privkey.pem
</VirtualHost>
</IfModule>
Po zakończeniu zapisz i zamknij plik. W nano możesz to zrobić, naciskając jednocześnie CTRL i X, następnie Y, a następnie ENTER.
Następnie możemy włączyć mod_rewrite, abyśmy mogli korzystać z funkcji permalink WordPress:
sudo a2enmod rewrite
Dzięki temu możesz mieć bardziej czytelne dla człowieka linki do swoich postów.
Zanim zaimplementujemy wprowadzone przez nas zmiany, sprawdź, czy nie popełniliśmy żadnych błędów składniowych, uruchamiając następującą komendę:
sudo apache2ctl configtest
Możesz otrzymać dane wyjściowe takie jak:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the \ServerName\ directive globally to suppress this message
Syntax OK
Jeśli chcesz pominąć górną linię, po prostu dodaj dyrektywę ServerName do głównego (globalnego) pliku konfiguracyjnego Apache w /etc/apache2/apache2.conf. ServerName może być domeną lub adresem IP Twojego serwera. Jest to jednak tylko wiadomość i nie wpływa na funkcjonalność Twojej witryny. Tak długo, jak dane wyjściowe zawierają Syntax OK, możesz kontynuować.
Uruchom ponownie Apache, aby wprowadzić zmiany. Pamiętaj, aby ponownie uruchomić teraz, nawet jeśli uruchomiłeś ponownie wcześniej w tym samouczku.
sudo systemctl restart apache2
Następnie pobierzemy i skonfigurujemy WordPress.
Krok 12 — Pobieranie WordPressa
Teraz, gdy nasze oprogramowanie serwerowe jest skonfigurowane, możemy pobrać i skonfigurować WordPress. W szczególności ze względów bezpieczeństwa zawsze zaleca się pobieranie najnowszej wersji WordPressa z ich witryny.
Przejdź do katalogu z możliwością zapisu (zalecam tymczasowy, taki jak /tmp) i pobierz skompresowaną wersję.
cd /tmp
curl -O https://wordpress.org/latest.tar.gz
Wyodrębnij skompresowany plik, aby utworzyć strukturę katalogów WordPress:
tar xzvf latest.tar.gz
Za chwilę przeniesiemy te pliki do naszego katalogu głównego dokumentów. Zanim to zrobimy, możemy dodać atrapę pliku .htaccess, aby później był on dostępny dla WordPressa.
Utwórz plik, wpisując:
touch /tmp/wordpress/.htaccess
Skopiujemy również przykładowy plik konfiguracyjny do nazwy pliku odczytywanej przez WordPressa:
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
Możemy również utworzyć katalog aktualizacji, aby WordPress nie napotkał problemów z uprawnieniami podczas próby zrobienia tego samodzielnie po aktualizacji oprogramowania:
mkdir /tmp/wordpress/wp-content/upgrade
Teraz możemy skopiować całą zawartość katalogu do naszego głównego dokumentu. Używamy kropki na końcu naszego katalogu źródłowego, aby wskazać, że wszystko w katalogu powinno zostać skopiowane, w tym ukryte pliki (takie jak utworzony przez nas plik .htaccess):
sudo cp -a /tmp/wordpress/. /var/www/twoja_domena
Upewnij się, że zamieniłeś katalog /var/www/twoja_domena na katalog, który ustawiłeś na swoim serwerze.
Krok 13 — Konfiguracja katalogu WordPress
Zanim przeprowadzimy konfigurację internetowego WordPressa, musimy dostosować niektóre elementy w naszym katalogu WordPress.
Ważnym krokiem, który musimy wykonać, jest ustawienie rozsądnych uprawnień do plików i własności.
Zaczniemy od przekazania własności wszystkich plików użytkownikowi i grupie www-data. Jest to użytkownik, na którym działa serwer WWW Apache, a Apache będzie musiał odczytywać i zapisywać pliki WordPress, aby obsługiwać witrynę i przeprowadzać automatyczne aktualizacje.
Zaktualizuj własność za pomocą polecenia chown, które umożliwia modyfikowanie własności pliku. Pamiętaj, aby wskazać odpowiedni katalog serwera.
sudo chown -R www-data:www-data /var/www/twoja_domena
Następnie uruchomimy dwa polecenia find, aby ustawić prawidłowe uprawnienia do katalogów i plików WordPress:
sudo find /var/www/twoja_domena/ -type d -exec chmod 750 {} \\;
sudo find /var/www/twoja_domena/ -type f -exec chmod 640 {} \\;
Te uprawnienia powinny zapewnić Ci efektywną pracę z WordPress, ale pamiętaj, że niektóre wtyczki i procedury mogą wymagać dodatkowych poprawek.
Teraz musimy wprowadzić kilka zmian w głównym pliku konfiguracyjnym WordPressa.
Kiedy otworzymy plik, naszym pierwszym zadaniem będzie dostosowanie niektórych tajnych kluczy, aby zapewnić poziom bezpieczeństwa naszej instalacji. WordPress zapewnia bezpieczny generator tych wartości, dzięki czemu nie musisz samodzielnie próbować wymyślać dobrych wartości. Są one używane tylko wewnętrznie, więc nie zaszkodzi użyteczności posiadania tutaj złożonych, bezpiecznych wartości.
Aby pobrać bezpieczne wartości z generatora tajnych kluczy WordPress, wpisz:
curl -s https://api.wordpress.org/secret-key/1.1/salt/
Otrzymasz unikalne wartości, które przypominają dane wyjściowe podobne do poniższego bloku:
Uwaga! Ważne jest, aby za każdym razem pobierać unikalne wartości. NIE kopiuj poniższych wartości!
define('AUTH_KEY', '1jl/vqfs<XhdXoAPz9 NIE KOPIUJ TYCH WARTOŚCI c_j{iwqD^<+c9.k<J@4H');
define('SECURE_AUTH_KEY', 'E2N-h2]Dcvp+aS/p7X NIE KOPIUJ TYCH WARTOŚCI {Ka(f;rv?Pxf})CgLi-3');
define('LOGGED_IN_KEY', 'W(50,{W^,OPB%PB<JF NIE KOPIUJ TYCH WARTOŚCI 2;y&,2m%3]R6DUth[;88');
define('NONCE_KEY', 'll,4UC)7ua+8<!4VM+ NIE KOPIUJ TYCH WARTOŚCI #`DXF+[$atzM7 o^-C7g');
define('AUTH_SALT', 'koMrurzOA+|L_lG}kf NIE KOPIUJ TYCH WARTOŚCI 07VC*Lj*lD&?3w!BT#-');
define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY NIE KOPIUJ TYCH WARTOŚCI C-?y+K0DK_+F|0h{!_xY');
define('LOGGED_IN_SALT', 'i^/G2W7!-1H2OQ+t$3 NIE KOPIUJ TYCH WARTOŚCI t6**bRVFSD[Hi])-qS`|');
define('NONCE_SALT', 'Q6]U:K?j4L%Z]}h^q7 NIE KOPIUJ TYCH WARTOSCI 1% ^qUswWgn+6&xqHN&%');
Są to wiersze konfiguracyjne, które możemy wkleić bezpośrednio do naszego pliku konfiguracyjnego, aby ustawić bezpieczne klucze. Skopiuj otrzymane dane wyjściowe.
Następnie otwórz plik konfiguracyjny WordPress:
sudo nano /var/www/twoja_domena/wp-config.php
Znajdź sekcję zawierającą przykładowe wartości tych ustawień:
. . .
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
. . .
Usuń te wiersze i wklej wartości skopiowane z wiersza poleceń:
define('AUTH_KEY', 'WARTOŚCI SKOPIOWANE Z LINII POLECEŃ');
define('SECURE_AUTH_KEY', 'WARTOŚCI SKOPIOWANE Z LINII POLECEŃ');
define('LOGGED_IN_KEY', 'WARTOŚCI SKOPIOWANE Z LINII POLECEŃ');
define('NONCE_KEY', 'WARTOŚCI SKOPIOWANE Z LINII POLECEŃ');
define('AUTH_SALT', 'WARTOŚCI SKOPIOWANE Z LINII POLECEŃ');
define('SECURE_AUTH_SALT', 'WARTOŚCI SKOPIOWANE Z LINII POLECEŃ');
define('LOGGED_IN_SALT', 'WARTOŚCI SKOPIOWANE Z LINII POLECEŃ');
define('NONCE_SALT', 'WARTOŚCI SKOPIOWANE Z LINII POLECEŃ');
Następnie zmodyfikujemy niektóre ustawienia połączenia z bazą danych na początku pliku. Musisz dostosować nazwę bazy danych, użytkownika bazy danych i powiązane hasło skonfigurowane w MySQL.
Inną zmianą, którą musimy wprowadzić, jest ustawienie metody, której WordPress powinien używać do zapisywania w systemie plików. Ponieważ daliśmy serwerowi uprawnienia do zapisywania tam, gdzie musi, możemy jawnie ustawić metodę systemu plików na „bezpośrednią”. Nieustawienie tego z naszymi obecnymi ustawieniami spowoduje, że WordPress poprosi o podanie danych logowania FTP, gdy wykonamy pewne czynności.
To ustawienie można dodać poniżej ustawień połączenia z bazą danych lub w dowolnym innym miejscu pliku:
. . .
// ** 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', 'wordpressuser' );
/** MySQL database password */
define( 'DB_PASSWORD', 'password' );
/** MySQL hostname */
define( 'DB_HOST', 'localhost' );
/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );
/** The Database Collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );
. . .
define('FS_METHOD', 'direct');
Zapisz i zamknij plik, gdy skończysz.
Krok 14 — Zakończenie instalacji przez przeglądarkę internetową
Teraz, gdy konfiguracja serwera jest zakończona, możemy dokończyć instalację za pośrednictwem przeglądarki internetowej.
W przeglądarce internetowej przejdź do nazwy domeny serwera lub publicznego adresu IP:
https://twoja_domena_lub_IP
Następnie dojdziesz do głównej strony konfiguracji.
Wybierz nazwę swojej witryny WordPress i nazwę użytkownika. Zaleca się wybranie czegoś unikalnego i unikanie popularnych nazw użytkownika, takich jak „admin” ze względów bezpieczeństwa. Silne hasło jest generowane automatycznie. Zapisz to hasło lub wybierz alternatywne silne hasło.
Wpisz swój adres e-mail i zdecyduj, czy chcesz zniechęcać wyszukiwarki do indeksowania Twojej witryny:
Gdy klikniesz dalej, zostaniesz przeniesiony na stronę z prośbą o zalogowanie się.
Po zalogowaniu zostaniesz przeniesiony do pulpitu administracyjnego WordPress.
W tym momencie możesz zacząć projektować swoją witrynę WordPress! Jeśli po raz pierwszy korzystasz z WordPressa, zapoznaj się trochę z interfejsem, aby zapoznać się z nowym CMS.
Zakończenie
Gratulacje, WordPress jest już zainstalowany i gotowy do użycia!
W tym momencie możesz zacząć robić następujące rzeczy:
- Wybierz ustawienia bezpośrednich odnośników dla postów i stron WordPress, które można znaleźć w Ustawienia > Bezpośrednie odnośniki.
- Wybierz nowy motyw w Wygląd > Motywy.
- Zainstaluj nowe wtyczki, aby zwiększyć funkcjonalność witryny w sekcji Wtyczki> Dodaj nową.
- Jeśli zamierzasz współpracować z innymi, możesz teraz dodać dodatkowych użytkowników w sekcji Użytkownicy > Dodaj nowego.