24 Apr 2017
Docker LAMP (Linux Apache MySQL PHP) Server Kurulumu
  • 1529 Okuma
  • 0 Yorum
  • 2 Beğeni

Docker LAMP (Linux Apache MySQL PHP) Server Kurulumu

Bu makalemde, Dockerfile kullanarak LAMP (Linux Apache Mysql ve PHP) kurulumunun nasıl yapılacağından bahsedeceğim. Apache ve Linux'u bir container'a, MySQL server'ı ise başka bir container'a kuracağım. Bu şekilde farklı container'lar arası iletişimin nasıl olduğuna da değinmiş olacağız. Hemde sistemimiz daha ölçeklenebilir olacak.


Docker ile ilgili giriş seviyesinde bilgi edinmek için, buradan

Docker temel komutları hakkında bilgi edinmek için, buradan

Dockerfile ile ilgili bilgi edinmek için, buradan bilgi edinebilirsiniz.


Dünya üzerinde web sunucuların büyük bir kısmını Apache Web Server oluşturmaktadır. Apache Web üzerinde ise PHP ile yazılmış web uygulamaları/siteleri hizmet vermektedir. Bu web uygulamaları/siteleri ise veritabanı olarak MySQL veritabanını kullanmaktadırlar. Bu ayrılmaz üçlü hakkında biraz bilgi verdikten sonra, Dockerfile kullanarak bu üçlünün kurulumunun nasıl yapılacağından bahsedelim. Öncelikle Apache ve PHP kurulumuna bakacağız.


MYSQL Kurulumu


MySQL kurulumu için Dockerfile adında, Dockerfile dosyamızı oluştup içerisini aşağıdaki şekilde dolduruyoruz.

İlk olarak kurulumun hangi depodan yapılacağınız belirtiyoruz. Bunun için aşağıdaki satırı eklememiz yeterli olacak.


FROM mysql


Yukarıdaki satır MySQL Server kurulumu için yeterli. MySQL kurulumuna ek olarak, MySQL Server da bir veritabanı oluşturmak için aşağıdaki satırı eklememiz yeterli.


ENV MYSQL_DATABASE=webdeyaz


Bu şekilde, kurulumla beraber "webdeyaz" adında bir veritabanımız oluşturulmuş olacak. MySQL Server için "root" şifresinin belirlenmesi için ise aşağıdaki satırı eklememiz yeterli.

 

ENV MYSQL_ROOT_PASSWORD=webdeyaz


Bu şekilde MySQL Server'ın "root" kullanıcısının erişim şifresini "webdeyaz" olarak belirlemiş olduk. MySQL Server kurulumu için gerekli olan Dockerfile dosyasımızın son hali aşağıdaki gibi olacak.


FROM mysql
ENV MYSQL_ROOT_PASSWORD=webdeyaz
ENV MYSQL_DATABASE=db


Dockerfile dosyamızı hazırladıktan sonra aşağıdaki komutu kullanarak Docker image'mızı oluşturubiliriz.


docker build -t mysql .


Apache ve PHP Kurulumu


Apache ve PHP kurulumu için Dockerfile adında, Dockerfile dosyamızı oluştup içerisini aşağıdaki şekilde dolduruyoruz.

İlk olarak kurulumun hangi depodan yapılacağınız belirtiyoruz. Bunun için aşağıdaki satırı eklememiz yeterli olacak.


FROM php:7.0-apache


Aslında sadece yukarı satır Apache ve PHP kurulumu için yeterli ancak, çoğu zaman web uygulama/sitelerinin çalışması için Apache'nin bazı modüllerinin aktif edilmesine ve MySQL veritabanı ile birlikte çalışabilmesi için birkaç paket kurulumu daha yapmak gerekiyor.


Apache'nin rewrite ve headers modüllerinin aktif olması için aşağıdaki satırları eklememiz yeterli olacak.


RUN a2enmod rewrite
RUN a2enmod headers


Apache ve PHP 'nin MySQL Server ile birlikte çalışması için ise, aşağıdaki satıları eklememiz yeterli.


RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libpq-dev \
    && rm -rf /var/lib/apt/lists/* \
    && docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
    && docker-php-ext-install gd mbstring pdo pdo_mysql


Bu işlemlerden sonra Apache servisini yeniden başlatıyoruz.


RUN service apache2 restart


Bu şekilde Apache ve PHP'nin , MySQL ile birlikte çalışacak şekilde çalışmasını sağlayacak Dockerfile dosyasını hazırlamış olduk. Dockerfile dosyamıızın son hali aşağıdaki şekilde olacak.


FROM php:7.0-apache
RUN a2enmod rewrite
RUN a2enmod headers
RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libpq-dev \
    && rm -rf /var/lib/apt/lists/* \
    && docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
    && docker-php-ext-install gd mbstring pdo pdo_mysql
RUN service apache2 restart


Dockerfile dosyamızı hazırladıktan sonra aşağıdaki komutu kullanarak Docker image'mızı oluşturubiliriz.


docker build -t ApachePHP .


Apache PHP ve MYSQL Server Çalıştırılması


Yukarıdaki işlemlerde Apache , PHP ve MySQL Server'ın nasıl kurulacağından bahsettik ve kurulumlarını yaptık. Şimdi kurulumlarını yaptığımız bu container'ların birbirleriyle bağlantılı olarak nasıl çalıştırılacağından bahsedeceğim.


MySQL Server'ın çalıştırılması için aşağıdaki komutu kullanıyoruz,


docker run -d --name mysql -p 3306:3306 mysql


Bu şekilde MySQL server çalışmaya başlarayarak, üzerinde çalıştığı bilgisayarın "3306" portunu dinleme başladı.


Apache Server ve PHP'nin çalıştırılması için aşağıdaki komutu kullanıyoruz.


docker run -d -p 8080:80 -e DB_PORT=3306 -e DB_HOST=mysql --link mysql --name apache


Bu şekilde MySQL server çalışmaya başlarayarak, üzerinde çalıştığı bilgisayarın "8080" portunu dinleme başladı. Veritabanı bağlantısı için "DB_PORT" değişkenini kullandık ve MySQL Server'ın dinlemekte olduğu "3306" portunu tanımladık. Ayrıca, MySQL Server container'ı ile iletişim kurabilmesi için "DB_HOST" ve "link" değişkeni  olarak "mysql" tanımlamasını kullandık. Çünkü MySQL server'ı "mysql" etiketi ile çalıştırmıştık. İşte bu şekilde, Apache, PHP ve MySQL Server kurulumlarını Docker, Dockerfile kullanarak yapmış olduk.


Sonuç

Bu makalede Docker ile Dockerfile kullanarak Apache Web Server, PHP ve MySQL Server kurulumlarının nasıl yapılacağından bahsettim. Kurulumla beraber, üzerinde çalıştığı bilgisayarın "8080" portunu dinleyen ve gelen istekleri container'ın "80" portuna yönlendiren, veritabanı bağlantısı için, üzerinde çalıştığı bilgisayarın "3306" portunu dinleyen bir container tanımladık ve çalıştırdık. Aynı şekilde, üzerinde çalıştığı bilgisayarın "3306" portunu dinleyen ve gelen istekleri container'ın "3306" portuna yönlendiren bir MySQL server container'a tanımladık ve çalıştırdık. Bu şekilde Apache Web Server, PHP ve MySQL Server kurulumlarını birbirleriyle iletişimi olan farklı iki container'a kurmuş olduk.

Umarım faydalı olur. İyi çalışmalar.


Makaleyi faydalı buldunuz mu ?

Yazar


Legend Engineer

Legend Engineer

Mühendis (Bilgisayar)

Bilgisayar Mühendisliği mezunuyum. Bilgisayar alanında edindiğim bilgileri bu blog üzerinde paylaşıyorum. Beni takipte kalın.

Yorumlar


İlk yorum yapan sen ol

İlginizi Çekebilir

Makale Hakkındaki Düşünçelerinizi Paylaşın