centos7安装docker并配置php运行环境
Posted lonelyxmas
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos7安装docker并配置php运行环境相关的知识,希望对你有一定的参考价值。
原文:centos7安装docker并配置php运行环境
一、安装docker
首先我们先来了解一下什么是docker。
docker是一个虚拟化的技术,基于 Linux 内核,是将进程进行封装隔离,由于隔离的进程独立于宿主机和其它的隔离的进程,因此也可以称为容器。很多人把docker理解为虚拟机,其实不是的,因为它不需要进行硬件虚拟以及运行完整操作系统等额外开销的,docker的出现也是为了解决在各种复杂的环境下不需要做任何的修改还可以保证程序正常稳定的运行,也就是环境一致性的问题,当然还有kubernets,简称k8s,是把docker容器的管理和编排做成自动化,下一篇文章中在对k8s进行介绍。
接下来进入正题开始安装docker
1.卸载旧版的docker
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
2.安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
3.更换yum源,更换为国内镜像,下载更快
yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
4.安装docker
yum-config-manager --enable docker-ce-nightly #获取夜间通道的存储库
yum makecache fast #更新yum缓存
yum install -y docker-ce #安装docker
5.启动docker,建立docker用户组并将当前用户加入用户组
systemctl start docker
groupadd docker #创建用户组
usermod -aG docker $USER #将当前用户加入用户组
6.添加docker镜像加速器,在/etc/docker/daemon.json
中写入如下内容(如果文件不存在就创建一下)
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com"
]
}
7.重启服务
systemctl daemon-reload
systemctl enable docker
systemctl restart docker
来测试一下docker是否安装成功
docker run hello-world
当出现了如图所示,证明安装成功了
二、使用docker配置php运行环境
首先,要创建一个私有网络,不创建也可以配置环境,但是要将端口暴漏在外网,容器之间使用--link参数来连接,这样是不安全的,创建一个私有的网络只需要暴露出80端口,这样更加的安全。
1.创建私有网络
docker network create lnmp
这样就创建了一个名称为lnmp的私有网络
2.配置mysql容器
docker run --network lnmp --name mysql -v /home/lnmp/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d --privileged=true mysql
### 命令说明:
--network :将mysql容器在私有网络中运行
--name 给容器指定别名
-v /home/lnmp/mysql/:/var/lib/mysql:将主机当前用户目录下的mysql文件夹挂载到容器的/var/lib/mysql 下,在mysql容器中产生的数据就会保存在本机mysql目录下
-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码
-d 后台运行容器
--privileged=true 可能会碰到权限问题,需要加参数
直接运行一个容器,docker会自动执行pull这个镜像文件,这样mysql就配置成功了
3.配置nginx容器
首先先运行一个nginx容器
docker run --name mynginx -p 80:80 -d -v /home/lnmp/nginx/html:/usr/share/nginx/html -d nginx
cd到home/lnmp/nginx文件夹复制nginx配置文件目录
cd /home/lnmp/nginx
docker cp mynginx:/etc/nginx/conf.d conf.d
此时就会发现已经将容器中的nginx配置文件夹以及配置文件复制下来了
现在我们就删除之前创建的nginx容器重新创建
docker stop mynginx #停止容器
docker rm mynginx #删除容器
docker run --name mynginx -p 80:80 --network lnmp -v /home/lnmp/nginx/html:/usr/share/nginx/html -v /home/lnmp/nginx/conf.d:/etc/nginx/conf.d/ -d nginx
然后我们cd到/home/lnmp/nginx/html文件夹下,创建一个index.html文件随便写点内容访问试一下
cd /home/lnmp/nginx/html
vim index.html
写好之后访问服务器ip地址
当看到这个页面,nginx容器也就运行成功了
这里我们介绍一些docker容器操作的简单命令
docker ps -a # 查看正在运行的容器
docker ps # 查看容器
docker stop mynginx # 停止正在运行的容器
docker start mynginx # 启动一个已经停止的容器
docker restart mynginx # 重启一个容器
docker rm mynginx # 删除容器
4.配置php容器
和nginx一样的,我们先运行一个php容器来复制php的配置文件
注意:需要不同版本的php在最后php:后面加上版本号,例如需要php7.1的版本的镜像,最后就应该写php:7.1-fpm
docker run --name myphp --network lnmp -d php:7.1-fpm
cd到/home/lnmp/下创建php文件夹,进入php文件夹复制配置文件
cd /home/lnmp/
mkdir php
cd php/
docker cp myphp:/usr/local/etc/php-fpm.d/www.conf www.conf
接下来复制php.ini文件,先进入容器解压文件在进行复制
# 先进入容器
docker exec -it myphp bash
cd /usr/src/ # 进入文件夹
xz -d php.tar.xz #解压xz文件
tar -xvf php.tar #解压tar文件
解压完毕后, php.ini-production
就有了,我的路径是/usr/src/php-7.1.32/php.ini-production 这个路径是看解压后的路径
这时我们来复制php.ini文件
docker cp myphp:/usr/src/php-7.1.32/php.ini-production php.ini
成功之后我们就会看到php文件夹下有两个配置文件了
我们删除这个容器,来重新运行容器
docker stop myphp
docker rm myphp
docker run --name myphp --network lnmp -v /home/lnmp/nginx/html:/var/www/html -v /home/lnmp/php/www.conf:/usr/local/etc/php-fpm.d/www.conf -v /home/lnmp/php/php.ini:/usr/local/etc/php/php.ini -d php:7.1-fpm
我们来验证一下php容器是否成功
5.修改nginx配置文件
cd到/home/lnmp/nginx/conf.d文件夹下修改配置文件,复制一下内容到配置文件中
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.php index.html index.htm;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
#root /usr/share/nginx/html;
#index index.php index.html index.htm;
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
location = /40x.html {
root /user/share/nginx/html;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ .php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ .php$ {
root /var/www/html/;
fastcgi_pass myphp:9000;
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# deny access to .htaccess files, if Apache‘s document root
# concurs with nginx‘s one
#
location ~ /.ht {
deny all;
}
}
配置文件的关键点在于解析php文件使用的是php容器 ,如果你的php容器名称不一样的话,可以更改fastcgi_pass myphp:9000;,更改为fastcgi_pass 容器名:9000。
重启nginx容器
docker restart mynginx
cd进入/home/lnmp/nginx/html文件夹下创建index.php文件写入内容
<?php
phpinfo();
?>
打开浏览器在服务器ip地址后加上index.php
看到了熟悉的phpinfo页面配置成功了。
我也是学习docker的新手,配置环境的只是第一步,成功后来写的笔记,中间的流程肯定还可以省略,比如使用dockerfile,更加的便捷,后来学习到k8s的时候,也会来记录笔记的,也希望有缘人能够和我共同学习进步
以上是关于centos7安装docker并配置php运行环境的主要内容,如果未能解决你的问题,请参考以下文章
docker配置centos7的python2.7下scrapy基础环境遇到的问题