原博客站点搭建过程-基于Docker

本文章将记录本站的建立过程,不方便透露的信息将直接使用中文表示。

准备工作:

服务器:ECS、RDS各一台(选择阿里云原因:便宜、好用)、域名一枚

基础环境:Linux(ECS_Centos7.2)+Nginx(Docker)+MySQL(RDS)+PHP(Docker)



选择Docker的原因:

1、简化配置;

2、隔离应用(可部署多个站点);

3、监控方便(基于Rancher);

4、快速部署(在制作好镜像的情况下,5分钟内便可完成部署);


Nginx与PHP的镜像使用:

1、Nginx为官方提供的镜像、PHP镜像为自制的。为什么要这样操作?

本身对nginx的版本要求并不高,官方提供的镜像大小只有107.4 MB,既能发挥所有功能了,而本人经过多次尝试之后发现自制镜像大小都大于200MB,所以最终选择了官方提供的镜像。

许多程序对PHP的版本都有一定的依赖性,且官方提供的镜像大小为 369.7 MB(单一版本);而自己基于centos:7.2镜像、且自定义php版本和模块后的镜像大小为346.6 MB。所以最终选择自制的镜像


2、为什么不将nginx与php放置同一容器中,依据什么?

1、依据官方的使用原则,一个容器跑一个程序(官方建议,也是容器的一个设计理念)。

2、nginx与php各自易扩展,一般处理瓶颈不会出现在nginx上,要提升的一般为php的处理能力,而此时如果nginx与php放置于同一个容器内的话,每拉起一台容器时都将浪费nginx的资源。


3、为什么MySQL不使用Docker?

原因:本人对MySQL到底适不适合用于Docker技术现在还未有一个明确的概念,总觉得没必要,且多次尝试的效果都未体现其优势,所以此本身暂时还为使用Docker。

下面链接为近期一篇关于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内容(可根据需要更改php版本:如将全部php更换为php53w或php71w)

FROM docker.io/centos:7.2.1511

MAINTAINER Huangqihuan <[email protected]>

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内容

#!/bin/bash

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



生成自制的php镜像

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


创建容器

创建前先在本地完成如下准备:

/www/wordpress #存储wordpress代码路径

/www/nginx/nginx.conf #挂载nginx主配置文件

/www/nginx/conf.d #挂载nginx子配置文件目录

/www/nginx/log #挂载nginx日志目录

/www/php/www.conf #挂载php配置文件



1、创建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、创建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配置信息(以下贴出来的配置信息为初始信息,并为经过调优,目的只为实现部署)

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

你可能感兴趣的:(原博客站点搭建过程-基于Docker)