docker分离部署lnmp-阿里云开发者社区

开发者社区> 技术小大人> 正文

docker分离部署lnmp

简介:
+关注继续查看

以下所需的全部的文件、镜像、软件,如有需要请到我的百度云分享下载:

链接:http://pan.baidu.com/s/1kUVNdsj 密码:an9l

项目需求:

构建lnmp平台。

要求nginx、php、mysql分开布署。

Nginx通过fastcgi方式支持php动态页面


wKiom1jEvxnCvpeaAADrcBHZq3s410.png

实验完整框架如下:

wKioL1jEvxujuZIMAADm14-TS1g298.png

说明:使用单一进程容器,即一个容器只运行一种服务,而不是把所有服务放在一个容器的设计,让lnmp项目需要的Nginx、PHP、MySQL组件,分别运行在各自镜像创建出来的独立容器中。

实验步骤如下

1、安装docker1.12并开始服务

1)安装docker1.12

wKioL1jEwJWjloX5AADqXOESqro483.png

2)开启docker服务并开机自启

wKiom1jEvxzglFZGAAAgtNp6I-s042.jpg

3)关闭selinux(一定要关闭)

wKioL1jEvx3Q5oRSAACWHCrIc8c147.jpg

4)开启路由转发功能

wKiom1jEvx6yT438AABPSsPzv48597.jpg

5)下载centos6镜像

(我这里已经下载好,并做成了归档压缩包,只用解压即可)

wKiom1jEvx7A-20vAAAhxHxJYcc523.jpg

2、创建实验所用文件夹以及文件

1)分别创建工作目录

wKioL1jEvyCgPU01AAB_V8o6KEQ096.jpg

2)再分别创建相应目录下的文件和子目录

wKioL1jEvyLgXGc3AACxVMbYtgw124.png

3、分别编辑nginx、php、mysql的dockerfile文件以及各自的supervisord.conf文件

1)nginx

①编辑nginx的dockerfile文件

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配置文件

wKioL1jEvyTh1ucuAAAqwub5J04264.png

③docker build -t命令制作nginx镜像

wKiom1jEvyXBnr4HAABRrr5-8Q4762.jpg

④镜像制作完成

wKiom1jEvyXT1t0IAAAm87PujjU340.jpg

2)php

①编辑php的dockerfile文件

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配置文件

wKioL1jEvyey4ctjAAAqOywSDQs144.png

③docker build -t命令制作php镜像

wKiom1jEvyigebWvAABZmNa6Mr8396.jpg

④镜像制作完成

wKiom1jEvyngX-HdAAAq8lg1sds505.jpg

3)mysql

①编辑mysql的dockerfile文件

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配置文件

wKioL1jEvyqAn1N1AAArU4U4-5Q524.png

③docker build -t命令制作mysql镜像

wKiom1jEvyuwDEQWAABgqtUWZyE422.jpg

④镜像制作完成

wKioL1jEvyzTfxODAAAxNHCJ0E8776.jpg

4、编写docker-compose.yml文件

wKiom1jEvy2xqjIoAAA5sEZFzV8210.png

wKiom1jEvy6gG6vvAABvvLw4F6I038.jpg

5、安装docker-compose

1)先安装pip

wKioL1jEvy6hk0dRAAA0hLhiI7c909.jpg

 

wKioL1jEvy-gKPCnAABxdXhKQ_0797.jpg

2)再安装compose

wKiom1jEvzDzUsR2AAA9gowX9Is733.jpg

wKioL1jEvzHzLdfqAAA4W09KdrU657.jpg

6、通过docker-compose启动项目

wKiom1jEvzKhUzrSAAAs0wP58bI509.jpg

7、进入mysql容器修改数据库root密码以及创建数据库和创建授权用户

1)修改数据库用户root密码

wKioL1jEvzLTbKWBAAA-tmHAgeY241.jpg

2)创建数据库

wKiom1jEwgeQX92GAADyiZt-yC8712.png

3)创建授权用户

wKiom1jEwirzO0joAAA4_HroVqc592.png

4)给root用户授予全部权限

wKioL1jEvzSxG-HfAAAanuvYAZM623.jpg

8、做html、php页面和数据库访问测试

1)制作html、php测试页

wKiom1jEvzXxQ-KrAABb-QYUVmo580.png

2)测试nginx和php的访问处理

wKiom1jEvzajBWJvAAAkoAwucXo033.png

wKioL1jEv3ygc-SDAAA8lcdzSOw034.jpg

3)制作数据库的测试页面

wKiom1jEwr2Tyz7DAABx4pko1C0733.png

4)测试数据库连接

wKiom1jEv3-B7Un7AAAqc6RZakA316.png

至此说明nginx、php、mysql三者的协同工作已经没有问题了

8、安装一个电影网站,做最后的lnmp协同工作测试

1)解压缩SKYUC

wKioL1jEv3-StBCAAAA01KGokaQ273.jpg

2)设置权限

wKiom1jEv4DzpDa8AAA9plK_wsE500.jpg

分别去nginx和php容器给予权限:

php:

wKioL1jEv4DDl_olAAA2Zxp8tQw367.jpg

nginx

wKiom1jEv4CAR0ogAAA2ZM6gtn8804.jpg

3)宿主机防火墙开启80例外

wKioL1jEv4Gy-KnSAABFZPAzHK0999.jpg

4)在一台客户机安装SKYUC

wKiom1jEv4GgGOccAABrvDRjCbk278.jpg

wKioL1jEv4GC1KEpAABco6KqrY4816.jpg

wKiom1jEv4KBp6GJAABPAjGRLhI236.jpg

wKioL1jEv4LBJrfSAAB6u36iBcU654.jpg


本文转自Mr大表哥 博客,原文链接: http://blog.51cto.com/zpf666/1905555    如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JavaScript、PHP、Golang、Haskell、Elixir,哪个才是最佳编程语言?
  在过去的几年里,我有机会尝试了多种不同的编程语言。   我非常喜欢学习不同的语言、方法和范式。我是一个充满好奇心的人,一直对编程语言十分着迷。每种编程语言都是不同的,在本文中,我们来讨论一下以下五大编程语言的优点以及缺点。
3 0
亚信数据新一代PaaS平台是如何炼成的?
  日前,亚信数据发布旗下多款PaaS产品,包括亚信分布式数据库ADB、容器云计算平台HPS、大数据云平台DCP。这三款产品在亚信内部历经了3年的研发投入和攻关,并在客户项目中得到了实践部署。随着这些系列产品的正式亮相,它们共同构建了亚信完整的PaaS平台解决方案,将亚信拥有的大数据、CRM(客户关系管理系统)、BOSS(业务运营支撑系统)以及众多核心能力逐渐服务化、组件化,由该平台统一承载。
5 0
从时延毛刺问题定位到 Netty 的性能统计设计(下)
从时延毛刺问题定位到 Netty 的性能统计设计(下)
4 0
程序员真的是吃青春饭吗?如何面对传说中的 35 岁职业焦虑?
  正走在这条路上的你或许也曾想过这些问题。这一次,力扣邀请到了《高效制胜——程序员面试典型题解》作者吴江(迈克老师),分享他 35 岁跳槽,并拿到了技术负责人 Offer,实现收入增长的故事和面试准备经验。   — 01 —   “35 岁危机”真有那么可怕吗?   在 2018 年快过春节的时候,我们部门突然被通知要开一个会,会上通知我们部门要在明年的这个时候被整体裁掉。我在这家五百强外企已经待了五年,当时虽然有这个预感,但是真的听到正式通知时,不免还是感觉有点震惊。
3 0
使用 Go 语言编写的恶意软件激增 2000%
  近日,网络安全公司 Intezer 发布了 2022 年基于 Go 语言恶意软件的报告。报告指出:恶意软件的开发者已经从 C 和 C++ 逐渐转向 Go 语言,自 2017 年以来,基于 Go 语言的恶意软件数量呈现爆发式增长,增幅超过了 2000%。   自从 2012 年发现了第一个使用 Go 语言编写的恶意软件之后,Go 语言就在恶意软件领域渐渐流行起来了。2019 年 7 月,Palo Alto Networks 发布了一份使用 Go 语言编写的恶意软件分析报告。报告发现,2019 年以前使用 Go 语言编写恶意软件是一件罕见的事情,但到了 2019 年,这种情况每天都会发生,2
4 0
阿里巴巴数据库分库分表的实践(1)
阿里巴巴数据库分库分表的实践(1)
3 0
使用阿里云ECS搭建个人网站
学习在ECS上如何搭建个人网站
21 0
阿里云飞天加速计划
阿里云服务器是一个非常好的学习平台,我们定会用来提升自身的专业能力。
8 0
互联网创业公司的技术团队构建
互联网创业公司的技术团队构建
6 0
1561
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载