• 使用docker 安装 LNMP


    centos7 下 使用docker 安装 LNMP

    一、安装 mysql

    1 获取 mysql 镜像

    docker pull  mysql:5.7

    2 创建mysql的镜像,并运行

    docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=php@666 --name codeforphp_mysql mysql:5.7

    参数说明 

    • -d 让容器在后台运行 
    • -p 添加主机到容器的端口映射 
    • -e 设置环境变量,这里是设置mysql的root用户的初始密码,这个必须设置 
    • –name 容器的名字,随便取,但是必须唯一

    ps: 其实我们可以仅仅使用docker run命令就行了。docker run会先去pull,然后再create。个人习惯先把镜像pull下来,在run的时候会很快。

    3 进入mysql 终端

    docker exec -it   codeforphp_mysql    bash

    参数说明 

    • -t 在容器里生产一个伪终端 
    • -i 对容器内的标准输入 (STDIN) 进行交互

    输入命令。进入

    root@f489cae3f0f4:/# mysql -uroot -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 3
    Server version: 5.7.22 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    mysql> 

    进入之后,要对用户进行授权,以便使用远程连接

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'php@666';
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'php@666';
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'php@666';
    FLUSH PRIVILEGES;

    此时可以使用客户端连接一下看看。注意,客户端连接端口为 3307 

    二、 安装PHP 

      1 拉取php镜像

    docker pull php:7.1-fpm

     2 创建phpfpm容器

    php.ini 默认是不存在的,所以我们要做一些改变

    在创建之前。需要自己建立一个映射文件夹以便存放

    /var/nginx/www/phpfile   里边新建  php.ini 文件 和 conf.d 文件夹
    docker run -d -v /var/nginx/www/html:/var/www/html   -v  /var/nginx/www/phpfile:/usr/local/etc/php    -p 9000:9000 --link codeforphp_mysql:mysql --name codeforphp_phpfpm php:7.1-fpm 

    参数说明 

    • -d 让容器在后台运行 
    • -p 添加主机到容器的端口映射 
    • -v 添加目录映射,即主机上的/var/nginx/www/html和容器中/var/www/html目录是同步的 
    • –name 容器的名字 
    • –link 与另外一个容器建立起联系,这样我们就可以在当前容器中去使用另一个容器里的服务。

    这里如果不指定–link参数其实也是可以得,因为容易本身也是有ip的且唯一,所以我们也可以直接利用ip去访问容器。

    3  进入到我们的容器,然后我们在/var/www/html目录下新建一个index.php文件

    docker exec -it codeforphp_phpfpm bash

    touch index.php

    我们可以看到该目录下新建了一个php文件 
    接下来我们回到我们的主机上面,访问一下我们主机上/var/nginx/www/html 

    我们发现我们在容器里的  /var/www/html   目录中新建的文件也在主机的   /var/nginx/www/html   目录中,因为在创建容器的时候,我们已经把主机中的目录挂载到了容器中去了。

    4 安装 pdo 以便后边测试数据库连接,在docker容器中可以这样来安装

    docker-php-ext-install pdo_mysql

     此时修改

    /var/nginx/www/phpfile/php.ini 添加
    extension=php_pdo.dll

    重启phpfpm容器

    docker  restart codeforphp_phpfpm

     查看phpinfo

     三、 安装nginx 

     1 拉取镜像

      ps: 此处我没指定版本。默认使用 latest 标签

    docker pull nginx:1.10.3

    2创建映射目录和配置文件

      文件存放目录: /var/nginx/www/html       配置文件目录:/var/www/nginx/conf.d

      在配置文件目录新建 default.conf

    server
    {
      listen 80;
      server_name localhost;

    
    

      location / { 
        root /var/www/html; 
        index index.html index.htm; 
      }

    
    

      location ~ .php$ { 
        fastcgi_pass codeforphp_phpfpm:9000;  #此处写docker 里边 php 的名称: codeforphp_phpfpm
        fastcgi_index index.php; 
        fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
        include fastcgi_params; 
      } 

      error_page 500 502 503 504 /50x.html;
      location = /50x.html {
        root /usr/share/nginx/html;
      }

    }

    创建容器

    映射了配置文件和文件目录

    docker run -d -p 80:80  -v /var/nginx/www/html:/var/www/html  -v /var/www/nginx/conf.d:/etc/nginx/conf.d     --link codeforphp_phpfpm:phpfpm --name codeforphp_nginx nginx:1.10.3

     四、测试

    1 查看服务

    docker ps -a

    STATUS 皆为up ,即运行中

    2 测试PHP 解析:

    在宿主机   /var/nginx/www/html 目录下新建index.php 文件。

    <?php echo phpinfo();

    访问:

    3  测试 mysql 链接 

    修改index.php

    <?php
    //echo phpinfo();
    
    $dbms='mysql';     //数据库类型
    $host='codeforphp_mysql'; //数据库主机名,此处写mysql 容器的名字
    $dbport = '3306';
    $dbName='mysql';    //使用的数据库
    $user='root';      //数据库连接用户名
    $pass='php@666';          //对应的密码
    $dsn="$dbms:host=$host;port=$dbport;dbname=$dbName";
    
    
    try {
        $dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象
        echo "连接成功<br/>";
       //你还可以进行一次搜索操作
        // foreach ($dbh->query('SELECT * from user') as $row) {
        //     print_r($row); //你可以用 echo($GLOBAL); 来看到这些值
        // }
        
        $dbh = null;
    } catch (PDOException $e) {
        die ("Error!: " . $e->getMessage() . "<br/>");
    }

    访问ip  , 到正确的输出,就证明我们的配置成功了。

    该文章转载至  https://www.cnblogs.com/richerdyoung/p/9198397.html

  • 相关阅读:
    19-background
    18-超链接导航栏案例
    17-文本属性和字体属性
    16-margin的用法
    15-浮动
    14-块级元素和行内元素
    13-标准文档流
    12-简单认识下margin
    11-border(边框)
    10-padding(内边距)
  • 原文地址:https://www.cnblogs.com/liuxd/p/11572074.html
Copyright © 2020-2023  润新知