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.
Tworzymy VNet:
Dodajemy prywatny subnet:
Tworzymy dwie Network security groups (NSG):
Publiczna z wejściem na port 22,80,443 dla subnetu publicznego:
Dodajemy reguły z wejściem na świat na port 22,80,443:
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:
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:
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.
Uruchamiamy VM z Ubuntu dla Wordpress:
Pierwszy VM, z najbardziej standardowymi ustawieniami.
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:
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ę:
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:
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:
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ą:
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
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:
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 Frontendnetstat -nat |grep :3306 #na maszynie DBmysql -u dbuser -h 10.10.200.4 -p
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: