使用docker搭建lnmp环境

18 篇文章 0 订阅
15 篇文章 1 订阅

前言:之前每次搭建都现成百度,有时候还会出奇奇怪怪的错误,这次有时间把搭建的过程记录下来。

nginx

如启动失败,可容器内运行nginx -t 检查配置项是否有误

1.创建宿主机配置和数据文件夹

[root@localhost ~] mkdir -pv /lnmp/nginx/{conf/conf.d,data,logs}

2.在/lnmp/nginx/conf/conf.d下放置default.conf,否则容器内不会存在default.conf文件
点我下载

3.启动容器

[root@localhost ~] docker pull nginx
[root@localhost ~] docker run -d --name nginx \
-p 80:80 \
-v /lnmp/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /lnmp/nginx/html:/lnmp/nginx/html \
-v /lnmp/nginx/logs:/var/log/nginx \
nginx

注意:如果conf目录不做映射,那么就无需手动在物理机创建default.conf文件

此时ip地址可已可访问



mysql

docker exec -it mysql env LANG=C.UTF-8 /bin/bash 这样命令行可使用中文

1.创建宿主机配置和数据文件夹

[root@localhost ~] mkdir -pv /lnmp/mysql/{conf,data,logs}

2.启动容器

[root@localhost ~] docker pull mysql:5.7
[root@localhost ~] docker run -d -p 3306:3306 --name mysql \
-v /lnmp/mysql/conf:/etc/mysql/conf.d \
-v /lnmp/mysql/logs:/logs \
-v /lnmp/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7



php-fpm

其他版本:php:7.3-fpm,php:7.4-fpm
-u www-data:www-data,使用www-data用户启动容器,否则crontab定时任务生成的文件未root所有,php-fpm生成的却是www-data不符合。

1.创建宿主机配置和数据文件夹

[root@localhost ~] mkdir -pv /lnmp/php-fpm/

2.物理机上放置www.conf文件

vim /lnmp/php-fpm/www.conf

点我下载

3.启动容器

[root@localhost ~]docker pull php-fpm:7.2-fpm
[root@localhost ~]docker run -d --name php-fpm \
-u www-data:www-data \
-p 9000:9000 \
-v /lnmp/php-fpm/www.conf:/usr/local/etc/php-fpm.d/www.conf \
-v /lnmp/nginx/html:/lnmp/nginx/html \
php:7.2-fpm

4.修改default.conf,使其支持php解析(将#去掉,修改fastcgi_pass的ip,fastcgi_param的路径)

root是声明参数,使用时候叫$document_root
如果nginx容器–link php-fpm:php-fpm(容器名:容器别名),那192.168.99.26:9000可改成php-fpm:9000,因为服务隔离127,0,0,1不行的

server {   
   
	#虚拟机部署多个网站
	#方式1,ip
	#listen 8080 default_server;
	#方式2,域名
	
	lsten 80;
	server_name www.food135old.com;
	root /lnmp/nginx/html;
	
	#伪静态,隐藏index.php
	#if (!-e $request_filename) {
		#rewrite ^/(.*)$ /index.php/?s=$1 last;
		#break;
	#}
	location ~ \.php$ {
		#注意:这个目录需要php-fpm容器内可访问到的
		fastcgi_pass   192.168.99.26:9000;
		fastcgi_index  index.php;
		fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
		include        fastcgi_params;
	}		

}

此时ip地址/index.php可已可访问(手动提前创建php文件)

知识点

如需要同时运行两个不同php版本的项目,只要再跑一个对应版本的php容器,然后将映射出来的端口改成9001,最后在ngxin里two.conf里将端口改掉即可。



额外配置

1.进入php-fpm容器安装pdo_mysql(否则php没法连接mysql,mysql_connect函数已弃用)

[root@localhost ~]docker exec -it php-fpm /bin/bash
[root@localhost ~]docker-php-ext-install pdo_mysql

2.将phpfpm容器导出成镜像文件,以便后续使用

[root@localhost ~]docker commit -m "php-fpm add extension mysqli" php-fpm php-fpm:7.2
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值