debian9 安装docker 以及在docker中 安装centos 6 安装指定版本的PHP和MySQ

Posted 郭万新

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了debian9 安装docker 以及在docker中 安装centos 6 安装指定版本的PHP和MySQ相关的知识,希望对你有一定的参考价值。

安装docker准备工作

更新包列表

apt update

如果报下面这个错

E: Could not get lock /var/lib/apt/lists/lock

解决办法

1 ##先查看apt资源被那些进程所占用
2  ps -e | grep apt
3 然后杀掉占用的进程就可以apt update了
4 
5 kill -9 **** 
6 ##后面写对应的进程号
安装HTTPS依赖软件包
  • Debian 8 Jessie/Debian 9 Stretch
apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common

配置Docker存储库GPG密钥

1 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
2 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

 add-apt-repository command not found解决方法

apt-get install software-properties-common

 更新包缓冲

apt update

安装docker-ce

apt install docker-ce

启动docker服务

service docker start

启动后pull centos 6

docker pull centos:centos6

docker images 查看拉取到本地的镜像

docker run -id -p 2222:22 -p 8686:80 -p 3308:3306 --name=v2 -v /root/data:/var/vuser  -v /etc/localtime:/etc/localtime d0957ffdf8a2 /bin/bash

把宿主机 2222 、 8686、3308 端口分别映射在 容器的 22 和 80 、3306 端口,容器名为:v2, 并挂载宿主机data目录到容器的vuser 

进入容器

docker exec -it v2 /bin/bash

-----------------------------------------------------------------------

在docker centos6 容器中安装MySQL

在安装指定版本的MySQL时,先到这个网站找到rpm包,把下载连接复制下来

 https://dev.mysql.com/downloads/repo/yum/

 

安装rpm包

安装之前先检测下有没有下载过mysql包 不然的话会报以下错误:

[root@7ee99549b8ce /]# rpm -ivh http://repo.mysql.com//mysql80-community-release-el6-3.noarch.rpm
Retrieving http://repo.mysql.com//mysql80-community-release-el6-3.noarch.rpm
warning: /var/tmp/rpm-tmp.7ngHUn: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
        mysql-community-release conflicts with mysql80-community-release-el6-3.noarc

检测步骤:

1 rpm -qa | grep -i mysql  #查看安装的mysql包
2 yum -y remove mysql80-community-release-el7-1.noarch #移除包
3 #####接下来再安装就不会报错了

安装过程:

 1 rpm -ivh http://repo.mysql.com//mysql80-community-release-el6-3.noarch.rpm 

2 yum makecache

3 yum repolist all| grep mysql
4 vi /etc/yum.repos.d/mysql-community.repo

enabled=1  代表启用下载这个版本的MySQL 

安装修改过版本的mysql

yum install -y mysql-community-server
chkconfig mysqld on         // 设置mysql开机启动
service mysqld start        // 启动mysql服务

在第一次安装数据库后 会随机生成密码

查看密码

grep \'password\' /var/log/mysqld.log

登陆数据库

1> mysql -uroot -p

2> \'输入密码\'

登陆以后修改密码

mysql> ALTER USER \'root\'@\'localhost\' IDENTIFIED BY \'yourpassword\'; #密码必须含有大小写字母和特殊字符  不然的话 会报错!!!

如果使用远程登陆无法连接,这是因为Mysql配置了不支持远程连接引起的

 解决方法  

 

use mysql; 
select host from user where user=\'root\'; update user set host = \'%\' where user = \'root\';
flush privileges;

退出数据库重启数据库服务

service mysqld restart

然后尝试远程连接

-----------------------------------------

安装apache

yum install httpd
chkconfig httpd on // 设置开机启动 
service httpd start // 启动apache服务

  现在打开浏览器输入服务器ip 和一开始映射的端口 就可以打开apache页面了

----------------------------------------

安装 php 5.5.X

安装wget

yum install wget

更新下载源

wget http://mirror.webtatic.com/yum/el6/latest.rpm && rpm -Uvh latest.rpm && yum -y install php55w php55w-bcmath php55w-cli php55w-common php55w-devel php55w-fpm  php55w-gd php55w-imap php55w-ldap php55w-mbstring php55w-mcrypt php55w-mysql php55w-odbc php55w-pdo php55w-pear php55w-pecl-igbinary php55w-xml php55w-xmlrpc php55w-opcache php55w-intl php55w-pecl-memcache php55w-soap

##安装php##

yum -y install php55w php55w-bcmath php55w-cli php55w-common php55w-devel php55w-fpm  php55w-gd php55w-imap php55w-ldap php55w-mbstring php55w-mcrypt php55w-mysql php55w-odbc php55w-pdo php55w-pear php55w-pecl-igbinary php55w-xml php55w-xmlrpc php55w-opcache php55w-intl php55w-pecl-memcache php55w-soap

##如果报错##

错误:Package: php55w-mcrypt-5.5.38-1.w6.x86_64 (webtatic)
Requires: libmcrypt.so.4()(64bit)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodiges

解决办法:

下载相应版本的EPEL源:

1 wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm   #32位
2 wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm #64位

安装

rpm -ivh epel-release-6-8.noarch.rpm

导入 KEY

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

再尝试安装php及其相关扩展

yum -y install php55w php55w-bcmath php55w-cli php55w-common php55w-devel php55w-fpm  php55w-gd php55w-imap php55w-ldap php55w-mbstring php55w-mcrypt php55w-mysql php55w-odbc php55w-pdo php55w-pear php55w-pecl-igbinary php55w-xml php55w-xmlrpc php55w-opcache php55w-intl php55w-pecl-memcache php55w-soap

删除EPEL包

rm -rf epel-release-6-8.noarch.rpm latest.rpm

创建php文件查看是否被apache识别

vi /var/www/html/phpinfo.php

注意:如果返回的是php源代码 那就需要再配置一下 apache 的 httpd.conf ,修改完成后 重启apache

vi /etc/httpd/conf/httpd.conf

LoadModule php5_module modules/libphp5.so AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps

重启 

service httpd restart

 如果退出容器,再次进入后登陆数据库提示这个错误 有可能是没有启动数据库服务,容器退出后 容器内的服务也就停止运行了。

Can\'t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock\'

启动数据库

service mysqld start

 ---------------

定时执行php脚本

centos 6 先下载crontab

yum install crontabs
1 service crond start //启动服务
2 service crond stop //关闭服务
3 service crond restart //重启服务

在crontab中添加定时执行php脚本的任务

-q选项表示安静模式。”-O temp.txt”表示输出会发送到临时文件。

*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.xxx.net/myscript.php

清空数据库ID 插入数据时从新统计

truncate table 表名

-------

在PHP连接数据库插入数据时,MySQL日志报下面这个错,

2019-11-18T22:32:41.071608Z 50 [Note] Aborted connection 50 to db: \'d6\' user: \'root\' (Got timeout reading communication packets)

在本地测试没问题,代码放在服务器环境下,一开始运行也没问题,结果晚上莫名其妙出现了这个提示,

后来在网上查资料修改my.conf配置,也还是不行。

折腾了好长时间,突然想到下午把代码放在服务器运行时,apache报错下面这个错

Call to undefined function mysqli_fetch_all()

 结果为了解决掉上面这个报错。把 php mysqli 扩展卸载掉了,安装另一个php56w-mysqlnd扩展 ,安装失败后,没把原先卸载掉的装回来,后来安装回来不报错了,正常运行。

终于安装完了,从早上9点安装到傍晚6点,我太累了。+_+!

以上是关于debian9 安装docker 以及在docker中 安装centos 6 安装指定版本的PHP和MySQ的主要内容,如果未能解决你的问题,请参考以下文章

本地yum源构建以及Docker离线安装

云原生 | 从零开始学Docker一Docker的安装,启动以及工作原理

Docker安装事项

Docke及Docker Compose于微服务的实践

Docker

Docker 镜像详细讲解