W poprzednim wpisie na temat OpenVZ nie brałem pod uwagę możliwości instalacji bazy danych w kontenerze. Przy standardowej konfiguracji oraz tym co napisałem w poprzednim tutorialu (skrypt ułatwiający tworzenie nowej maszyny) nie da się uruchomić bazy danych MySQL (występuje np błąd.: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)) oraz PostgreSQL (występuje np. błąd: can’t allocate shared memory ). Mogą też wystąpić inne błędy przy apt-get/aptitude np. FATAL -> Failed to fork. 0%. Przy samej instalacji MySQL możemy dostać błąd, że nie można ustawić hasła dla root MySQL (Unable to set password for the MySQL “root” user). Przyczyną tego jest źle ustawiony parametr privvmpages.
Żeby zainstalować i uruchomić MySQL/PostgreSQL należy dla kontenera zwiększyć parametr privvmpages czyli limit alokacji pamięci. Parametr pozwala ustawić ilość pamięci jaką mogą zaalokować aplikacje.
Więcej informacji w wiki openvz czyli TUTAJ (link bezpośredni do zagadnienia).
Dla aktualnych kontenerów możemy ustawić to w ten sposób:
vzctl set --privvmpages zakres --save
Czyli przykładowo
vzctl set 100 --privvmpages 400M:650M --save
Ustawia to privvmpages na zakres 400M:650M dla kontenera z ID 100.
Tym samym zmodyfikujemy skrypt tworzący kontenery. Ja dodałem na stałe wartości 400M:650M
Ktoś może się pokusić i dodać dwie kolejne zmienne do podania przy uruchamianiu skryptu, które będą ustawiać te wartości. Liczby 400M:650M dobrałem doświadczalnie na moim mikro serwerze w domu. Parametr każdy może i powinien ustawić indywidualnie jeżeli coś będzie się dziać nie tak.
Zmodyfikowany skrypt:
#!/bin/bash if [ "$1" != "" ] && [ "$2" != "" ] && [ "$3" != "" ] && [ "$4" != "" ] && [ "$5" != "" ] && [ "$6" != "" ]; then vzctl create $1 --ostemplate debian-7.0-x86-minimal --config basic && vzctl set $1 --hostname $2 --save && vzctl set $1 --ipadd $3 --save && vzctl set $1 --numothersock 100 --save && vzctl set $1 --swap $6 --save && vzctl set $1 --ram $4 --save && vzctl set $1 --diskspace $5 --save && vzctl set $1 --nameserver 208.67.222.222 --nameserver 8.8.8.8 --save && vzctl set $1 --onboot yes --save && vzctl set $1 --privvmpages 400M:650M --save else echo './create ' fi
Instalacja MySQL i PostgreSQL w Debianie przebiega niezmiernie łatwo:
apt-get install mysql-server
W trakcie instalacji zostaniemy zapytani o hasło do root (admina) bazy. Wpisujemy nasze hasło i enter.
Przy PostgreSQL sprawa wygląda podobnie.
apt-get install potsgresql
Jeśli ktoś musi odinstalować całkowicie MySQL/PostgreSQL to może zrobić to tak:
apt-get clean apt-get autoremove mysql-sever
albo wersja hard (poprzednie polecenie “odinstalowania” może nie być wystarczające):
apt-get clean apt-get autoremove mysql\*
Dla PostgreSQL to samo czyli:
apt-get autoremove postgresql
albo wersja hard (poprzednie polecenie “odinstalowania” może nie być wystarczające):
apt-get clean apt-get autoremove postgresql\*
Wersje hard usuwają wszystko gdzie występuje cokolwiek ze słowem mysql/postgresql. Później brakujące liby można najwyżej doinstalować 😛
Jak będę miał chwilę to może napiszę jak zainstalować dodatkowo PHPMyAdmin, a to jest bardzo łatwe oraz PHPPgAdmin dla PostgreSQL przy czym tutaj już jest troszkę inaczej niż przy PHPMyAdmin (trochę bardziej skomplikowane). 😉