• 使用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

  • 相关阅读:
    Oracle函数如何把符串装换为小写的格式
    Oralce中的synonym同义词
    JS中getYear()的兼容问题
    How to do SSH Tunneling (Port Forwarding)
    所谓深度链接(Deep linking)
    upload size of asp.net
    发一个自动刷网站PV流量的小工具
    解决Visual Studio 2008 下,打开.dbml(LINQ) 文件时,提示"The operation could not be completed." 的问题。
    在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录
    使用SQL语句获取Sql Server数据库的版本
  • 原文地址:https://www.cnblogs.com/liuxd/p/11572074.html
Copyright © 2020-2023  润新知