美文网首页
centos 上docker搭建lnmp

centos 上docker搭建lnmp

作者: 蛐蛐儿阳 | 来源:发表于2020-03-20 15:10 被阅读0次

一, 安装docker,
官方安装手册:
https://docs.docker.com/install/linux/docker-ce/centos/
二, 下载镜像

docker pull nginx
docker pull mysql
docker pull php:7.3-fpm
#mysql指定版本
docker pull mysql:5.7
#这个也不用记,时间长了自己也会忘,直接去docker上去搜
https://hub.docker.com/
#国内有时候网络还是慢,我翻墙是很快能看见的

三,开一个启动nginx容器

docker run -itd  -p 80:80 -v /data/www:/usr/share/nginx/html  --name nginx nginx
容器里没vi, 改配置文件还得装vi,还是把目录映射出来吧。
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已经启动,不用进容器再启动。我没有映射配置文件,可以去容器里修改。
本地的data/www目录自己建一下

cd /
mkdir data
cd data
mkdir www
mkdir log
#敲这么基础的命令,读者会不会以为我白痴?
cd log
touch error.log
#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 index.php;
        }

        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;
            try_files $uri =404;
        }
    }
}

这里你配错了,就查看日志排错

docker logs nginx

注意,这里配置文件配置的目录,要写容器目录,而不是宿主机目录。
新建一个html可以访问了,下面启动php-fpm

docker run -itd --name php-fpm7.4 -p 9000:9000 -v /data/www:/usr/share/nginx/html c7bd03ed1e4c

启动后php文件访问不了,nginx配置文件

按启动顺序
fastcgi_pass 172.17.0.1:9000;
改成
fastcgi_pass 172.17.0.3:9000;
重启nginx就好了。
docker restart nginx

四,开启mysql

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql
#进容器,设置下远程可连接
docker exec -it d77f49ac7373 /bin/bash
mysql -u root -p
这种命令几年不用也会淡忘
create user 'guanliyang'@'%'  IDENTIFIED BY '123456';
GRANT ALL ON *.* TO 'guanliyang'@'%';

设置后本地可连接。编写php文件d.php

<?php
try {
    $dbh = new PDO('mysql:host=172.17.0.4;port=3306;dbname=mysql', 'guanliyang', '123456');
    foreach($dbh->query('SELECT * from user') as $row) {
        print_r($row);
    }
    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>
报错:Error!: could not find driver
没安装pdo,安装一下
docker-php-ext-install  mysql pdo_mysql
上句报错仔细看提示,有正确写法
还是要重启的
docker restart php-fpm7.4

链接成功。注意地址是172.17.0.4;

相关文章

网友评论

      本文标题:centos 上docker搭建lnmp

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