<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="Docker版lnmp">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2023-04-16 21:00<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
Docker版lnmp


Docker Hub：https://hub.docker.com/r/2233466866/lnmp


下载(Download)




XML/HTML代码


    # latest版本

    ## CentOS7 + Nginx + Node.js + MySQL + php-^7.4 + php5.6.40

    docker pull 2233466866/lnmp

    docker pull 2233466866/lnmp-win

    docker pull 2233466866/lnmp-mac

      

    # newest版本

    ## CentOS7 + Nginx + Node.js + MySQL + php-^8.1 + php-^7.4 + php5.6.40 + Redis

    docker pull 2233466866/lnmp:newest

    docker pull 2233466866/lnmp:newest-win

    docker pull 2233466866/lnmp:newest-mac

      

    # mini版本

    ## CentOS7 + Nginx + php-^7.4

    docker pull 2233466866/lnmp:mini

    docker pull 2233466866/lnmp:mini-win

    docker pull 2233466866/lnmp:mini-mac




配置(Config)




XML/HTML代码


    # 配置文件路径(Config file path)

    # Nginx

    /usr/local/nginx/conf/nginx.conf

     

    # MySQL

    /etc/my.cnf

     

    # Redis

    /usr/local/redis/redis.conf

     

    # php-5

    /usr/local/php5/lib/php.ini

    /usr/local/php5/etc/php-fpm.conf

     

    # php-7

    /usr/local/php7/lib/php.ini

    /usr/local/php7/etc/php-fpm.conf

    /usr/local/php7/etc/php-fpm.d/www.conf

     

    # php-8

    /usr/local/php8/lib/php.ini

    /usr/local/php8/etc/php-fpm.conf

    /usr/local/php8/etc/php-fpm.d/www.conf




启动(Start)




XML/HTML代码


    # 端口映射自行指定,容器名称自行指定为lnmp

    docker run -dit --privileged --name=lnmp 2233466866/lnmp

     

    # 高级用法(Advanced usage)

    docker run -dit \

    --privileged \

    -p 80:80 \

    -p 443:443 \

    -v /宿主机自定义目录/www:/www \

    -v /宿主机自定义目录/mysql:/data/mysql \

    --name=lnmp \

    2233466866/lnmp

     

    # 如对配置文件比较熟悉，也可以通过宿主机挂载使用自定义的配置文件




连接(Connect)




XML/HTML代码


    # 容器名称与上一步保持一致

    docker exec -it [CONTAINER ID] /bin/bash




状态(Status)




XML/HTML代码


    ps aux|grep nginx

    ps aux|grep mysql

    ps aux|grep php

    ps aux|grep redis

    # 或者(Or)

    systemctl status nginx

    systemctl status mysqld

    systemctl status php5

    systemctl status php7

    systemctl status php8

    systemctl status redis




PHP-CLI版本选择




XML/HTML代码


    # PHP5及使用composer

    php5 -v

    php5 /usr/local/php5/bin/composer

     

    # PHP7及使用composer

    php7 -v

    php7 /usr/local/php7/bin/composer

     

    # PHP8及使用composer

    php8 -v

    php8 /usr/local/php8/bin/composer




PHP-FPM版本切换




XML/HTML代码


    # PHP5

    ps aux|grep php

    kill PHP-FPM-PID

    systemctl stop php7

    systemctl disable php7

    systemctl stop php8

    systemctl disable php8

    systemctl start php5

    systemctl enable php5

     

    # PHP7

    ps aux|grep php

    kill PHP-FPM-PID

    systemctl stop php5

    systemctl disable php5

    systemctl stop php8

    systemctl disable php8

    systemctl start php7

    systemctl enable php7

     

    # PHP8

    ps aux|grep php

    kill PHP-FPM-PID

    systemctl stop php5

    systemctl disable php5

    systemctl stop php7

    systemctl disable php7

    systemctl start php8

    systemctl enable php8





快速切换




XML/HTML代码


    # 切换PHP5

    pvm 5

    # 切换PHP7

    pvm 7

    # 切换PHP8

    pvm 8






初始密码(Default password)




XML/HTML代码


    cat /var/log/mysqld.log|grep 'A temporary password'

    # 或

    password=`cat /var/log/mysqld.log|grep 'A temporary password'`;password=${password:91};echo $password





初始化(initialize)




XML/HTML代码


    如你的mysql数据是全新的，那么你可以在^1.11 or ^1.11-nosql版本中，使用 mysql_init 脚本将数据库密码初始化为：ASDFqwer1234####，该脚本如无法正常运行，请通过上一步获取的初始密码，用mysql_secure_installation手动初始化mysql。






警告(Warning)




XML/HTML代码


    # 请保持清醒头脑，明确自己是在容器内还是在服务器本身执行命令，以及-v挂载对文件的影响，以免造成不可挽回的损失




PHP扩展(PHP extension)




XML/HTML代码


    # 默认已安装部分扩展在目录：/usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/

    # 如果要启用指定扩展，则需要修改php.ini，加上

    extension=xxx.so

    # xxx为PHP扩展的文件名，然后重启php

    systemctl restart php7




版本(Version)




XML/HTML代码


    # 各版本详细信息请参考

    https://github.com/2233466866/lnmp/wiki




具体参数需要自己根据实际情况进行修改。


 


其他版本的lnmp


Docker Hub：https://hub.docker.com/r/fbraz3/lnmp


下载与说明




XML/HTML代码


    # 版本说明

    ##Linux (Ubuntu 18.04 LTS), Nginx, MySQL and PHP-FPM

    Configure your mysql database access to host 127.0.0.1, username root, no password and to database app

    Your main application will be accessible on http://localhost/ and phpmyadmin on http://localhost/pma/

     

    docker pull fbraz3/lnmp:latest

    docker pull fbraz3/lnmp:5.6

    docker pull fbraz3/lnmp:7.0

    docker pull fbraz3/lnmp:7.1

    docker pull fbraz3/lnmp:7.2

    docker pull fbraz3/lnmp:7.3

    docker pull fbraz3/lnmp:7.4

    docker pull fbraz3/lnmp:8.0

    docker pull fbraz3/lnmp:8.1

    docker pull fbraz3/lnmp:8.2




简单使用命令




XML/HTML代码


    docker run -dit \

    --privileged \

    -p 80:80 \

    -p 3306:3306 \

    -v ./www:/app/public/ \

    --name=lnmp \

    fbraz3/lnmp:5.6







实际使用：




XML/HTML代码


    docker run -dit --privileged -p 80:80 -p 3306:3306 -v /opt/lnmp/www:/app/public/  --restart=always --name=lnmp fbraz3/lnmp:5.6




网站文件映射在/opt/lnmp/www目录。


http://ip 直接访问  http://ip/pma/ 访问phpMyAdmin  默认root 密码是空。


如果想建立一个名字是 itv 的数据库，可以给 itv 数据库映射出来做数据持久化。




XML/HTML代码


    docker run -dit --privileged -p 80:80 -p 3306:3306 -v /opt/lnmp/www:/app/public/ -v /opt/lnmp/mysql:/var/lib/mysql/itv  --restart=always --name=lnmp fbraz3/lnmp:5.6




注意，映射的数据库文件夹权限必须是777，因为默认是给docker系统读写权限的，但是mysql读写权限低，故会造成数据库无法读写。注意不要映射mysql的工作目录 http://var/lib/mysql 会造成数据库启动失败。


修改数据库映射目录权限：




XML/HTML代码


    chmod -R 777 /opt/lnmp/mysql




在phpMyAdmin中修改root密码后，会造成数据库无法登录，提示错误，可以修改容器中 /var/www/html/pma/config.default.php 这个配置文件。


注：可以在容器中直接命令修改root用户密码更加快捷

XML/HTML代码


    docker exec -it lnmp bash

    mysql -uroot  -e &quot;set password for 'root'@'%'=password('123456'); flush privileges; &quot;;









修改phpMyAdmin认证方式






XML/HTML代码


    docker exec -it lnmp bash

    vi /var/www/html/pma/config.inc.php





直接修改root密码，就可以和之前一样免密登录。




XML/HTML代码


    $cfg[&lsquo;Servers&rsquo;][$i][&lsquo;user&rsquo;] = &lsquo;root&rsquo;; // 填写 MySQL 访问 phpMyAdmin 使用的 MySQL 用户名，默认为root。

    fg[&lsquo;Servers&rsquo;][$i][&lsquo;password&rsquo;] = &rdquo;; // 填写对应上述 MySQL 用户名的密码。







修改认证方法实现需要账号密码登录。




XML/HTML代码


    $cfg['Servers'][$i]['auth_type'] = 'cookie';




给这行前面的#注释去掉即可用账号密码登录。


$cfg[&lsquo;Servers&rsquo;][$i][&lsquo;auth_type&rsquo;] = &lsquo;cookie&rsquo;;


在此有四种模式可供选择，cookie，http，HTTP，config


config 方式即输入 phpMyAdmin 的访问网址即可直接进入，无需输入用户名和密码，是不安全的，不推荐使用。


当该项设置为 cookie，http 或 HTTP 时，登录 phpMyAdmin 需要数据用户名和密码进行验证，具体如下：


PHP 安装模式为 Apache，可以使用 http 和 cookie；PHP 安装模式为 CGI，可以使用 cookie。


详细源代码可以参考作者的 Github 或者 Dockhub 根据自己需求修改。


注意：最新版本镜像从 Ubuntu 18.04 升级到 Ubuntu 22.04 ，默认数据库从mysql变成了mariadb，但是镜像中 docker-entrypoint.sh 中最后启动数据库命令 /etc/init.d/mysql restart 应该修改成 /etc/init.d/mariadb restart 。修改后就可以自动启动数据库了，期待作者新版本修复这个bug。作者已修复mysql数据库不启动的bug，已经可以用上面命令直接创建docker了。




几个常见的php环境的mysql在线管理程序：


phpMyAdmin


功能最强大，体积也大，用的最多的mysql管理程序。


官网：https://www.phpmyadmin.net/


Adminer


单文件轻量级的mysql管理程序，非常好用。


官网：https://www.adminer.org/


Amysql


易用安全高效的MySQL管理客户端，ahm出品。


官网：https://amh.sh/amysql.htm




</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
