docker提供了在服務端分布式的部署應用,這樣的好處是方便維護和升級。
接下來我來介紹一些我在自己的服務器是如何使用docker部署nginx和php的。
首先需要在服務器端安裝docker,這個不是本篇文章的重點所以就不詳加敘述了,具體docker的安裝方法在docker的官網上有,而且非常詳細,按照官網提供的步驟一步一步來就可以安裝成功。
接下來就開始介紹具體部署的過程:
下載或者構建需要的php和nginx的鏡像。這里我使用的nginx鏡像是docker官網提供的nginx鏡像,php的鏡像是使用ubuntu:16.04的鏡像構建的php鏡像。php的版本是PHP 7.0.8-0ubuntu0.16.04.3 (cli) ( NTS )。注意如果php啟動是需要php-fpm。php5.3以上版本fpm就內建在php內。如果是5.3一下需要在另外安裝編譯php,具體的教程可是可以找到的。nginx的版本是nginx/1.11.6。這個是現在目前docker官網最新的版本。具體的執行的命令有:
docker search nginx ? ?在官網的倉庫中搜索nginx的鏡像
docker search nginx:version ? ?nginx:version 是指定nginx的版本進行搜索。例如要安裝nginx1.8.1,那么命令就是docker search nginx:1.8.1
docker pull $ImageName:Desciption ? ?根據search返回的鏡像列表,選擇要下載的鏡像。
上面的是給大家做一些介紹,下面是我下載和構建容器使用的方法:
docker pull nginx ?下載官方nginx鏡像
docker pull ubuntu 下載官方的ubuntu鏡像用來創建PHP的容器。
docker run -it --name PHP -v /code:/home/code ubuntu /bin/bash ?使用ubuntu創建容器,容器的名稱是PHP,添加數據卷使宿主主機的文件路徑/code和容器的文件路徑/home/code進行綁定。
docker run -it --name Nginx -v /code:/home/code --link PHP:php -p 80:80 ngixn /bin/bash? 使用nginx鏡像構建容器,容器名稱是Nginx,添加數據卷使宿主主機的文件路徑/code和容器的文件路徑/home/code進行綁定,連接之前創建的PHP,并把PHP容器命名為php。這里要注意,由于需要用到nginx和php容器的互連,所以需要先創建PHP容器,然后在創建Nginx容器,在創建Nginx容器是才能指定連接PHP。否則就會報錯。
docker start PHP ?先啟動PHP容器
docker start Nginx ?啟動Nginx容器。
由于PHP容器是使用使用ubuntu的鏡像創建的,所以需要安裝php先。
docker exec -it PHP /bin/bash ?啟動一個PHP容器的偽終端的命令行。
apt-get update ?更新,官方提供的ubuntu系統是最簡潔的版本
apt-get install php ?安裝php,php的安裝過程與在平常的安裝過程是一樣的。
php安裝完成后需要使用php-fpm的服務,這里需要修改php-fpm的配置。這里需要修改的是php-fpm的www.conf。
find / -name www.conf ?查找www.conf文件所在的位置。這里需要注意,docker官方提供的ubuntu鏡像里滿是沒有安裝vi或者vim的。要修改配置文件可以安裝vim或者使用mv或者cp的命令將www.conf放到數據卷內,然后在宿主主機中進行修改,修改完成后再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服務可執行文件所在的路徑
/usr/sbin/php-fpm7.0 ?啟動php-fpm,這里的路徑是根據 whereis php-fpm 命令查找到的結果來啟動的。
如果之前已經啟動了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; ? ? ?#這里的路徑是數據卷的路徑,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。
基本按照上述的步驟做下來就可以實現nginx和php的互聯了