用Docker配置简单的Nginx+Apache的web负载均衡

这是本人第一次写CSDN博客,有出错的地方欢迎大家指正(别喷我~~),谢谢!应该是原创吧,网上大都是Nginx+Tomcat的配置。。。

介绍一下基本配置,宿主机系统是Ubuntu14.04,Docker容器也是用的Ubuntu14.04。

Docker的安装就不在这赘述了,首先说说容器的配置吧。

1、首先是用Dockerfile做镜像

mkdir apache-php
cd apache-php
touch Dockerfile
mkdir php

编辑Dockerfile内容如下:

FROM ubuntu:14.04
MAINTAINER Adward

RUN apt-get -yqq update
RUN apt-get -yqq install php5
RUN apt-get -yqq install apache2

VOLUME ["/var/www/html"]
WORKDIR /var/www/html

ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2

RUN mkdir -p $APACHE_RUN_DIR $APACHE_LOCK_DIR $APACHE_LOG_DIR
EXPOSE 80

ENTRYPOINT ["/usr/sbin/apache2"]
CMD ["-D", "FOREGROUND"]


因为用的语言是php,所以在容器中也需要安装php环境,用VOLUME创建可挂载的文件夹,创建容器时挂载宿主机文件夹,这样方便传代码,EXPOSE 80端口,最后用ENTRYPOINT和CMD指令组合来在容器启动时默认运行Apache。

创建镜像:

sudo docker build -t apache-php .

2、在创建的php文件夹中写个简单的获取服务器ip的php代码

 
  

3、建立容器  

sudo docker run -p 1180:80 -d -name apache1 -v /root/apache-php/php:/var/www/html apache-php
用宿主机的1180端口作为容器的80端口,挂载php文件夹到容器apache工作文件夹,同理再建一个容器,用宿主机的1280端口

sudo docker run -p 1280:80 -d -name apache1 -v /root/apache-php/php:/var/www/html apache-php


接下来是在宿主机中安装配置Nginx服务器

1、安装Nginx服务器

sudo apt-get install -y nginx

2、配置Nginx,这个网上很多说法,都试了试,最后综合了一下才成功,不知道是不是我的问题,不过还是说一下我自己的配置

编辑/etc/nginx/sites-available/default这个文件

先找到server { 修改index这一行,添加index.php,index index.php index.html index.htm;

然后找到location ~ \.php$ {这,取消这6行注释

location ~ \.php$ {
	fastcgi_split_path_info ^(.+\.php)(/.+)$;
	fastcgi_pass 127.0.0.1:9000;
	fastcgi_index index.php;
	include fastcgi_params;
}

保存文件,命令行输入/etc/init.d/nginx reload 使配置生效
3、安装php sudo apt-get install -y php5-fpm

 
  

4、配置php监听端口 /etxc/php5/fpm/pool.d/www.conf

把 listen = /var/run/php5-fpm.sock 改成 listen = 127.0.0.1:9000

重启php

最后是负载均衡的配置,编辑/etc/nginx/nginx.conf文件

在http { 下添加,

http {
	upstrem balance {
		server 192.168.1.99:1180 weight=5;
		server 192.168.1.99:1280 weight=5;
	}
	server {
		listen 80;
		server_name 192.168.1.99;
		location / {
			proxy_pass http://balance;
		}
	}
}

 
  保存文件,重启Nginx服务器,service nginx restart。 
  

用浏览器访问192.168.1.99/info.php就会发现浏览器显示


刷新后,显示,说明配置成功











你可能感兴趣的:(Docker,docker,负载均衡,nginx,apache,ubuntu)