Linux 系统 docker搭建LNMP环境

1、安装nginx

docker pull   nginx    (默认安装的是最新版本)

2、运行nginx

docker run --name nginx -p 80:80 -d  nginx:latest

备注:--name nginx 表示容器名为 nginx

-d 表示后台运行

-p 80:80 表示把本地80端口绑定到Nginx服务端的 80端口
 nginx:latest  表示你的Nginx版本

3、查看Nginx服务

   执行指令# docker ps -a
4、如果需要nginx做代理需要进行一些配置
原因:虽然咱们能正常启动nginx,但配置得在容器中进行,这样的话太麻烦了,所以把配置文件给映射出来,方便配置与管理

第一步 本地创建管理目C录mkdir -p /opt/nginx/conf
mkdir -p /opt/nginx/logs
第二步 将容器中的相应文件copy到刚创建的管理目录中docker cp nginx:/etc/nginx/nginx.conf /opt/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /opt/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html/ /opt/nginx/
docker cp nginx:/var/log/nginx/ /opt/nginx/logs/
注:docker cp nginx 中的 "nginx" 为容器名,当然有容器的ID也可以只要唯一就好了
其中nginx.conf配置文件可以直接清空,修改为如下内容
user  root;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;server {listen   80;server_name  somename  alias  another.alias;location / {root   /usr/share/nginx/html/;index  index.html index.htm;}}}


第三步 停止并移除容器

创建Nginx容器并运行

# 直接执行docker rm nginx或者以容器id方式关闭容器
# 找到nginx对应的容器id

docker ps -a


# 关闭该容器

docker stop nginx


# 删除该容器

docker rm nginx


# 删除正在运行的nginx容器

docker rm -f nginx
docker  rmi  nginx


第四步 再次启动容器并作目录挂载(也相当于共享)
命令:
 

docker run --name nginx  -p 80:80  -d --restart=always --privileged=true  -v //opt/nginx/html:/usr/share/nginx/html/   -v //opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf    -v //opt/nginx/logs:/var/log/nginx/  -v //opt/nginx/conf:/etc/nginx/conf.d   nginx

如果上边执行语句没有设置Nginx自启可执行
docker update nginx --restart=always

命令                                                描述
–name  nginx                                        启动容器的名字
-d                                                后台运行
-p 80:80                                        将容器的 80(后面那个) 端口映射到主机的 80(前面那个) 端口
-v /opt/nginx/nginx.conf:/etc/nginx/nginx.conf     挂载nginx.conf配置文件
-v /opt/nginx/conf/:/etc/nginx/conf.d                挂载nginx配置文件
-v /opt/nginx/logs/:/var/log/nginx/                挂载nginx日志文件
-v /opt/nginx/www/:/usr/share/nginx/html/          挂载nginx内容
nginx:latest                                        本地运行的版本
\                                                shell 命令换行

如果需要配置多个nginx容器
只需要拷贝
cp  -r  /opt/nginx/    web
然后修改web/conf目录下nginx.conf文件里的server端口,修改成功后执行下方语句

docker run --name web -p 8011:8011  -d --restart=always --privileged=true  -v //opt/web/html:/usr/share/nginx/html/   -v //opt/web/conf/nginx.conf:/etc/nginx/nginx.conf    -v //opt/web/logs:/var/log/nginx/  -v //opt/web/conf:/etc/nginx/conf.d   nginx


1、在location 中 echo "hello Nginx!" 访问可以直接输出文字

例:
location / {echo "hello Nginx!"
}
2、location匹配规则:1)最低级别匹配规则:
location / {echo "hello Nginx!"
}
2)最高级别匹配规则:
location /user {echo "hello user.hmtl"
}
3)其它级别匹配规则:
location ^~ /user {echo "hello user.hmtl"
}
location ~^ /user {echo "hello user.hmtl"
}
location ~ ^/[a-z] {echo "hello user.hmtl"
}
location ~ ^/\a {echo "hello user.hmtl"
}
3、反向代理细节:location /user {proxy_pass http://ip;
}
location /order/ {proxy_pass http://ip/;
}
访问结果:
http://ip/user/xx...
http://ip/xx...
4、负载均衡配置upstream order {server 192.168.0.118:8011 weight=1;server 192.168.0.118:8088 weight=1;
}
server{location /order/ {proxy_pass http://order/;}
}
注:weight=1,配置的为权重,值越高权重越高

#############################################################################
                                                        PHP安装
#############################################################################
1、直接拉取官方镜像
查找Docker Hub上的php镜像  docker search php
直接拉取官方镜像

docker run --name myphp  --restart=always --network lnmp -d php:7.1-fpm 


2、创建php容器

mkdir /opt/php

#拷贝配置文件(这个地方容易出错,可以直接把实施工程文件里现成的配置文件直接拷贝过去,不用执行下面的语句了)

docker cp 0850901bc597:/etc/php/7.1/fpm/php.ini /opt/php/php.ini


#停止、删除容器

docker stop php
docker rm b2009f54cf34


#正式部署

docker run -p 9000:9000 --name php -v //opt/nginx/html:/var/www/html -v //opt/php/php.ini:/etc/php/7.4/fpm/php.ini -d  --restart=always php:7.1-fpm 

第一个-v 网址Nginx网站目录映射到PHP目录
第二个-v 映射配置文件php容器和宿主机共享目录

3、修改nginx配置(此处配置文件在本机,/opt/nginx/conf目录下)

user  root;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;server {listen       80;server_name  localhost;location / {#这是nginx容器中的默认配置路径,已经映射到虚拟机/www下了 不需要改动root   /usr/share/nginx/html/;#这里添加index.php入口文件index index.php index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}#配置phplocation ~ \.php$ {#这里要换成php容器的ip!fastcgi_pass   192.168.0.118:9000; fastcgi_index  index.php;#这一段一定要注意!把php容器中默认的/var/www/html写进去,替换掉之前的$documentfastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;#fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;include        fastcgi_params;}
}


 ##############################轮询负载均衡配#################################
   

# upstream order {#ip_hash;#server 192.168.0.118:8011 weight=1;  #weight权重#server 192.168.0.118:8088 weight=1;#}# server{# listen 80;# server_name 192.168.0.118;# location / {#    index  index.html  index.htm;#     proxy_pass http://order/;
# }
# }


####################################标准配置##################################

#   server {
#      listen   80;
#     server_name  somename  alias  another.alias;
# 
#       location / {
#            root   /usr/share/nginx/html/;
#            index  index.html index.htm;
#       }
#    }}


#保存退出,然后重启nginx
docker restart nginx
#去Nginx目录下/opt/nginx/html目录中新建index.php(此目录是共享目录,已经挂载给Nginx和PHP,所以项目可以直接放在这个目录下即可)
#写入php代码,然后本地访问虚拟机ip即可看到配置成功


php扩展安装

首先进入容器
docker  ps

docker  exec  -it   容器ID或名称  /bin/bash

cd /usr/src   里边会有两个压缩文件安装链接MySQL数据库的驱动

docker-php-ext-install pdo pdo_mysqldocker-php-ext-install mysqli

###############################安装MySQL############################
docker安装mysql
1.查找镜像:

docker search mysql

也可以去官网查看镜像tag,选择自己需要的版本,否则会下载最新版本:https://hub.docker.com/_/mysql/

2.下载镜像(如上一步,可以指定想要的版本,不指定则为最新版):

#docker pull mysql:8.0.26

docker pull mysql:5.7.31


定义挂载目录

mkdir -p /opt/mysql/{log,data,conf}vim   /opt/mysql/conf/my.cnf


添加如下内容

[mysqld]#设置3306端口port=3306# 设置mysql的安装目录basedir=/opt/mysql# 设置mysql数据库的数据的存放目录datadir=/opt/mysql/data# 允许最大连接数max_connections=10000# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统max_connect_errors=10# 服务端使用的字符集默认为UTF8character-set-server=utf8# 创建新表时将使用的默认存储引擎default-storage-engine=INNODB# 默认使用“mysql_native_password”插件认证default_authentication_plugin=mysql_native_password[mysql]# 设置mysql客户端默认字符集default-character-set=utf8[client]# 设置mysql客户端连接服务端时默认使用的端口port=3306default-character-set=utf8[mysqld]socket=/tmp/mysql.sock[client]socket=/tmp/mysql.sock

3.通过镜像创建容器并运行:

 docker run  -d -p 3306:3306   --name mysql -v /opt/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /opt/mysql/data:/var/lib/mysql  --privileged=true --restart=always  -e MYSQL_ROOT_PASSWORD=123456  mysql:5.7.31

用Navicat链接测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/781887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【YOLOv5改进系列(9)】高效涨点----使用CAM(上下文增强模块)替换掉yolov5中的SPPF模块

文章目录 🚀🚀🚀前言一、1️⃣ CAM模块详细介绍二、2️⃣CAM模块的三种融合模式三、3️⃣如何添加CAM模块3.1 🎓 添加CAM模块代码3.2 ✨添加yolov5s_CAM.yaml文件3.3 ⭐️修改yolo.py文相关文件 四、4️⃣实验结果4.1 &#x1f39…

Leetcode 82. 删除排序链表中的重复元素 II

给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5] 提示&#xff1a; 链表中节点数目在范围 [0, 300] 内 -100 < Node.…

一些实用的功能函数

1. 【算法】求两个数中&#xff0c;bit位不同的个数&#xff08;在计网那道题中用过&#xff09; 解法&#xff1a;首先把两位数异或&#xff0c;得到的结果&#xff0c;通过自身跟自身-1相与&#xff0c;直到等于0为止 代码如下&#xff1a; int calculateNotSam(int a,int …

uniapp怎么使用接口返回的iconfont图标

uniapp怎么使用接口返回的iconfont图标 首先在你的项目中添加该图标&#xff0c;名称要对应 实际应用 item.ICONFONT_NAME“tools”; item.ICONFONT_COLOR“FA5151”; <view class"iconfont" :class"icon-item.ICONFONT_NAME" :color"item.ICON…

Kubernetes Pod深度解析:构建可靠微服务的秘密武器(上)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Kubernetes航线图&#xff1a;从船长到K8s掌舵者》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Kubernetes概述 2、Pod概述 二、Po…

输出单链表倒数第K个结点值

方法一&#xff1a; 两次遍历链表。第一次遍历&#xff0c;计算链表长度&#xff0c;然后计算链表倒数第m个结点的正数位置k&#xff0c;判断位置是否合法&#xff0c;如果不合法&#xff0c;输出NOT FOUND&#xff0c;否则&#xff0c;进行第二次遍历链表&#xff0c;查找链表…

手写SpringBoot(三)之自动配置

系列文章目录 手写SpringBoot&#xff08;一&#xff09;之简易版SpringBoot 手写SpringBoot&#xff08;二&#xff09;之动态切换Servlet容器 手写SpringBoot&#xff08;三&#xff09;之自动配置 手写SpringBoot&#xff08;四&#xff09;之bean动态加载 手写SpringBoot…

企业培训系统功能介绍

在当今知识经济时代&#xff0c;企业的竞争力在很大程度上取决于员工的专业能力和综合素质。为了适应不断变化的市场需求和技术进步&#xff0c;企业需要对员工进行持续有效的培训。一个高效的企业培训系统对企业人才培训至关重要。以下介绍一下企业培训系统的主要功能&#xf…

电脑文件msvcp120.dll丢失的解决方法详细分析,找多种靠谱方法修复

遇到msvcp120.dll文件丢失的问题实际上不算罕见&#xff0c;这往往是由于我们频繁使用电脑而导致的意外删除&#xff0c;或者是电脑受到病毒感染。当这类情况发生时&#xff0c;msvcp120.dll文件可能会被错误地移除或损坏&#xff0c;这便需要我们去进行修复。接下来&#xff0…

【系统架构师】-第18章-安全架构设计

(1)信息泄露&#xff1a;信息被泄露或透露给某个非授权的实体。 (2)破坏信息的完整性&#xff1a;数据被非授权地进行增删、修改或破坏而受到损失。 (3)拒绝服务&#xff1a;对信息或其他资源的合法访问被无条件地阻止。 (4)非法使用(非授权访问):某一资源被某个非授权的人或…

FA模型切换Stage模型组件切换之ServiceAbility切换DataAbility切换

ServiceAbility切换 FA模型中的ServiceAbility对应Stage模型中的ServiceExtensionAbility。Stage模型下的ServiceExtensionAbility为系统API&#xff0c;只有系统应用才可以创建。因此&#xff0c;FA模型的ServiceAbility的切换&#xff0c;对于系统应用和三方应用策略有所不同…

实践笔记-harbor搭建(版本:2.9.0)

harbor搭建 1.下载安装包&#xff08;版本&#xff1a;2.9.0&#xff09;2.修改配置文件3.安装4.访问harbor5.可能用得上的命令: 环境&#xff1a;centos7 1.下载安装包&#xff08;版本&#xff1a;2.9.0&#xff09; 网盘资源&#xff1a;https://pan.baidu.com/s/1fcoJIa4x…

Linux部署Sonarqube+Gogs+Jenkins(一)

Linux部署SonarqubeGogsJenkins 一、1.Linux安装JDK11环境1. 本地进行上传2. 进入到/usr/java目录&#xff0c;并且进行解压3. 配置文件/etc/profile&#xff0c;配置环境变量4.让对应的配置文件生效5. 验证 二、Linux安装Python环境三、Linux安装Jenkins环境1、/usr目录下创建…

发表SCI论文对文凭有什么要求吗?SCI学历要求

sci论文是学术水平很高的文章&#xff0c;往往要通过课题研究&#xff0c;才能撰写出论文内容来。可以说作者没有一定的文凭&#xff0c;完不成sci论文的撰写&#xff0c;就不能发表。但这不代表文凭是sci论文发表的限制条件&#xff0c;实际上sci期刊对作者文凭没有要求&#…

WEPE系统安装纯净版window11教程(包含pe内系统安装方法)

目录 一.安装u盘启动盘 1.1制作安装系统引导盘 1.2下载保存windows镜像 1.3根据自己电脑品牌查询进入BIOS设置的方法 1.4我们成功进入了PE 二.重装系统 2.1遇到问题 2.2重新来到这个界面 三.PE中基本软件的作用 四.学习声明 今天不敲代码&#xff0c;今天来讲讲We P…

ubuntu 安装 cloudcompare(两种方法)

方法一 &#xff1a;从 snap 安装 &#xff08;推荐&#xff09; 安装简单&#xff0c;基本上功能都有&#xff08;读写保存las&#xff0c;pcd&#xff0c;标注等&#xff09; 安装&#xff1a; sudo apt-get update sudo apt install snap sudo snap install cloudcompare…

Node | Node.js 版本升级

目录 Step1&#xff1a;下载 Step2&#xff1a;安装 Step3&#xff1a;换源 发现其他博客说的 n 模块不太行&#xff0c;所以老老实实地手动安装 Step1&#xff1a;下载 Node 中文官网&#xff1a;https://nodejs.cn/download 点击后&#xff0c;将会下载得到一个 .msi 文件…

WIFI驱动移植实验:配置 Linux 内核

一. 简介 前面文章删除了Linux内核源码&#xff08;NXP官方的kernel内核源码&#xff09;自带的 WIFI驱动。 WIFI驱动移植实验&#xff1a;删除Linux内核自带的 RTL8192CU 驱动-CSDN博客 将正点原子提供的 rtl8188EUS驱动源码添加到 kernel内核源码中。文章如下&#xff1a…

PID算法控制5840-31ZY编码器直流减速电机旋转特定角度(一)

模块分析 在本工程中&#xff0c;使用stm32做主控芯片输出PWM波&#xff0c;TB6112做电源驱动带动5840-31ZY编码器直流减速电机旋转特定角度 有如下模块 TB6112驱动模块 TB6112是性能优于常见L298N的一款电机驱动芯片&#xff0c;体积更小效率更高发热少 其接线如图&#x…

HarmonyOs开发:轮播图Banner组件封装与使用

前言 轮播图在每个项目中都很常见&#xff0c;鸿蒙中在容器组件中也提供了Swiper组件&#xff0c;用于子组件滑动轮播显示&#xff0c;和前端的使用起来也是异曲同工&#xff0c;我们先看下基本的用法。 Swiper() {ForEach(["1", "2", "3", &quo…