美文网首页
docker安装lnmp环境

docker安装lnmp环境

作者: 呦丶耍脾气 | 来源:发表于2022-02-15 15:04 被阅读0次

    如何安装docker就不做多说了,请自行百度

    注意本文档实在虚拟机中操作的,虚拟机ip为192.168.172.131

    docker安装mysql并启动

    请参考:docker安装mysql

    $ docker run -d --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
    

    -d 让容器在后台运行
    -p 添加主机到容器的端口映射
    -e 设置环境变量,这里设置mysql的root用户的初始密码
    -name 容器的名称、只要求唯一性

    docker安装php

    • 获取php镜像
    $ docker pull php:8.0-rc-fpm-buster
    

    8.0-rc-fpm-buster为php的标签,其他版本的请在docker库中查看

    • 启动镜像
    $ docker run -d -p 9002:9000 --name php8 -v /home/yzj/docker/nginx/html:/var/www/html php:8.0-rc-fpm-buster
    

    docker run :启动docker镜像
    -d:后台启动
    -p:设置端口映射,即将容器的9000端口映射到宿主机的9002端口。
    注意:本地端口:容器端口 (第一个9002是本地宿主机的端口,第二个9000是容器的端口)
    --name:给容器命名
    -v 配置文件映射
    ~/home/yzj/docker/nginx/html(将php目录的/var/www/html 映射到 /home/yzj/docker/nginx/html)

    docker安装nginx

    • 获取镜像
    $ docker pull nginx
    

    这里我获取的nginx最新版本

    • 创建需要挂载的目录和文件

    在工作目录创建docker/nginx/htmldocker/nginx/conf/conf.d/default.conf,其中default.conf内容如下:

    server {
        listen       80;
        server_name  localhost;
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
            root   /usr/share/nginx/html; #nginx的默认项目目录
            index  index.html index.htm index.php; #添加index.php
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {
            root           /var/www/html;#php项目的默认目录,和php启动映射的数据卷对应上
            fastcgi_pass   192.168.172.131:9002;# 宿主机ip和php映射的宿主机的端口号一致
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; #这块也修改一下
            include        fastcgi_params;
        }
    }
    
    
    • 启动镜像
    $ docker run -itd --name nginx80 -p 80:80 -v /home/yzj/docker/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/yzj/docker/nginx/html:/usr/share/nginx/html nginx
    
    • 在映射工作目录创建index.html和index.php
    root@ubuntu20:/home/yzj# vim docker/nginx/html/index.html
    #加入代码后保存
    <h1>nginx80</h1>
    
    root@ubuntu20:/home/yzj# vim docker/nginx/html/index.php
    #加入代码后保存
    <?php
    $host = "192.168.172.131";
    $username = "root";
    $password = "123456";
    $database = 'mysql'; //改成自己的mysql数据库名
    $con=mysqli_connect($host,$username,$password,$database); //连接数据库
    if (!$con) {
        die("连接 MySQL 失败: " . mysqli_connect_error());
    }
    mysqli_query($con,"set names utf8"); //数据库编码格式
    //查询代码
    $sql = "select * from user";
    $query = mysqli_query($con,$sql);
    while($row = mysqli_fetch_array($query)){
        print_r($row['User']);
        echo "<br />";
    }
    ?>
    
    

    检验

    • 访问:http://192.168.172.131

    浏览器输出:nginx80

    • 访问:http://192.168.172.131/index.php

    此时可能会出问题,报:mysqli_connect方法不存在,是因为安装的php是纯净版本,很多扩展都没有,需要自己开启

    $ docker exec -it php8 /bin/bash        
    $ cd /usr/local/bin                        
    $ ./docker-php-ext-install pdo_mysql  
    $ ./docker-php-ext-install mysqli
    # 退出容器
    $ exit
    $ docker php8 restart
    

    再次访问 浏览器输出如下

    root
    mysql.infoschema
    mysql.session
    mysql.sys
    root

    相关文章

      网友评论

          本文标题:docker安装lnmp环境

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