Dockerizimi i Wordpress me Nginx dhe PHP-FPM në Ubuntu 16.04
Docker-Compose është një mjet i linjës komanduese për përcaktimin dhe menaxhimin e kontejnerëve doker me shumë kontejnerë sikur të ishin një shërbim i vetëm. Compose është shkruar në python dhe mund të instalohet me komandën Python pip. Me kompozimin, ne mund të ekzekutojmë kontejnerë të shumtë docker vetëm me një komandë të vetme. Kjo ju lejon të krijoni një kontejner si shërbim, i shkëlqyeshëm për mjedisin tuaj të zhvillimit, testimit dhe vendosjes.
Në këtë tutorial, unë do t'ju udhëzoj hap pas hapi për të përdorur docker-compose. Ne do të vendosim Wordpress me Nginx, MySQL dhe PHP-FPM. Çdo shërbim ka kontejnerin e vet dhe ne do të përdorim imazhe nga regjistri i qendrës docker. Unë do t'ju tregoj se si të krijoni kontejnerë nga imazhet docker dhe të menaxhoni të gjithë kontejnerët me docker-compose.
Kusht paraprak
- Ubuntu 16.04
- Privilegjet e rrënjës
Hapi 1 - Instaloni Docker
Ne do të fillojmë nga e para, duke instaluar docker dhe docker compose manualisht me komandën apt.
Përpara se të fillojmë, përditësoni depon e Ubuntu dhe instaloni përditësimet më të fundit:
sudo apt-get update
sudo apt-get upgrade
Si parazgjedhje, docker është i disponueshëm në depon e Ubuntu, kështu që ne mund të vazhdojmë ta instalojmë menjëherë:
sudo apt-get install -y docker.io
Kur instalimi të ketë mbaruar, nisni docker dhe shtojeni atë për të filluar automatikisht në kohën e nisjes:
systemctl start docker
systemctl enable docker
Tani testoni instalimin tuaj docker me komandën e mëposhtme:
docker run hello-world
Ju do të shihni hello-world nga docker.
Hapi 2 - Instaloni Docker-Compose
Docker-compose është një skript i shkruar në python, i disponueshëm në depon e PyPI python dhe mund të instalohet me python pip. Pra, ne fillimisht duhet të instalojmë python dhe python pip në sistemin tonë.
Instaloni python dhe python-pip:
sudo apt-get install -y python python-pip
Më pas, instaloni docker-compose me komandën pip:
pip install docker-compose
prisni që procesi i instalimit të përfundojë. Pastaj kontrolloni instalimin me komandën docker-compose:
docker-compose -v
Do të merrni versionin docker-compose.
Hapi 3 - Konfiguroni Wordpress
Tani, docker dhe docker-compose janë instaluar në sistem. Në këtë hap, do t'ju tregojë se si të krijoni dhe konfiguroni mjedisin docker-compose për projektin tonë WordPress.
Ne do të vendosim aplikacionin Wordpress PHP me Nginx si server në internet dhe MariaDB për bazën e të dhënave MySQL si kontejnerë docker të menaxhuar nga docker-compose. Çdo aplikacion (Wordpress, Nginx dhe MySQL) do të funksionojë në kontejnerin e vet, ju mund të shihni listën më poshtë:
- Nginx: Ne përdorim imazhin zyrtar të dokerit, versioni i fundit nginx: më i fundit.
- Wordpress: Wordpress ofron disa imazhe docker në docker-hub dhe ne do të përdorim WordPress 4.7 me PHP-FPM 7.0 në të.
- MySQL: Ne do të përdorim kontejnerin zyrtar të MariaDB, versionin më të fundit.
Pra, na duhen 3 imazhe docker nga regjistri i qendrës docker.
Ne nuk do të përdorim docker si rrënjë, ne do të përdorim përdorues normal të Linux. Pra, thjesht krijoni një përdorues të ri me komandën më poshtë (ngurroni të përdorni një emër tjetër përdoruesi këtu, thjesht sigurohuni që përdoruesi të mos ekziston ende. Nëse zgjidhni një emër tjetër, sigurohuni që ta ndryshoni atë në të gjitha komandat që vijojnë në këtë tutorial):
useradd -m -s /bin/bash hakase
passwd hakase
Tani shtoni përdoruesin në grupin docker në mënyrë që përdoruesi të përdorë komandën docker dhe rinisni shërbimin docker:
usermod -a -G docker hakase
systemctl restart docker
Hyni në përdoruesin hakase dhe krijoni një drejtori të re për projektin WordPress:
su - hakase
mkdir -p wordpress-compose
cd wordpress-compose/
Më pas, krijoni një skedar të ri të quajtur docker-compose.yml dhe krijoni një drejtori të re për projektin. Thjesht shkruani komandat më poshtë:
touch docker-compose.yml
mkdir -p nginx/
mkdir -p db-data/
mkdir -p logs/nginx/
mkdir -p wordpress/
Lista e skedarëve dhe drejtorive të projektit:
- docker-compose.yml: Ky është skedari i konfigurimit docker-compose, ju duhet ta krijoni atë kur filloni një projekt të ri docker-compose.
- nginx/: Kjo direktori përdoret për konfigurimin tonë shtesë të nginx si hosti virtual etj.
- db-data/: Vëllimi/drejtoria për të dhënat mysql. Sql nga data /var/lib/mysql është montuar në drejtorinë db-data.
- logs/: Drejtoria për regjistrin e aplikacioneve, nginx, mariadb dhe php-fpm.
- wordpress/: Të gjithë skedarët e wordpress do të jenë të disponueshëm në atë direktori.
Në drejtorinë nginx, krijoni një skedar të ri konfigurimi për hostin tonë virtual të wordpress.
Krijoni një skedar të ri wordpress.conf:
vim nginx/wordpress.conf
Ngjitni konfigurimin më poshtë:
server {
listen 80;
server_name wp-hakase.co;
root /var/www/html;
index index.php;
access_log /var/log/nginx/hakase-access.log;
error_log /var/log/nginx/hakase-error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
Ruani skedarin dhe dilni nga vim.
Hapi 4 - Konfiguro Docker-Compose
Në këtë hap, ne do të fillojmë redaktimin e skedarit docker-compose.yml. Kur dëshironi të filloni projektin docker-compose, sigurohuni që së pari të krijoni skedarin docker-compose.yml siç e bëjmë ne më poshtë.
Redakto docker-compose.yml me vim:
vim docker-compose.yml
Përcaktoni shërbimet tuaja, në rreshtin e parë do të përcaktojmë Nginx. Ne po përdorim imazhin zyrtar të dokerit Nginx, versionin më të fundit dhe konfigurojmë hartën e portit për portin 80 në kontejner në portin 80 në host. Më pas, konfiguroni vëllimet e dokerit, vëllimin për konfigurimin e hostit tonë virtual Nginx, vëllimin për skedarët e regjistrave Nginx dhe vëllimin e direktorisë rrënjësore të uebit /var/www/html. Kontejneri Nginx është i lidhur me kontejnerin WordPress.
Ngjitni konfigurimin më poshtë:
nginx:
image: nginx:latest
ports:
- '80:80'
volumes:
- ./nginx:/etc/nginx/conf.d
- ./logs/nginx:/var/log/nginx
- ./wordpress:/var/www/html
links:
- wordpress
restart: always
Më pas, përcaktoni serverin MySQL. Ne po përdorim imazhin MariaDB, versioni më i fundit. Konfiguro hartën e portit për kontejnerin në portën 3306 dhe konfiguro fjalëkalimin rrënjësor të MySQL me variablin e mjedisit MYSQL_ROOT_PASSWORD. Së fundi, konfiguroni vëllimin e kontejnerit për direktorinë e të dhënave MySQL.
Ngjitni konfigurimin më poshtë:
mysql:
image: mariadb
ports:
- '3306:3306'
volumes:
- ./db-data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=aqwe123
restart: always
Më pas do të konfigurojmë shërbimin WordPress duke përdorur imazhin e dokerit të WordPress 4.7 me PHP-FPM 7.0 të instaluar. Konfiguro portën për PHP-fpm në portin 9000, aktivizo volumin e docker-it për direktorinë ueb /var/www/html në direktorinë host wordpress, konfiguro bazën e të dhënave duke përcaktuar variablin e mjedisit WordPress dhe lidh shërbimin WordPress me mysql.
Ngjitni konfigurimin më poshtë:
wordpress:
image: wordpress:4.7.1-php7.0-fpm
ports:
- '9000:9000'
volumes:
- ./wordpress:/var/www/html
environment:
- WORDPRESS_DB_NAME=wpdb
- WORDPRESS_TABLE_PREFIX=wp_
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_PASSWORD=aqwe123
links:
- mysql
restart: always
Pas shtimit të tre pjesëve në skedarin docker-compose.yml, ruajeni skedarin dhe dilni nga redaktori vim.
Konfigurimi ynë docker-compose është gati.
Hapi 5 - Ekzekuto Docker-compose
Filloni të krijoni kontejnerët e rinj me docker compose. Shkoni te drejtoria wordpress-compose dhe nisni kontejnerët e rinj bazuar në skedarin tonë të kompozimit.
cd ~/wordpress-compose/
docker-compose up -d
Ju mund të shihni rezultatet e komandës. U krijuan tre kontejnerë. Le të kontrollojmë statusin e kontejnerit me opsionin ps:
docker-compose ps
Më poshtë është rezultati:
Nëse dëshironi të shihni daljen e regjistrit nga kontejneri, mund të përdorni komandat më poshtë:
docker-compose logs nginx
docker-compose logs mysql
docker-compose logs wordpress
Regjistrat e kontejnerëve:
Shënim:
Nëse shihni në regjistrin e kontejnerit të WordPress një gabim në lidhje me refuzimin e lidhjes MySQL, injoroje atë.
Hapi 6 - Instaloni Wordpress
Përpara se të bëjmë këtë hap, le të kontrollojmë portet e disponueshme/portet e hapura në sistem. Sigurohuni që të keni hapur 3 porte, portin 80, 3306 dhe portin 9000.
netstat -plntu
Rezultatet janë më poshtë:
Tani hapni shfletuesin tuaj të internetit dhe shkruani URL-në e serverit ose adresën IP.
http://serverIP/
Ju mund të shihni faqen e instalimit të WordPress. Zgjidhni gjuhën tuaj dhe klikoni Vazhdo.
Plotësoni detajet e faqes suaj të internetit si titulli i faqes, përdoruesi i administratorit dhe fjalëkalimi, adresa juaj e emailit dhe më pas klikoni Instalo Wordpress.
Do të ridrejtoheni te Paneli i administratorit të Wordpress.
Dhe ky është kampioni im i postimit të WordPress-it hello botë.
Wordpress është instaluar me docker-compose.
Hapi 7 - Hyrja në kontejnerin Docker
Ky është një hap shtesë se si të aksesoni një kontejner me docker-compose. Kontrolloni që të gjithë kontejnerët janë të disponueshëm dhe tregoni statusin e tyre:
docker-compose ps
Ne tashmë kemi 3 kontejnerë, tani mund të përpiqemi të identifikohemi në secilin kontejner. Hyni në kontejnerin e parë Nginx me komandën docker-compose.
docker-compose exec nginx bash
nginx: emri i shërbimit në skedarin docker-compose docker-compose.yml
bash: ekzekutoni komandën bash shell
Tani kontrolloni konfigurimin tonë të hostit virtual të WordPress.
cat /etc/nginx/conf.d/wordpress.conf
Skedarët janë të disponueshëm në kontejner.
Më pas, provoni të identifikoheni në kontejnerin mysql dhe më pas hyni në guaskën mysql me fjalëkalimin tonë në skedarin e kompozimit.
docker-compose exec mysql bash
mysql -u root -p
TYPE MYSQL ROOT PASSWORD
Shihni listën e bazave të të dhënave:
show databases;
Ju do të shihni bazën e të dhënave tona të WordPress.
Në kontejnerin e wordpress, do të shihni të gjithë skedarët e WordPress.
docker-compose exec wordpress bash
ls -lah
Të gjithë kontejnerët janë të aksesueshëm.
Referenca
- https://github.com/yuzukiseo/hakase-labs