centos 7.2 64位 docker安装lamp环境
1. 删除docker可能有的早期版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2. 安装docker需要的一些依赖
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
3. 配置docker的repo以便yum install时能够使用到最新的docker版本image
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
4. 安装docker-ce及cli
yum install docker-ce docker-ce-cli containerd.io
5. 立即启动docker engine并设置开机启动
systemctl start docker
systemctl enable docker
systemctl list-unit-files | grep enabled 检查确认是否已经开机启动
6. 试运行docker container
docker run hello-world
结果出错,google后发现是kernel不匹配,因为centos7.2的kernel太旧,必须更新kernel
下面将记录如何将centos7.2升级kernel到5.0,以下链接可以供参考:
https://www.tecmint.com/install-upgrade-kernel-version-in-centos-7/
https://www.jianshu.com/p/1261ed6f8399
7.配置repo,并且安装最新的linux kernel(5.0)
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml
8. 将5.0的kernel在centos7.2中配置为开机默认项
/etc/default/grub 中增加一个GRUB_DEFAULT=0 这样就选择最新安装的那个kernel了
grub2-mkconfig -o /boot/grub2/grub.cfg 重新生成kernel配置信息,以便自动应用新安装的kernel
9. 重新启动
10. 如果有必要可以创建一个docker group,并将对应用户名加到这个group中,避免使用root直接操作,提高安全性
groupadd docker
11. 镜像加速:
在/etc/docker/daemon.json文件中添加以下内容,
{
"registry-mirrors": ["https://etomhx9s.mirror.aliyuncs.com"]
}
并执行:
sudo systemctl daemon-reload
sudo systemctl restart docker
之后所有对docker官方的镜像都会自动加速使用阿里云的mirror
12. centos安装docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
13. 安装command-line completion以便使用tab键快速列出可选子命令
请参考页面: https://docs.docker.com/compose/completion/
curl -L https://raw.githubusercontent.com/docker/compose/1.23.2/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
//// trouble shooting:
curl https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh > check-config.sh
bash ./check-config.sh
准备工作已经做完,下面需要安裝nginx+php-fpm(7.1)+mysql(5.6.35)+redis的容器了.
思路是:通过docker-compose方式来编排微服务,分别切分为nginx web服务器,nginx使用官方镜像;upstream php-fpm应用服务,php-fpm则基于官方7.1的镜像添加一些扩展安装以及composer安装,
注意php-fpm7.2以上版本往往会出现以下错误"Parameter must be an array or an object that implements Countable"
mysql和redis也直接使用官方镜像起一个微服务即可。其中mysql使用一个volume直接应用已经存在的数据库文件,后续可以考虑使用一个数据卷容器来服务数据
由于众所周知的伟大的墙,给我们苦逼的程序猿带来了太多的麻烦,好在docker公司提供的play-with-docker可以免费提供4G内存的云主机足够我们使用。我们直接在该云主机上使用docker-compose build命令做镜像构建,随后push到docker hub上。最后在国内的主机上docker pull下来镜像并使用docker-compose up -d nginx一下子就把所有服务拉起了!
14. 将我们的docker-compose up -d xxx作为开机启动
a)在/etc/systemd/system目录中创建一个myapp.service文本文件
[Unit]
Description=myappservice
After=docker.service#注意本服务依赖于docker service,而dockerservice又require docker.socket 必须在docker engine起来之后才能执行,docker启动比较慢,需要2分钟左右
[Service]
# see man systemd.service
Type=oneshot
WorkingDirectory=/yourworkingdirectory
ExecStart=/yourworkingdirectory/start-all.sh
RemainAfterExit=true
ExecStop=/yourworkingdirectory/stop-all.sh
StandardOutput=journal
[Install]
WantedBy=multi-user.target
b)在/yourworkingdirectory中分别创建start-all和stop-all.sh脚本
#!/bin/bash
# This is the stop script
docker-compose up -d xx
#!/bin/bash
# This is the stop script
docker-compose stop
c)将启动和停止脚本赋予执行权限: chmod u+x start-all.sh
d)# systemctl enable yourservice
Created symlink from /etc/systemd/system/multi-user.target.wants/yourservice.service to /etc/systemd/system/yourserivce.service.
搞定!
optional:
你可能希望起一个mysqladmin方便你图形化管理数据库
docker run --name myadmin -d --link dockerdeployconf_mysql_1:mysql --net dockerdeployconf_default -e PMA_HOST=mysql -p : phpmyadmin/phpmyadmin
docker-compose.yml
version: ''
services:
myapp:
build:
context: /pathtoconfig
dockerfile: Dockerfile-phpfpm
image: xx/myimage:7.1
depends_on:
- mysql
- redis
volumes:
- /pathtophpapp/:/application mysql:
image: mysql:5.6
environment:
- MYSQL_ROOT_PASSWORD=yourrootpassword
- MYSQL_DATABASE=yourdatabase
volumes:
- /pathtodatafile/:/var/lib/mysql nginx:
image: nginx
ports:
- "80:8000"
volumes:
- /pathtoconfig/nginx.conf:/etc/nginx/conf.d/default.conf
- /pathtophpapp/:/application
depends_on:
- myapp
redis:
image: redis
ports:
- "6379:6379"
dockerfile-phpfpm
FROM php:7.1-fpm
LABEL maintainer="zhang@xx.com" # Installing dependencies
RUN apt-get update && apt-get install -y \
build-essential \
mysql-client \
libpng-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
libzip-dev \
locales \
zip \
jpegoptim optipng pngquant gifsicle # Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/* # Installing extensions
RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl bcmath opcache
RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/
RUN docker-php-ext-install gd # Installing composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer # Setting locales
RUN echo zh_CN.UTF-8 UTF-8 > /etc/locale.gen && locale-gen # Changing Workdir
WORKDIR /application
nginx.conf
server {
listen ;
index index.php index.html index.htm;
root /application/public; # default Laravel's entry point for all requests
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
# try to serve file directly, fallback to index.php
try_files $uri /index.php?$args;
}
location ~ \.php$ {
fastcgi_index index.php;
fastcgi_pass myapp:; # address of a fastCGI server
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_https://github.com/rlerdorf/php7dev/issues/48_info;
include fastcgi_params;
}
}
其中需要另外注意的一点是:
php-fpm的log搜集问题:
catch_workers_output = yes https://github.com/rlerdorf/php7dev/issues/48
https://stackoverflow.com/questions/8677493/php-fpm-doesnt-write-to-error-log
centos 7.2 64位 docker安装lamp环境的更多相关文章
- 阿里云服务器 CentOS 7.5 64位 docker安装redis集群
网上有很多教程可以参考,但是遇到坑了...... 最后参考这个教程成功了.https://www.cnblogs.com/hbbbs/articles/10028771.html 安装docker 参 ...
- CentOS 6.5 64位下安装Redis3.0.2的具体流程
系统环境:CentOS 6.5 64位 安装方式:编译安装 防火墙:开启 Redis版本:Redis 3.0.2 一.环境准备 1.安装 gcc gcc-c++ [root@iZ94ebgv853Z ...
- Linux CentOS 6.5 64位 静默安装Oracle11g 云主机
本例: 通过SSH远程连接云主机,上传oracle11g安装包,在centos6.5上无图形化界面静默安装oracle11g. 涉及工具及环境: 1.本地环境windows7+ssh远程连接工具xSh ...
- docker 安装LAMP环境
LAMP:Linux.Apache.MySQL.PHP docker hub 上会有配好的LAMP环境docker,部署到本地并运行起来 sudo docker pull linode/lamp 然后 ...
- CentOS 6.5 64位下安装MySQL 5.7.11
昨天花了一下午在CentOS6.5 上安装了MySQL,版本为5.7.11,下面介绍一下我安装时候出现的问题 以及解决方法,供大家参考. 1/清除残留 rpm -qa | grep mysql // ...
- 在 CentOS 7.5 64位上使用 yum 安装 MySQL 8.0
前段时间在 CentOS 7.5 64位上安装 MySQL 8.0.查了些资料,在这里记录一下详细的安装和设置步骤. 一.安装 使用yum安装MySQL之前需要先下载对应的.rpm文件,下载方法: 去 ...
- 阿里云服务器CentOS 5.7(64位)安装配置LAMP服务器(Apache+PHP5+MySQL)
一.快速安装Apache+PHP5+MySql ----------------------------------------------------- 补充:由于163的yum源上只有php5.1 ...
- CentOS 6.3 64位下MySQL5.1.54源码安装配置详解
安装环境:CentOS 6.3 64位 一:先安装依赖包(不然配置的时候会报错的!) yum -y install ncurses* libtermcap* 新建mysql用户 [root@clien ...
- 使用centos 5.x 64位系统安装astgo 2014 v7.3教程(含全套安装文件)
版本特色: 全自动安装 安装过程中不用频繁输入yes或回车 自带完整号码归属地数据库 自带触屏版WAP ·首先确定你需要使用astgo 2014 7.0还是7.3: astgo 2014 v 7.0 ...
随机推荐
- python --商品规格--表结构设计
商品规格表结构设计 商品规格包括规格组合.规格项,规格项为规格组的成员. 规格组 |-规格项:规格值 |-规格项:规格值 规格组 |-规格项:规格值 |-规格项:规格值 同一类商品的规格相同. 方案一 ...
- [每天解决一问题系列 - 0007] 如何创建Catalog并用其签名
问题描述: 校验一组文件的完整性 解决方法: https://msdn.microsoft.com/en-us/library/windows/desktop/aa386967(v=vs.85).as ...
- 对nginx中location的认识
关于一些对location认识的误区 1.location的匹配顺序是“先匹配正则,在匹配普通”. location的匹配顺序其实是“先匹配普通,在匹配正则”.造成误解的原因是:正则匹配会覆盖普通匹配 ...
- php几种常见排序算法
<?php //从时间上来看,快速排序和归并排序在时间上比较有优势,//但是也比不上sort排序,归并排序比较占用内存! $arr = [4,6,1,2,3,89,56,34,56,23,65] ...
- Dapper内部分享ppt
http://www.knowsky.com/887446.htmlhttp://www.tritac.com/bp-24-dapper-net-by-examplehttp://www.cnblog ...
- Android的Touch事件分发机制简单探析
前言 Android中关于触摸事件的分发传递是一个很值得研究的东西.曾不见你引入了一个ListView的滑动功能,ListView就不听你手指的指唤来滚动了:也不知道为啥Button设置了onClic ...
- Apache Commons Beanutils 三 (BeanUtils、ConvertUtils、CollectionUtils...)
前言 前面已经学习了Apache Commons Beanutils包里的PropertyUtils和动态bean,接下来将学习剩下的几个工具类,个人觉得还是非常实用的,特别是CollectionUt ...
- 从零开始学 Web 之 CSS3(七)多列布局,伸缩布局
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- MySQL 设计规范
一.数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名 ...
- JVM内存区域划分及垃圾回收
第一部分.闲扯+概述 近来在研读<深入理解java虚拟机>一书,读完之后做个小结,算是记录一下自己的学习所得,在成长的路上,只能死磕. 要理解JVM,就要先从其内存区域划分开始,知道其由几 ...