原博客站點(diǎn)搭建過程-基于Docker

本文章將記錄本站的建立過程,不方便透露的信息將直接使用中文表示。

準(zhǔn)備工作:

服務(wù)器:ECS、RDS各一臺(選擇阿里云原因:便宜、好用)、域名一枚

基礎(chǔ)環(huán)境:Linux(ECS_Centos7.2)+Nginx(Docker)+MySQL(RDS)+PHP(Docker)



選擇Docker的原因:

1、簡化配置;

2、隔離應(yīng)用(可部署多個站點(diǎn));

3、監(jiān)控方便(基于Rancher);

4、快速部署(在制作好鏡像的情況下,5分鐘內(nèi)便可完成部署);


Nginx與PHP的鏡像使用:

1、Nginx為官方提供的鏡像、PHP鏡像為自制的。為什么要這樣操作?

本身對nginx的版本要求并不高,官方提供的鏡像大小只有107.4 MB,既能發(fā)揮所有功能了,而本人經(jīng)過多次嘗試之后發(fā)現(xiàn)自制鏡像大小都大于200MB,所以最終選擇了官方提供的鏡像。

許多程序?qū)HP的版本都有一定的依賴性,且官方提供的鏡像大小為 369.7 MB(單一版本);而自己基于centos:7.2鏡像、且自定義php版本和模塊后的鏡像大小為346.6 MB。所以最終選擇自制的鏡像


2、為什么不將nginx與php放置同一容器中,依據(jù)什么?

1、依據(jù)官方的使用原則,一個容器跑一個程序(官方建議,也是容器的一個設(shè)計(jì)理念)。

2、nginx與php各自易擴(kuò)展,一般處理瓶頸不會出現(xiàn)在nginx上,要提升的一般為php的處理能力,而此時如果nginx與php放置于同一個容器內(nèi)的話,每拉起一臺容器時都將浪費(fèi)nginx的資源。


3、為什么MySQL不使用Docker?

原因:本人對MySQL到底適不適合用于Docker技術(shù)現(xiàn)在還未有一個明確的概念,總覺得沒必要,且多次嘗試的效果都未體現(xiàn)其優(yōu)勢,所以此本身暫時還為使用Docker。

下面鏈接為近期一篇關(guān)于MySQL使用Docker的文章。

http://www.360doc.com/content/17/0803/12/16619343_676322878.shtml


Nginx與PHP的鏡像制作:

#docker pull nginx 獲取nginx鏡像

#docker pull centos:7.2.1511 獲取centos7.2鏡像用于制作php鏡像


以下為dockerfile內(nèi)容(可根據(jù)需要更改php版本:如將全部php更換為php53w或php71w)

FROM docker.io/centos:7.2.1511

MAINTAINER Huangqihuan <546020152@qq.com>

LABEL name="CentOS Base Image"

LABEL vendor="CentOS"

LABEL license=GPLv2

ADD run.sh /run.sh

RUN rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

RUN yum -y install php-gd php-mysql php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-snmp php-soap php-tidy php-common php-devel php-fpm && yum clean all && chmod 777 /run.sh

RUN useradd nginx && mkdir /www

ENTRYPOINT "/run.sh"


以下為run.sh內(nèi)容

#!/bin/bash

/usr/sbin/php-fpm -c /etc/php-fpm.d/www.conf && /bin/bash



生成自制的php鏡像

#sudo docker build -y centos7.2_php53:v1 .


創(chuàng)建容器

創(chuàng)建前先在本地完成如下準(zhǔn)備:

/www/wordpress #存儲wordpress代碼路徑

/www/nginx/nginx.conf #掛載nginx主配置文件

/www/nginx/conf.d #掛載nginx子配置文件目錄

/www/nginx/log #掛載nginx日志目錄

/www/php/www.conf #掛載php配置文件



1、創(chuàng)建php容器

sudo docker run -d --name "phpfpm" -P -v /www/wordpress:/www -v /www/php/www.conf:/etc/php-fpm.d/www.conf centos7.2_php53:v1 /run.sh


2、創(chuàng)建nginx容器

sudo docker run --name nginx_php -d -p 80:80 --link phpfpm:phpfpm -v /www/wordpress:/www -v /www/nginx/nginx.conf:/etc/nginx/nginx.conf -v /www/nginx/conf.d:/etc/nginx/conf.d -v /www/nginx/log:/var/log/nginx docker.io/nginx nginx -g "daemon off;"



3、nginx.conf配置信息(以下貼出來的配置信息為初始信息,并為經(jīng)過調(diào)優(yōu),目的只為實(shí)現(xiàn)部署)

user nginx;

worker_processes 1;

error_log /var/log/nginx/error.log warn;

pid /var/run/nginx.pid;

events {

worker_connections 1024;

}

http {

include /etc/nginx/mime.types;

default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;

keepalive_timeout 65;

include /etc/nginx/conf.d/*.conf;

}


4、wordpress.conf配置信息

server {

listen 80;

server_name?? 更改為域名;

location / {

root /www;

index index.php index.html index.htm;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /www;

}

location ~ \.php$ {

root /www;

fastcgi_pass phpfpm:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name;

include fastcgi_params;

}

}


5、www.conf配置文件(注釋信息已去除)

[www]

listen = 9000

user = nginx

group = nginx

pm = dynamic

pm.max_children = 80

pm.start_servers = 15

pm.min_spare_servers = 5

pm.max_spare_servers = 50

slowlog = /var/log/php-fpm/www-slow.log

php_admin_value[error_log] = /var/log/php-fpm/www-error.log

php_admin_flag[log_errors] = on

php_value[session.save_handler] = files

php_value[session.save_path] = /var/lib/php/session

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容