前言:由于是个人搭建这边都用root账户,非root账户前面加上sudo或者su root切换为root账户
环境:阿里云的CentOS 7.6
一、安装docker
不再赘述
二、部署MySQL
1、拉取mysql镜像
docker pull mysql
2、启动mysql容器
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
-p 端口映射
--name 容器别称
-e 指定容器环境变量
-d 后台运行
二、部署nginx
1、拉取nginx镜像
docker pull nginx
2、启动nginx容器,并且映射html路径
-v 目录映射
/root/lnmp/www左边是本机目录,/usr/share/nginx/html右边是容器目录
可以先在本机目录下随便写个html页面
docker run --name nginx -p 80:80 -v /root/lnmp/www/html:/usr/share/nginx/html -d nginx
3、配置nginx
Nginx 的强大很大部分体现在配置文件上,考虑到后续维护我们将配置文件拷贝到本地
cd /root/lnmp/config
docker cp nginx:/etc/nginx/conf.d/default.conf default.conf
如果有修改配置文件情况,重启nginx即可
docker restart nginx
三、部署php-fpm
1、拉取php-fpm镜像
docker pull php:fpm
2、启动php-fpm容器
docker run --name php-fpm -p 9000:9000 -d php:fpm
3、复制www.conf到本地
cd /root/lnmp/config
docker cp php-fpm:/usr/local/etc/php-fpm.d/www.conf www.conf
4、进入php-fpm容器
#查看容器ID
docker ps -a
docker exec -it containerID /bin/bash
cd /usr/src
#解压tar.xz文件:先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,
#再用 tar xvf xxx.tar来解包。
xz -d php.tar.xz
tar xvf php.tar
#退出容器
exit
5、复制php.ini到本地,并修改
cd /root/lnmp/config
docker cp php-fpm:/usr/src/php-8.0.12/php.ini-production php.ini
6、重新启动php-fpm容器
docker stop php-fpm
docker rm php-fpm
docker run --name php-fpm -p 9000:9000 --link mysql:mysql -v /root/lnmp/www/html:/usr/share/nginx/html -v /root/lnmp/config/www.conf:/usr/local/etc/php-fpm.d/www.conf -v /root/lnmp/config/php.ini:/usr/local/etc/php-8.0.12/php.ini -d php:fpm
四、配置nginx支持php-fpm
1、修改nginx配置文件
vi /root/lnmp/config/default.conf
修改内容如下
server {
listen 80;
#listen [::]:80;
server_name _;
root /usr/share/nginx/html;
index index.php index.html index.htm;
#access_log /var/log/nginx/host.access.log main;
location / {
#root /usr/share/nginx/html;
#index index.html index.htm;
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
location = /40x.html {
root /user/share/nginx/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;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
2、重启nginx容器
docker stop nginx
docker rm nginx
docker run --name nginx -p 80:80 --link php-fpm -v /root/lnmp/www/html:/usr/share/nginx/html -v /root/lnmp/config/default.conf:/etc/nginx/conf.d/default.conf -d nginx
在www目录下创建index.php文件
<?php
phpinfo();
?>
通过浏览器访问得到如下页面就算成功啦
总结
docker比较方便的部署lnmp,方便的同时也存在这一些隐患。 如docker容器损坏等
配置起来还是要细心一点的啦