基于Docker的LNMP环境微服务搭建

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 基于Docker的LNMP环境微服务搭建

1、LNMP解释:


Linux:Linux 操作系统

Nginx:Web 服务器

MariaDB:数据库

PHP:脚本语言

4d3d00fae190288a4e5b0104d7e58ed6.png


2、 操作步骤


说明:以下环境搭建在linux系统内需要切换至root用户,已是root的不用管


(1)搭建Docker环境1.查看版本内核,需要在3.8以上

uname -r

ad6d28851a47479f866b967cfa79dca2.png

2.下载docker安装包,版本看自己需要,几乎都是可以的,本次选择18.09.8版本


wget https://download.docker.com/linux/static/stable/x86_64/docker-18.09.8.tgz

8c2f99068a744210a234b45339483f68.png


4 解压到docker目录下


tar -zxvf  ./docker-18.09.8.tgz -C /usr/local/ 

f1fa45da40be100282a51969a854efcb_28ffb16756474409b0ef0b4129bfcb2d.png


5 创建docker映射在宿主机上的文件夹


mkdir -p /usr/local/docker/data  

6 进入配置文件,按i进入编辑模式;


vim /etc/profile ##

在文件的最末尾加上docker路径:

PATH=$PATH:/usr/local/docker

然后按:wq保退出;


7 刷新配置文件生效


source /etc/profile 

8 进入docker目录下


cd /usr/local/docker

9 后台运行docker程序


./dockerd -g /usr/local/docker/data & 

4f012e65ffbf2dafb6282690d6777a48_fab4be65ef064fc0a547f19edab71d0f.png


10 查看是否安装成功,显示docker版本信息


docker --version  

57f0958c215de19254b3c28c151d02c0_fff373a4d0114abebbe443b1be9d391e.png

(2)部署Mysql(与MariaDB选择一个就行)

1.docker search mysql##寻找docker镜像


docker search mysql

77674818631585d4b970f6e4a091064f_586b8e882edc445ab57db89f3352c953.png


2.docker pull mysql:5.7 ##不加版本号,默认拉取最新的,也可以 docker pull mysql:[tag] 拉取指定版本


docker pull mysql:5.7

7f9397d3d2fbad73c628a78757c7227e_37e5f2cfefd242128987b11b84655443.png


3.docker images ##查看镜像,找到mysql镜像名


docker images

9be916ca13f6aa01e45053cd696bc9c0_2055bffe5994409889980b9b58ed1cfa.png


4.mkdir -p /usr/local/mysql/data ##创建mysql挂载目录

mkdir -p /usr/local/mysql/data

5.docker run -d --name my-mysql -p 3306:3306 -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345678

mysql:5.7 r ##–name 后面是自定的容器名,后续查看或者进入容器都能用到,-p 端口映射,容器内部端口映射到宿主机的端口 ;-v mysql数据和配置文件挂载目录 -e mysql 的启动参数,设置root密码;


docker run -d --name my-mysql  -p 3303:3306 -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345678 mysql:5.7

-p后边的5000:80代表把容器里的80端口映射给宿主机的5000端口。这样做了映射之后,可以通过5000端口访问该项目的主页。

-p后边的3303:3306代表把容器里的3306端口映射给宿主机的3303端口。这样做了映射之后,可以通过3303端口访问mysql。

a7460a5cd0f9f816772131058ff0a8c8_ea25b8c5cf1642188d90a200288c0571.png


5.使用navicat等工具或者docker exec -it 容器id bash 进入容器内部,都可以连接上数据库;

查看容器id

docker ps

26826322f37b382e44d517bf50753196_f8aa4201891a4165b0d76b473113637c.png

docker exec -it efd460899249 bash 

进入bash后

输入:

mysql -uroot -p12345678

70b5a8d9137998ab3e9382979ad774fe_98693671f285419ba9c131a02f8fb259.png


8c9aba92817588c0618d70af2a7f3194_7f43606e51704eb78280abe7e90fb422.png


(3)部署Php环境

1.docker search php ##寻找docker镜像


docker search php

dcf59ec08ec3e41e2520820bf354f93f_24f69140175948f7b252ebda547d12df.png


2.docker pull php:7.3.7-fpm ##拉取指定版本镜像


docker pull php:7.3.7-fpm

514e266c4e0ed100b56aaf83cd503657_b149a608fa214af1833f80792c678818.png


3.docker images ##查看镜像,找到php镜像名后面启动参数里会用镜像名


docker images

41caded680be7a70dddd062026ff0f8e_0a7183f7b4f24812856c03814d28f0af.png

4.mkdir -p /usr/local/nginx/html ##创建挂载目录


mkdir -p /usr/local/nginx/html

5.docker run -d --name my-php -p 9000:9000 -v /usr/local/nginx/html:/www php:7.3.7-fpm ##–name 后面是自定的容器名,后续查看或者进入容器都能用到,-p 端口映射,容器内部端口映射到宿主机的端口 ;-v 挂载数据卷;


docker run -d --name my-php -p 9000:9000 -v /usr/local/nginx/html:/www  php:7.3.7-fpm

525d8f05fa932850a227d74db66264cb_2282fca2c8304d2680599e2c32c4a12d.png


5.docker ps 可以查看创建成功的php容器


docker ps

fb5802171c60b9ecb58536469f7216e2_f0e9c91bf88f4653b0d35740d5e6b063.png

(4)部署Nginx

1.docker search nginx ##寻找docker镜像


docker search nginx

c0c46224773fa0b84fbe65b651f95101_497cca96920c414885a8ec619fb71da2.png


2.docker pull nginx ##不加版本号,默认拉取最新的,也可以 docker pull nginx:[tag] 拉取指定版本


docker pull nginx

57f2093c7fc15092dd9cb1bedc49e5d8_1be32dc0c53e4cf7be424260b86f3c05.png

3.docker images ##查看镜像,找到nginx镜像名后面启动参数里会用镜像名


docker images 

98bf084f96ef1c0c6712993fe0cebfc7_b90b679d3e814590b5dc07641ad25933.png


4.mkdir -p /usr/local/nginx/conf.d ##创建nginx宿主机配置文件目录


mkdir -p /usr/local/nginx/conf.d

5.vim /usr/local/nginx/conf.d/nginx.conf ##把下面配置文件内容写进去


vim /usr/local/nginx/conf.d/nginx.conf

6.

docker run -d --name my-nginx -p 80:80 -v /usr/local/nginx/conf.d:/etc/nginx/conf.d -v /usr/local/nginx/html:/usr/share/nginx/html --privileged=true --link my-php:php nginx


7.docker ps ##可以看到运行的容器


docker ps

8.访问服务器地址可以看到nginx页面,说明部署成功

###配置文件内容###


server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/local/nginx/html;
        index  index.html index.htm index.php;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/local/nginx/html;
    }
    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

至此LNMP环境搭建完成,接下来就是相应的php服务,php服务放在/usr/local/nginx/html目录下,通过服务器地址+php文件名,就可以访问具体的php应用了

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
数据采集 存储 Docker
深入理解Docker:为你的爬虫项目提供隔离环境
本教程介绍如何使用Docker构建隔离环境,运行Python爬虫项目,采集小红书视频页面的简介和评论。主要内容包括: 1. **Docker隔离环境**:通过Docker容器化爬虫,确保环境独立、易于部署。 2. **代理IP技术**:利用亿牛云爬虫代理突破反爬限制。 3. **Cookie与User-Agent设置**:伪装请求头,模拟真实用户访问。 4. **多线程采集**:提高数据采集效率。 前置知识要求:Python基础、Docker基本操作及HTML解析(可选)。教程还涵盖常见错误解决方法和延伸练习,帮助你优化爬虫代码并避免陷阱。
深入理解Docker:为你的爬虫项目提供隔离环境
|
16天前
|
Shell Go 开发工具
【环境】Rocky8使用gvm配置Go多版本管理的微服务开发环境(go-zero)
通过本文的介绍,我们详细讲解了如何在Rocky8上使用gvm来管理多个Go版本,并配置go-zero框架的开发环境。通过gvm的灵活管理,开发者可以轻松切换不同的Go版本,以适应不同项目的需求。同时,go-zero框架的使用进一步提升了微服务开发的效率和质量。希望本文能帮助开发者构建高效的Go语言开发环境,提高项目开发的灵活性和稳定性。
101 63
|
4月前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
17天前
|
关系型数据库 应用服务中间件 Linux
Linux云服务器如何搭建LNMP环境
LNMP环境是Linux系统中常用的Web服务架构,由Linux、Nginx、MySQL/MariaDB和PHP组成,适用于高效托管动态网站。本文以CentOS 7为例,详细介绍了LNMP环境的搭建步骤,包括Nginx、MariaDB和PHP的安装与配置,以及最终通过创建`index.php`文件验证环境是否成功部署。具体操作涵盖配置YUM仓库、安装服务、编辑配置文件、启动服务等关键步骤,确保用户能够顺利搭建并运行LNMP环境。
44 1
Linux云服务器如何搭建LNMP环境
|
4月前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
367 60
|
3月前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
193 24
|
3月前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
228 6
|
3月前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
151 3
|
4月前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
4月前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?