记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

Docker版lnmp

Docker版lnmp

Docker Hub:https://hub.docker.com/r/2233466866/lnmp
下载(Download)
XML/HTML代码
  1. # latest版本
  2. ## CentOS7 + Nginx + Node.js + MySQL + php-^7.4 + php5.6.40
  3. docker pull 2233466866/lnmp
  4. docker pull 2233466866/lnmp-win
  5. docker pull 2233466866/lnmp-mac
  6.   
  7. # newest版本
  8. ## CentOS7 + Nginx + Node.js + MySQL + php-^8.1 + php-^7.4 + php5.6.40 + Redis
  9. docker pull 2233466866/lnmp:newest
  10. docker pull 2233466866/lnmp:newest-win
  11. docker pull 2233466866/lnmp:newest-mac
  12.   
  13. # mini版本
  14. ## CentOS7 + Nginx + php-^7.4
  15. docker pull 2233466866/lnmp:mini
  16. docker pull 2233466866/lnmp:mini-win
  17. docker pull 2233466866/lnmp:mini-mac
配置(Config)
XML/HTML代码
  1. # 配置文件路径(Config file path)
  2. # Nginx
  3. /usr/local/nginx/conf/nginx.conf
  4.  
  5. # MySQL
  6. /etc/my.cnf
  7.  
  8. # Redis
  9. /usr/local/redis/redis.conf
  10.  
  11. # php-5
  12. /usr/local/php5/lib/php.ini
  13. /usr/local/php5/etc/php-fpm.conf
  14.  
  15. # php-7
  16. /usr/local/php7/lib/php.ini
  17. /usr/local/php7/etc/php-fpm.conf
  18. /usr/local/php7/etc/php-fpm.d/www.conf
  19.  
  20. # php-8
  21. /usr/local/php8/lib/php.ini
  22. /usr/local/php8/etc/php-fpm.conf
  23. /usr/local/php8/etc/php-fpm.d/www.conf
启动(Start)
XML/HTML代码
  1. # 端口映射自行指定,容器名称自行指定为lnmp
  2. docker run -dit --privileged --name=lnmp 2233466866/lnmp
  3.  
  4. # 高级用法(Advanced usage)
  5. docker run -dit \
  6. --privileged \
  7. -p 80:80 \
  8. -p 443:443 \
  9. -v /宿主机自定义目录/www:/www \
  10. -v /宿主机自定义目录/mysql:/data/mysql \
  11. --name=lnmp \
  12. 2233466866/lnmp
  13.  
  14. # 如对配置文件比较熟悉,也可以通过宿主机挂载使用自定义的配置文件
连接(Connect)
XML/HTML代码
  1. # 容器名称与上一步保持一致
  2. docker exec -it [CONTAINER ID] /bin/bash
状态(Status)
XML/HTML代码
  1. ps aux|grep nginx
  2. ps aux|grep mysql
  3. ps aux|grep php
  4. ps aux|grep redis
  5. # 或者(Or)
  6. systemctl status nginx
  7. systemctl status mysqld
  8. systemctl status php5
  9. systemctl status php7
  10. systemctl status php8
  11. systemctl status redis
PHP-CLI版本选择
XML/HTML代码
  1. # PHP5及使用composer
  2. php5 -v
  3. php5 /usr/local/php5/bin/composer
  4.  
  5. # PHP7及使用composer
  6. php7 -v
  7. php7 /usr/local/php7/bin/composer
  8.  
  9. # PHP8及使用composer
  10. php8 -v
  11. php8 /usr/local/php8/bin/composer
PHP-FPM版本切换
XML/HTML代码
  1. # PHP5
  2. ps aux|grep php
  3. kill PHP-FPM-PID
  4. systemctl stop php7
  5. systemctl disable php7
  6. systemctl stop php8
  7. systemctl disable php8
  8. systemctl start php5
  9. systemctl enable php5
  10.  
  11. # PHP7
  12. ps aux|grep php
  13. kill PHP-FPM-PID
  14. systemctl stop php5
  15. systemctl disable php5
  16. systemctl stop php8
  17. systemctl disable php8
  18. systemctl start php7
  19. systemctl enable php7
  20.  
  21. # PHP8
  22. ps aux|grep php
  23. kill PHP-FPM-PID
  24. systemctl stop php5
  25. systemctl disable php5
  26. systemctl stop php7
  27. systemctl disable php7
  28. systemctl start php8
  29. systemctl enable php8
快速切换
XML/HTML代码
  1. # 切换PHP5
  2. pvm 5
  3. # 切换PHP7
  4. pvm 7
  5. # 切换PHP8
  6. pvm 8
初始密码(Default password)
XML/HTML代码
  1. cat /var/log/mysqld.log|grep 'A temporary password'
  2. # 或
  3. password=`cat /var/log/mysqld.log|grep 'A temporary password'`;password=${password:91};echo $password
初始化(initialize)
XML/HTML代码
  1. 如你的mysql数据是全新的,那么你可以在^1.11 or ^1.11-nosql版本中,使用 mysql_init 脚本将数据库密码初始化为:ASDFqwer1234####,该脚本如无法正常运行,请通过上一步获取的初始密码,用mysql_secure_installation手动初始化mysql。
警告(Warning)
XML/HTML代码
  1. # 请保持清醒头脑,明确自己是在容器内还是在服务器本身执行命令,以及-v挂载对文件的影响,以免造成不可挽回的损失
PHP扩展(PHP extension)
XML/HTML代码
  1. # 默认已安装部分扩展在目录:/usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/
  2. # 如果要启用指定扩展,则需要修改php.ini,加上
  3. extension=xxx.so
  4. # xxx为PHP扩展的文件名,然后重启php
  5. systemctl restart php7
版本(Version)
XML/HTML代码
  1. # 各版本详细信息请参考
  2. https://github.com/2233466866/lnmp/wiki
具体参数需要自己根据实际情况进行修改。
 
其他版本的lnmp
Docker Hub:https://hub.docker.com/r/fbraz3/lnmp
下载与说明
XML/HTML代码
  1. # 版本说明
  2. ##Linux (Ubuntu 18.04 LTS), Nginx, MySQL and PHP-FPM
  3. Configure your mysql database access to host 127.0.0.1, username root, no password and to database app
  4. Your main application will be accessible on http://localhost/ and phpmyadmin on http://localhost/pma/
  5.  
  6. docker pull fbraz3/lnmp:latest
  7. docker pull fbraz3/lnmp:5.6
  8. docker pull fbraz3/lnmp:7.0
  9. docker pull fbraz3/lnmp:7.1
  10. docker pull fbraz3/lnmp:7.2
  11. docker pull fbraz3/lnmp:7.3
  12. docker pull fbraz3/lnmp:7.4
  13. docker pull fbraz3/lnmp:8.0
  14. docker pull fbraz3/lnmp:8.1
  15. docker pull fbraz3/lnmp:8.2
简单使用命令
XML/HTML代码
  1. docker run -dit \
  2. --privileged \
  3. -p 80:80 \
  4. -p 3306:3306 \
  5. -v ./www:/app/public/ \
  6. --name=lnmp \
  7. fbraz3/lnmp:5.6
实际使用:
XML/HTML代码
  1. 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代码
  1. 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代码
  1. chmod -R 777 /opt/lnmp/mysql
在phpMyAdmin中修改root密码后,会造成数据库无法登录,提示错误,可以修改容器中 /var/www/html/pma/config.default.php 这个配置文件。
注:可以在容器中直接命令修改root用户密码更加快捷
XML/HTML代码
  1. docker exec -it lnmp bash
  2. mysql -uroot  -e "set password for 'root'@'%'=password('123456'); flush privileges; ";
修改phpMyAdmin认证方式
XML/HTML代码
  1. docker exec -it lnmp bash
  2. vi /var/www/html/pma/config.inc.php
直接修改root密码,就可以和之前一样免密登录。
XML/HTML代码
  1. $cfg[‘Servers’][$i][‘user’] = ‘root’; // 填写 MySQL 访问 phpMyAdmin 使用的 MySQL 用户名,默认为root。
  2. fg[‘Servers’][$i][‘password’] = ”; // 填写对应上述 MySQL 用户名的密码。
修改认证方法实现需要账号密码登录。
XML/HTML代码
  1. $cfg['Servers'][$i]['auth_type'] = 'cookie';
给这行前面的#注释去掉即可用账号密码登录。
$cfg[‘Servers’][$i][‘auth_type’] = ‘cookie’;
在此有四种模式可供选择,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管理程序。
Adminer
单文件轻量级的mysql管理程序,非常好用。
Amysql
易用安全高效的MySQL管理客户端,ahm出品。

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):