美文网首页
centos 上用docker搭建lnmp环境

centos 上用docker搭建lnmp环境

作者: 蛐蛐儿阳 | 来源:发表于2020-02-28 21:09 被阅读0次

1, ssh guanliyang@192.168.1.12

2, yum update

官方安装手册:

 https://docs.docker.com/install/linux/docker-ce/centos/

3, sudo yum

install -y docker-ce --nobest     安装docker 速度巨慢。

Sudo root  然后输入密码,然后docker images  , 嗯,不管怎样安装成功了吧。

然后docker pull nginx

开启nginx:

docker run -itd  -p 80:80 -v /data/www:/usr/share/nginx/html-v /data/www/nginx.conf:/etc/nginx/nginx.conf  -v /data/www/log:/usr/share/nginx/log  --name nginx nginx

Nginx.conf  内容,  如下。  这里主要对应error_log和root对应的位置。

然后localhost就能访问了。

我这centos是vxbox里面的,现在想在mac,根宿主机上访问此域名。需关闭防火墙。

一、配置防火墙,开启80端口、3306端口

CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。

1、关闭firewall:

systemctl stop

firewalld.service #停止firewall

systemctl disable

firewalld.service #禁止firewall开机启动

直接在centos下,新建index.html  可以访问了。

/data/www 下新建一个a.php, 里面写phpinfo();

访问这个文件,nginx报404, 因为找不到php-fpm。

那么我们来安装php-fpm

docker pull php:7.3-fpm

启动php-fpm时, 报错-i docker0: iptables: No

chain/target/match by that name.

重启docker  ,   systemctl restart  docker

原因(猜测):

如果再启动docker service的时候网关是关闭的,那么docker管理网络的时候就不会操作网管的配置(chain docker),然后网关重新启动了,导致docker network无法对新container进行网络配置,也就是没有网管的操作权限,做重启处理

然后启动php-fpm,

nginx 配置文件里面是   /usr/share/nginx/html   捋了好多回了, nginx传给php-fpm, php-fpm解释php,

docker run -itd

--name php-fpm7.3 -p 9000:9000 -v /data/www:/usr/share/nginx/html c7bd03ed1e4c

http://192.168.1.12/a.php    访问成功。 nginx和php-fpm链接成功。

安装mysql

docker pull mysql

docker

run -d -p 3306:3306 -eMYSQL_ROOT_PASSWORD=123456 --name mysql mysql

进入容器配置下mysql

mysql -uroot -p  密码123456.

usemysql 

进入mysql库

# 创建用户和用户密码,%表示通配,在所有host上都可以登录

 create user 'guanliyang'@'%'  IDENTIFIED BY '123456';

#授权用户所有权限

GRANT

ALL ON *.* TO 'guanliyang'@'%';

我们给mysql这台机器安装下ifconfig,以便查看下ip

给容器里面都安装上ifconfig, ping.

Apt-get update

apt-get

install inetutils-ping

apt-get

install net-tools

可能是我mac上装Vbox, xbox里面又装docker,

在docker里装的mysql, 里面的apt-get

update 速度巨慢,。

www下新建b.php ,  内容是

<?php

try {

    $dbh = newPDO('mysql:host=172.17.0.4;port=3306;dbname=sys', 'guanliyang', '123456');

    foreach($dbh->query('SELECT * fromsys_config') as $row) {

        print_r($row);

    }

    $dbh = null;

} catch

(PDOException $e) {

    print "Error!: " .$e->getMessage() . "
";

    die();

}

?>

就链接下数据库,没干别的。报错Error!: could not find

driver, 这就不用google了,显然没有pdo,要在php-fpm容器里执行命令

docker-php-ext-install

pdo_mysql

安装pdo,

重启php-fpm容器。

docker

restart 41b257d5884d  

继续报错:Error!: SQLSTATE[HY000] [2054] The

server requested authentication method unknown to the client

不小心xbox关闭了,再次进入要启动docker

service docker start

打开b.php是报错。

Error!:

SQLSTATE[HY000] [2002] Connection refused

这名ip写错了,进入mysql看下ip

Mysql 报错终于解决了,两句话

ALTER USER

'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

刷新:

flush privileges;

然后访问b.php,  信息输出,大功告成。

贴下nginx.conf配置文件内容。

worker_processes  1; error_log/usr/share/nginx/log/error.log; events {    worker_connections  1024;}  http {    include       mime.types;    default_type  application/octet-stream;     sendfile        on;    keepalive_timeout  65;     server {        listen       80;         root /usr/share/nginx/html;         location / {       index index.html index.htm;        }         error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }         location ~ ^/assets/.*\.php$ {            deny all;        }                location ~ \.php$ {            include fastcgi_params;            fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;            fastcgi_pass 172.17.0.1:9000;            #fastcgi_passunix:/var/run/php5-fpm.sock;            try_files $uri =404;        }    }}

相关文章

网友评论

      本文标题:centos 上用docker搭建lnmp环境

      本文链接:https://www.haomeiwen.com/subject/fyirhhtx.html