Wordpress na single VM Ubuntu oraz VM MySQL (notPaaS) - cz.1

Pokaże Wam jak w kilku krokach przygotować prostą konfigurację umożliwiającą uruchomić bezpieczne środowisko Wordpress. Baza danych MySQL będzie w sieci prywatnej z której można tylko połączyć się z serwera Frontendowego.

Diagram_bez_tytulu_865174

Tworzymy VNet:

08_407348

Dodajemy prywatny subnet:

46_463330

Tworzymy dwie Network security groups (NSG):

Publiczna z wejściem na port 22,80,443 dla subnetu publicznego:

34_575905

Dodajemy reguły z wejściem na świat na port 22,80,443:

19_320610

Analogicznie port 22 (zalecam aby podać własny adres IP aby połączenie SSH było tylko z Twojego komputera).

Pamietaj aby połączyć reguły z odpowiedniem subnetem:

46_411453

Następnie tworzymy tak samo dla subnetu prywatnego, ale z portami 22,3306 oraz source ustawiony IP sieci public. Tak aby tylko subnet publiczny mogł się połączyć z subnetem prywatnym:

Najpierw ustaw reguł blokującą wszystkich wszędzie z piorytetem np. 1000. Im mniejszy priorytet tym wazniejsze reguł. Następnie 22 i 3306:

05_336412

Pamietaj, że takim zapisem NSG blokujesz możliwość działania Load Balancera. Natomiast moim założeniem jest jedna instancja z DB. Jeżeli chcesz móc wstawić LB - odblokuj źródło jego.

Mamy gotową sieć :)

 

Tworzymy Storage Account (SA)

Będzie to nasz magazyn logów, a także poźniej blob danych dla WP.

Na tą chwilę możesz udostępnić storage do All networks.

18_478767

Uruchamiamy VM z Ubuntu dla Wordpress:

Pierwszy VM, z najbardziej standardowymi ustawieniami.

38_309902

56_661423

22_751482

Takimi ustawieniami utworzymy czystą instancję obrazu Ubuntu 16 LTS.

Podłączy się do instancji za pomocą konsoli ssh lub putty. Tego wyjaśniać nie będę, skorzystaj tylko z loginu i hasła tego którego użyłeś przy konfiguracji. Po zalogowaniu zobaczysz:

31_-_azureuser_FrontWP_664837

Poniżej użyj tych komend aby stworzyć środowisko z apache2 i php. Dodatkowo daje listę komend do nadania uprawnień dla użytkownika azureuser do edycji i modyfikacji plików bez konieczności udziału konta root

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y apache2 php libapache2-mod-php php-mcrypt php-mysql mysql-client
sudo apache2ctl configtest
sudo service apache2 restart
sudo chgrp -R www-data /var/www/html
sudo find /var/www/html -type d -exec chmod g+rx {} +
sudo find /var/www/html -type f -exec chmod g+r {} +
sudo chown -R azureuser /var/www/html/ 
sudo find /var/www/html -type d -exec chmod u+rwx {} +
sudo find /var/www/html -type f -exec chmod u+rw {} +
sudo find /var/www/html -type d -exec chmod g+s {} +
echo "<?php phpinfo();" > /var/www/html/phpinfo.php

Od tej pory, jak wejdziesz na adres publiczny IP: http://xxx.xxx.xxx.xxx/phpinfo.php zobaczysz stronę:

16_781027

Wdrożenie aplikacji Wordpress:

Aby przygotować Wordpressa do instalacji wykonaj:

wget https://pl.wordpress.org/wordpress-4.9.8-pl_PL.tar.gz
tar -xvzf wordpress-4.9.8-pl_PL.tar.gz
cd wordpress/
cp -r * /var/www/html/
cd /var/www/html/
chmod -R 777 wp-content
rm index.html

Po takiej czynności od tej pory, pod Twoim adresem publiczym IP zobaczysz witrynę WP:

04_669990

Na tą chwilę jeszcze nie mamy, gotowej bazy danych MySQL. To nie możemy dokończyć instalacji. Zapraszam dalej...

Instancja VM z MySQL

Tą instancję zrobimy trochę inaczej. Po pierwsze Security Group wykorzystaj taką samą jak w subnecie Private. Po drugie, nie musisz przydzielać publicznego adresu IP, ponieważ nie chcemy aby do niej był dostęp z zewnątrz. Łączyć się będziemy przez maszynę Frontend po adresie wewnętrznym. Poniżej instrukcja:

21_212835

29_854521

Po krótkiej chwili, będziemy mieli nową maszynę. Sprawdź, IP wewnątrzne w zakładce "Networking" tej instancji. Zalogujmy się do niej za pośrednictwem Frontendu komendą:

htmlwew_747015

Następnie zaaktulizuj maszynę i zainstaluj MySQL. W moim przykładzie wykorzystamy wersję 5.7 - najnowszą dostępną w apt-get'cie. Pamiętaj, że w środkowym kroku musisz podać i zapamietać hasło do konta root Twojego konta w MySQL.

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y mysql-server

21_-_azureuser_masterDB_917754

Po poprawnej instalacji, zaloguj się do MySQL i dodaj nową bazę danych oraz użytkownika. Dodam go na prawach administratora - uważaj na to.

mysql -uroot -p
CREATE DATABASE databaseForWP CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL ON *.* to dbuser@localhost IDENTIFIED BY 'password'; 
GRANT ALL ON *.* to dbuser@'%' IDENTIFIED BY 'password';

Ostatnia czynność, to zmieny configu MySQL aby pozwolić logować się z czegoś innego niż localhost.

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
sudo systemctl restart mysql.service

Wystarczy zmienić config -> zakomentować "#" linię:

#bind-address  = 127.0.0.1:

43_-_azureuser_masterDB2_425987

Brawo, masz już bazę danych MySQL w Private Network.

Przetestuj z Frontendu czy masz połączenie z bazą:

telnet 10.10.200.4 3306 #na maszynie Frontend
netstat -nat |grep :3306 #na maszynie DB
mysql -u dbuser -h 10.10.200.4 -p

html_462418

Działa :)

Instalujemy Wordpressa:

Ponowanie uruchamiamy naszą witrynę Frontendu i przechodzimy proces instalacji.

Jeżeli używałeś moich danych, poniżej screen z danymi poprawnie wypełnionymi:

40_378848

A po chwili mamy gotowego WP:

21-19-53-43_917253