WHCSRL 技术网

Docker下部署LNMP

前言:由于是个人搭建这边都用root账户

环境:阿里云的Ubuntu18.04

一、安装docker

参考Ubuntu 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/:/usr/share/nginx/html -d nginx

3、配置nginx

Nginx 的强大很大部分体现在配置文件上,考虑到后续维护我们将配置文件拷贝到本地

  1. cd /root/lnmp/config
  2. 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到本地

  1. cd /root/lnmp/www/config
  2. docker cp php-fpm:/usr/local/etc/php-fpm.d/www.conf www.conf

4、进入php-fpm容器

  1. #查看容器ID
  2. docker ps -a
  3. docker exec -it containerID /bin/bash
  4. #解压tar.xz文件:先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,
  5. #再用 tar xvf xxx.tar来解包。
  6. xz -d php.tar.xz
  7. tar xvf php.tar
  8. #退出容器
  9. exit

5、复制php.ini到本地,并修改

docker cp php-fpm:/usr/src/php-8.0.12/php.ini-production php.ini

6、重新启动php-fpm容器

  1. docker stop php-fpm
  2. docker rm php-fpm
  3. docker run --name php-fpm --link mysql:mysql -v /root/lnmp/www:/usr/share/nginx/html -v /root/lnmp/www/config/www.conf:/usr/local/etc/php-fpm.d/www.conf -v /root/lnmp/www/config/php.ini:/usr/local/etc/php-8.0.12/php.ini -d php:fpm

 四、配置nginx支持php-fpm

1、修改nginx配置文件

vi  /root/lnmp/www/config/default.conf

修改内容如下

  1. server {
  2. listen 80;
  3. #listen [::]:80;
  4. server_name _;
  5. root /usr/share/nginx/html;
  6. index index.php index.html index.htm;
  7. #access_log /var/log/nginx/host.access.log main;
  8. location / {
  9. #root /usr/share/nginx/html;
  10. #index index.html index.htm;
  11. try_files $uri $uri/ =404;
  12. }
  13. error_page 404 /404.html;
  14. location = /40x.html {
  15. root /user/share/nginx/html;
  16. }
  17. # redirect server error pages to the static page /50x.html
  18. #
  19. error_page 500 502 503 504 /50x.html;
  20. location = /50x.html {
  21. root /usr/share/nginx/html;
  22. }
  23. # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  24. #
  25. #location ~ .php$ {
  26. # proxy_pass http://127.0.0.1;
  27. #}
  28. # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  29. #
  30. location ~ .php$ {
  31. fastcgi_pass php-fpm:9000;
  32. fastcgi_index index.php;
  33. # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  34. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  35. include fastcgi_params;
  36. # deny access to .htaccess files, if Apache's document root
  37. # concurs with nginx's one
  38. #
  39. location ~ /.ht {
  40. deny all;
  41. }
  42. }

2、重启nginx容器

  1. docker stop nginx
  2. docker rm nginx
  3. docker run --name nginx -p 80:80 --link php-fpm -v /root/lnmp/www:/usr/share/nginx/html -v /root/lnmp/www/config/default.conf:/etc/nginx/conf.d/default.conf -d nginx

最后通过浏览器访问得到如下页面就算成功啦

总结

docker比较方便的部署lnmp,方便的同时也存在这一些隐患。 如docker容器损坏等

配置起来还是要细心一点的啦

推荐阅读