以下所需的全部的文件、镜像、软件,如有需要请到我的百度云分享下载:
链接:http://pan.baidu.com/s/1kUVNdsj 密码:an9l
项目需求:
构建lnmp平台。
要求nginx、php、mysql分开布署。
Nginx通过fastcgi方式支持php动态页面
![image001.png wKiom1jEvxnCvpeaAADrcBHZq3s410.png]()
实验完整框架如下:
![image002.png wKioL1jEvxujuZIMAADm14-TS1g298.png]()
说明:使用单一进程容器,即一个容器只运行一种服务,而不是把所有服务放在一个容器的设计,让lnmp项目需要的Nginx、PHP、MySQL组件,分别运行在各自镜像创建出来的独立容器中。
实验步骤如下:
1、安装docker1.12并开始服务
1)安装docker1.12
![9$RY3]8YJW)WC5`K9S}QR9L.png wKioL1jEwJWjloX5AADqXOESqro483.png]()
2)开启docker服务并开机自启
![image003.jpg wKiom1jEvxzglFZGAAAgtNp6I-s042.jpg]()
3)关闭selinux(一定要关闭)
![image004.jpg wKioL1jEvx3Q5oRSAACWHCrIc8c147.jpg]()
4)开启路由转发功能
![image005.jpg wKiom1jEvx6yT438AABPSsPzv48597.jpg]()
5)下载centos6镜像
(我这里已经下载好,并做成了归档压缩包,只用解压即可)
![image006.jpg wKiom1jEvx7A-20vAAAhxHxJYcc523.jpg]()
2、创建实验所用文件夹以及文件
1)分别创建工作目录
![image007.jpg wKioL1jEvyCgPU01AAB_V8o6KEQ096.jpg]()
2)再分别创建相应目录下的文件和子目录
![image008.png wKioL1jEvyLgXGc3AACxVMbYtgw124.png]()
3、分别编辑nginx、php、mysql的dockerfile文件以及各自的supervisord.conf文件
1)nginx
①编辑nginx的dockerfile文件
![image009.jpg wKiom1jEvyOBCE2YAAA-aUdaFl8937.jpg]()
#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配置文件
![image010.png wKioL1jEvyTh1ucuAAAqwub5J04264.png]()
③docker build -t命令制作nginx镜像
![image011.jpg wKiom1jEvyXBnr4HAABRrr5-8Q4762.jpg]()
④镜像制作完成
![image012.jpg wKiom1jEvyXT1t0IAAAm87PujjU340.jpg]()
2)php
①编辑php的dockerfile文件
![image013.jpg wKioL1jEvyaDKmcrAABPpXO45N4927.jpg]()
#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配置文件
![image014.png wKioL1jEvyey4ctjAAAqOywSDQs144.png]()
③docker build -t命令制作php镜像
![image015.jpg wKiom1jEvyigebWvAABZmNa6Mr8396.jpg]()
④镜像制作完成
![image016.jpg wKiom1jEvyngX-HdAAAq8lg1sds505.jpg]()
3)mysql
①编辑mysql的dockerfile文件
![image017.jpg wKioL1jEvymDgviEAABi7YaTMqM644.jpg]()
#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配置文件
![image018.png wKioL1jEvyqAn1N1AAArU4U4-5Q524.png]()
③docker build -t命令制作mysql镜像
![image019.jpg wKiom1jEvyuwDEQWAABgqtUWZyE422.jpg]()
④镜像制作完成
![image020.jpg wKioL1jEvyzTfxODAAAxNHCJ0E8776.jpg]()
4、编写docker-compose.yml文件
![image021.png wKiom1jEvy2xqjIoAAA5sEZFzV8210.png]()
![image022.jpg wKiom1jEvy6gG6vvAABvvLw4F6I038.jpg]()
5、安装docker-compose
1)先安装pip
![image023.jpg wKioL1jEvy6hk0dRAAA0hLhiI7c909.jpg]()
![image024.jpg wKioL1jEvy-gKPCnAABxdXhKQ_0797.jpg]()
2)再安装compose
![image025.jpg wKiom1jEvzDzUsR2AAA9gowX9Is733.jpg]()
![image026.jpg wKioL1jEvzHzLdfqAAA4W09KdrU657.jpg]()
6、通过docker-compose启动项目
![image027.jpg wKiom1jEvzKhUzrSAAAs0wP58bI509.jpg]()
7、进入mysql容器修改数据库root密码以及创建数据库和创建授权用户
1)修改数据库用户root密码
![image028.jpg wKioL1jEvzLTbKWBAAA-tmHAgeY241.jpg]()
2)创建数据库
![N`[[V`)H)M9DXT%G~X(@PU4.png wKiom1jEwgeQX92GAADyiZt-yC8712.png]()
3)创建授权用户
![BS$)JFHP}5$H{N0@_INYVQ1.png wKiom1jEwirzO0joAAA4_HroVqc592.png]()
4)给root用户授予全部权限
![image030.jpg wKioL1jEvzSxG-HfAAAanuvYAZM623.jpg]()
8、做html、php页面和数据库访问测试
1)制作html、php测试页
![image031.png wKiom1jEvzXxQ-KrAABb-QYUVmo580.png]()
2)测试nginx和php的访问处理
![image032.png wKiom1jEvzajBWJvAAAkoAwucXo033.png]()
![image033.jpg wKioL1jEv3ygc-SDAAA8lcdzSOw034.jpg]()
3)制作数据库的测试页面
![DCS)I8B569X7L%0`]GEN]AT.png wKiom1jEwr2Tyz7DAABx4pko1C0733.png]()
4)测试数据库连接
![image035.png wKiom1jEv3-B7Un7AAAqc6RZakA316.png]()
至此说明nginx、php、mysql三者的协同工作已经没有问题了
8、安装一个电影网站,做最后的lnmp协同工作测试
1)解压缩SKYUC
![image036.jpg wKioL1jEv3-StBCAAAA01KGokaQ273.jpg]()
2)设置权限
![image037.jpg wKiom1jEv4DzpDa8AAA9plK_wsE500.jpg]()
分别去nginx和php容器给予权限:
php:
![image038.jpg wKioL1jEv4DDl_olAAA2Zxp8tQw367.jpg]()
nginx:
![image039.jpg wKiom1jEv4CAR0ogAAA2ZM6gtn8804.jpg]()
3)宿主机防火墙开启80例外
![image040.jpg wKioL1jEv4Gy-KnSAABFZPAzHK0999.jpg]()
4)在一台客户机安装SKYUC
![image041.jpg wKiom1jEv4GgGOccAABrvDRjCbk278.jpg]()
![image042.jpg wKioL1jEv4GC1KEpAABco6KqrY4816.jpg]()
![image043.jpg wKiom1jEv4KBp6GJAABPAjGRLhI236.jpg]()
![image044.jpg wKioL1jEv4LBJrfSAAB6u36iBcU654.jpg]()
本文转自Mr大表哥 博客,原文链接: http://blog.51cto.com/zpf666/1905555 如需转载请自行联系原作者