以下所需的全部的文件、镜像、软件,如有需要请到我的百度云分享下载:
链接:http://pan.baidu.com/s/1kUVNdsj 密码:an9l
项目需求:
构建lnmp平台。
要求nginx、php、mysql分开布署。
Nginx通过fastcgi方式支持php动态页面
实验完整框架如下:
说明:使用单一进程容器,即一个容器只运行一种服务,而不是把所有服务放在一个容器的设计,让lnmp项目需要的Nginx、PHP、MySQL组件,分别运行在各自镜像创建出来的独立容器中。
实验步骤如下:
1、安装docker1.12并开始服务
1)安装docker1.12
2)开启docker服务并开机自启
3)关闭selinux(一定要关闭)
4)开启路由转发功能
5)下载centos6镜像
(我这里已经下载好,并做成了归档压缩包,只用解压即可)
2、创建实验所用文件夹以及文件
1)分别创建工作目录
2)再分别创建相应目录下的文件和子目录
3、分别编辑nginx、php、mysql的dockerfile文件以及各自的supervisord.conf文件
1)nginx
①编辑nginx的dockerfile文件
#images of nginx
FROM centos:centos6
MAINTAINER from zhengpengfei@example.com
#install supervisor
RUN yum -y install python-setuptools
RUN /usr/bin/easy_install supervisor
#install nginx
RUN yum -y install pcre-devel zlib-devel gcc make
ADD ./software/nginx-1.6.2.tar.gz /usr/src
RUN useradd -M -s /sbin/nologin nginx
RUN cd /usr/src/nginx-1.6.2/ && ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --user=nginx --group=nginx && make && make install
#Modify nginx configuration file
COPY nginx.conf /usr/local/nginx/conf/
RUN ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
RUN mkdir /usr/local/nginx/html/web
#Open nginx service
COPY supervisord.conf /etc/supervisor/supervisord.conf
EXPOSE 80
CMD ["/usr/bin/supervisord"]
②编写nginx的supervisord.conf配置文件
③docker build -t命令制作nginx镜像
④镜像制作完成
2)php
①编辑php的dockerfile文件
#images of php
FROM centos:centos6
MAINTAINER from zhengpengfei@example.com
#install supervisor
RUN yum -y install python-setuptools
RUN /usr/bin/easy_install supervisor
#install php
RUN yum -y install gd libxml2-devel libjpeg-devel libpng-devel mysql-devel gcc make
RUN useradd -M -s /sbin/nologin php
ADD ./software/php-5.3.28.tar.gz /usr/src
RUN cd /usr/src/php-5.3.28/
RUN cp /usr/lib64/mysql/libmysqlclient.so.16.0.0 /usr/lib/libmysqlclient.so
RUN cd /usr/src/php-5.3.28/ && ./configure --prefix=/usr/local/php --with-gd --with-zlib --with-mysql --with-mysqli --with-mysql-sock --with-config-file-path=/usr/local/php --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib && make && make install
#Modify PHP configuration file
RUN cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
COPY php-fpm.conf /usr/local/php/etc/
RUN mkdir -p /var/www/html/web
#Open php-fpm service
ADD ./supervisord.conf /etc/supervisor/supervisord.conf
EXPOSE 9000
CMD ["/usr/bin/supervisord"]
②编写php的supervisord.conf配置文件
③docker build -t命令制作php镜像
④镜像制作完成
3)mysql
①编辑mysql的dockerfile文件
#image of mysql
FROM centos:centos6
MAINTAINER from zhengpengfei@example.com
#install supervisor
RUN yum -y install python-setuptools
RUN /usr/bin/easy_install supervisor
#install mysql
RUN yum -y install ncurses-devel make gcc gcc-c++
ADD ./software/cmake-2.8.12.tar.gz /usr/src
ADD ./software/mysql-5.5.38.tar.gz /usr/src
RUN cd /usr/src/cmake-2.8.12 && ./configure && gmake && gmake install
RUN cd /usr/src/mysql-5.5.38 && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc/ -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all && make && make install
#Optimal adjustment mysql
WORKDIR /usr/src/mysql-5.5.38/
RUN cp -rf ./support-files/my-medium.cnf /etc/my.cnf
RUN cp -rf ./support-files/mysql.server /etc/rc.d/init.d/mysqld
RUN chmod +x /etc/rc.d/init.d/mysqld
RUN echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
RUN source /etc/profile
#Initialize mysql
RUN groupadd mysql
RUN useradd -M -s /sbin/nologin mysql -g mysql
RUN chown -R mysql:mysql /usr/local/mysql
RUN /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/
#service mysql start
ADD ./supervisord.conf /etc/supervisor/supervisord.conf
EXPOSE 3306
CMD ["/usr/bin/supervisord"]
②编写mysql的supervisord.conf配置文件
③docker build -t命令制作mysql镜像
④镜像制作完成
4、编写docker-compose.yml文件
5、安装docker-compose
1)先安装pip
2)再安装compose
6、通过docker-compose启动项目
7、进入mysql容器修改数据库root密码以及创建数据库和创建授权用户
1)修改数据库用户root密码
2)创建数据库
3)创建授权用户
4)给root用户授予全部权限
8、做html、php页面和数据库访问测试
1)制作html、php测试页
2)测试nginx和php的访问处理
3)制作数据库的测试页面
4)测试数据库连接
至此说明nginx、php、mysql三者的协同工作已经没有问题了
8、安装一个电影网站,做最后的lnmp协同工作测试
1)解压缩SKYUC
2)设置权限
分别去nginx和php容器给予权限:
php:
nginx:
3)宿主机防火墙开启80例外
4)在一台客户机安装SKYUC
本文转自Mr大表哥 博客,原文链接: http://blog.51cto.com/zpf666/1905555 如需转载请自行联系原作者