目录
4.3 准备 php.ini、php-fpm.conf、www.conf 配置文件
前言
在 Docker 上搭建 LNMP 架构(Linux + Nginx + MySQL + PHP)是一种常见的做法,可以通过容器化技术轻松地部署和管理整个 Web 应用程序的运行环境
- Linux:作为操作系统,提供了稳定的运行环境
- Nginx:作为Web服务器,具有高性能和高并发处理能力,可以作为反向代理服务器,负责接收用户的请求并将请求转发给后端的应用服务器
- MySQL:作为关系型数据库,提供了数据存储和管理的功能
- PHP(或Python、Perl):作为服务器端脚本语言,用于处理用户的请求,生成动态的网页内容
1、任务要求
需要使用 Docker 技术在一台主机上创建LNMP服务并运行Wordpress网站平台,然后对此服务进行相关的性能调优和管理工作
宿主机 | 操作系统 | IP地址 | 主要软件 | 配置要求 |
---|---|---|---|---|
Docker | CentOS 7 | 172.16.12.15 | Docker 19.03 |
4核8G以上 |
容器 | 操作系统 | IP地址 | 主要软件 |
---|---|---|---|
nginx | CentOS 7 | 172.20.0.10 | Docker-Nginx |
mysql | CentOS 7 | 172.20.0.20 | Docker-Mysql |
php | CentOS 7 | 172.20.0.30 | Docker-php |
- 使用 Docker 构建 LNMP 环境并运行 Wordpress 网站平台
- 限制 Nginx 容器最多使用 500MB 的内存和 1G 的 Swap
- 限制 Mysql 容器写 /dev/sda 的速率为 10 MB/s
- 将所有容器进行快照,然后将 Docker 镜像打包成 tar 包备份到本地
(1)关闭防火墙和核心防护
systemctl disable --now firewalld
setenforce 0
(2)自定义网络docker1
docker network create --subnet=172.20.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork
(3)所有安装包下载
wget https://cdn.mysql.com//archives/mysql-5.7/mysql-boost-5.7.20.tar.gz
wget http://nginx.org/download/nginx-1.12.0.tar.gz
wget https://www.php.net/distributions/php-7.1.10.tar.bz2
wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
2、Nginx 镜像创建
2.1 建立工作目录并上传相关安装包
mkdir -p /opt/lnmp/nginx/html
cd /opt/lnmp/nginx
#需在此路径上传 nginx 安装包 nginx-1.12.0.tar.gz
cd /opt/lnmp/nginx/html
#需在此路径上传 wordpress 服务包 wordpress-4.9.4-zh_CN.tar.gz
cd /opt/lnmp/nginx/html/ #切换目录
tar xf wordpress-4.9.4-zh_CN.tar.gz #解压安装包
2.2 编写 Nginx Dockerfile 脚本
cd /opt/lnmp/nginx
vim Dockerfile
FROM centos:7
MAINTAINER this is nginx image <lnmp>
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.0.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module;make -j 4 && make install
ENV PATH /usr/local/nginx/sbin:$PATH
ADD nginx.conf /usr/local/nginx/conf/
#ADD html/wordpress-4.9.4-zh_CN.tar.gz /usr/local/nginx/html
RUN chmod 777 -R /usr/local/nginx/html/
EXPOSE 80
EXPOSE 443
VOLUME [ "/usr/local/nginx/html/" ]
CMD [ "/usr/local/nginx/sbin/nginx","-g","daemon off;" ]
2.3 准备 nginx.conf 配置文件
#需上传nginx的主配置文件到/opt/lnmp/nginx目录下,再过滤查看其生效的配置
egrep -v "^(.)*#(.)*$" nginx.conf | grep -v "^$"
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
charset utf-8;
location / {
root html;
index index.html index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root html;
fastcgi_pass 172.20.0.30:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
}
}
2.4 生成镜像
docker build -t nginx:lnmp .
# -t 参数用于指定构建镜像的名称及标签
# . 就是指示Docker在当前目录中查找名为Dockerfile的文件,并以此文件作为构建镜像的基础
docker images #查看所有镜像