docker提供了在服務(wù)端分布式的部署應用狭吼,這樣的好處是方便維護和升級。
接下來我來介紹一些我在自己的服務(wù)器是如何使用docker部署nginx和php的殖妇。
首先需要在服務(wù)器端安裝docker刁笙,這個不是本篇文章的重點所以就不詳加敘述了,具體docker的安裝方法在docker的官網(wǎng)上有谦趣,而且非常詳細疲吸,按照官網(wǎng)提供的步驟一步一步來就可以安裝成功。
接下來就開始介紹具體部署的過程:
下載或者構(gòu)建需要的php和nginx的鏡像前鹅。這里我使用的nginx鏡像是docker官網(wǎng)提供的nginx鏡像摘悴,php的鏡像是使用ubuntu:16.04的鏡像構(gòu)建的php鏡像。php的版本是PHP 7.0.8-0ubuntu0.16.04.3 (cli) ( NTS )舰绘。注意如果php啟動是需要php-fpm蹂喻。php5.3以上版本fpm就內(nèi)建在php內(nèi)。如果是5.3一下需要在另外安裝編譯php除盏,具體的教程可是可以找到的叉橱。nginx的版本是nginx/1.11.6。這個是現(xiàn)在目前docker官網(wǎng)最新的版本者蠕。具體的執(zhí)行的命令有:
docker search nginx ? ?在官網(wǎng)的倉庫中搜索nginx的鏡像
docker search nginx:version ? ?nginx:version 是指定nginx的版本進行搜索。例如要安裝nginx1.8.1,那么命令就是docker search nginx:1.8.1
docker pull $ImageName:Desciption ? ?根據(jù)search返回的鏡像列表掐松,選擇要下載的鏡像踱侣。
上面的是給大家做一些介紹,下面是我下載和構(gòu)建容器使用的方法:
docker pull nginx ?下載官方nginx鏡像
docker pull ubuntu 下載官方的ubuntu鏡像用來創(chuàng)建PHP的容器大磺。
docker run -it --name PHP -v /code:/home/code ubuntu /bin/bash ?使用ubuntu創(chuàng)建容器抡句,容器的名稱是PHP,添加數(shù)據(jù)卷使宿主主機的文件路徑/code和容器的文件路徑/home/code進行綁定杠愧。
docker run -it --name Nginx -v /code:/home/code --link PHP:php -p 80:80 ngixn /bin/bash? 使用nginx鏡像構(gòu)建容器待榔,容器名稱是Nginx,添加數(shù)據(jù)卷使宿主主機的文件路徑/code和容器的文件路徑/home/code進行綁定流济,連接之前創(chuàng)建的PHP锐锣,并把PHP容器命名為php。這里要注意绳瘟,由于需要用到nginx和php容器的互連雕憔,所以需要先創(chuàng)建PHP容器,然后在創(chuàng)建Nginx容器糖声,在創(chuàng)建Nginx容器是才能指定連接PHP斤彼。否則就會報錯分瘦。
docker start PHP ?先啟動PHP容器
docker start Nginx ?啟動Nginx容器。
由于PHP容器是使用使用ubuntu的鏡像創(chuàng)建的琉苇,所以需要安裝php先嘲玫。
docker exec -it PHP /bin/bash ?啟動一個PHP容器的偽終端的命令行。
apt-get update ?更新并扇,官方提供的ubuntu系統(tǒng)是最簡潔的版本
apt-get install php ?安裝php去团,php的安裝過程與在平常的安裝過程是一樣的。
php安裝完成后需要使用php-fpm的服務(wù)拜马,這里需要修改php-fpm的配置渗勘。這里需要修改的是php-fpm的www.conf。
find / -name www.conf ?查找www.conf文件所在的位置俩莽。這里需要注意旺坠,docker官方提供的ubuntu鏡像里滿是沒有安裝vi或者vim的。要修改配置文件可以安裝vim或者使用mv或者cp的命令將www.conf放到數(shù)據(jù)卷內(nèi)扮超,然后在宿主主機中進行修改取刃,修改完成后再mv或者cp覆蓋容器中的文件。
修改www.conf出刷,在文件中找到?listen = /run/php/php7.0-fpm.sock 這一行并注釋掉璧疗,并添加一行保存并退出如下:
;listen = /run/php/php7.0-fpm.sock
listen = 0.0.0.0:9000
whereis php-fpm ?查找php-fpm服務(wù)可執(zhí)行文件所在的路徑
/usr/sbin/php-fpm7.0 ?啟動php-fpm,這里的路徑是根據(jù) whereis php-fpm 命令查找到的結(jié)果來啟動的。
如果之前已經(jīng)啟動了fpm馁龟,使用ps aux | grep php-fpm 查看php-fpm的進程號然后kill掉再啟動崩侠。
這里php的配置就基本完成了。接下來是Nginx的配置坷檩。
docker exec -it Nginx /bin/bash ?啟動Nginx容器的偽終端命令行却音。
使用find / -name nginx.conf 找到nginx.conf配置文件的路徑。這里一樣沒有vi或者vim進行直接配置矢炼,可以按照配置php的方式進行配置系瓢。
配置php的配置文件:
server {
? ? ? ? listen 80;
? ? ? ? server_name 172.17.0.3;
? ? ? ? root /home/code; ? ? ?#這里的路徑是數(shù)據(jù)卷的路徑,php項目存放在這個目錄里面句灌。
? ? ? ? location / {
? ? ? ? ? ? ? ? index index.html index.htm index.php;
? ? ? ? ? ? ? ? if (!-e $request_filename) {
? ? ? ? ? ? ? ? rewrite . /index.php last;
? ? ? ? ? ? ? ? }
? ? ? ? }
? ? ? ? location ~ \.php$ {
? ? ? ? ? ? ? ? include fastcgi_params;
? ? ? ? ? ? ? ? fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
? ? ? ? ? ? ? ? fastcgi_pass php:9000;
? ? ? ? ? ? ? ? fastcgi_index index.php;
? ? ? ? }
}
然后啟動nginx夷陋。使用service nginx start或者service nginx restart。
基本按照上述的步驟做下來就可以實現(xiàn)nginx和php的互聯(lián)了