Docker | FastDFS单机版安装+升级nginx+隐藏版本信息

一、FastDFS 简介

1.1.什么是FastDFS

  FastDFS是一个开源的轻量级分布式文件系统,主要是使用它对文件进行管理,主要用到的功能是:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
  FastDFS充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

1.2.FastDFS的组成

  FastDFS由跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)构成。

1.2.1 Tracker server 追踪服务器

  追踪服务器负责接收客户端的请求,选择合适的组合storage server ,tracker server 与 storage server之间也会用心跳机制来检测对方是否活着。
  Tracker需要管理的信息也都放在内存中,并且里面所有的Tracker都是对等的(每个节点地位相等),很容易扩展
客户端访问集群的时候会随机分配一个Tracker来和客户端交互。

1.2.2 Storage server 储存服务器

  实际存储数据,分成若干个组(group),实际traker就是管理的storage中的组,而组内机器中则存储数据,group可以隔离不同应用的数据,不同的应用的数据放在不同group里面。

  优点
  海量的存储:主从型分布式存储,存储空间方便拓展,
fastDFS对文件内容做hash处理,避免出现重复文件
然后fastDFS结合Nginx集成, 提供网站效率。

1.2.3 客户端Client

  主要是上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。每个客户端服务器都需要安装Nginx。

1.2.3.1 上传文件(写操作)

  写操作的时候,storage会将他所挂载的所有数据存储目录的底下都创建2级子目录,每一级256个总共65536个,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据作为本地文件存储到该目录中。
在这里插入图片描述

1.2.3.2 下载文件(读操作)

  当客户端向Tracker发起下载请求时,并不会直接下载,而是先查询storage server(检测同步状态),返回storage server的ip和端口,然后客户端会带着文件信息(组名,路径,文件名),去访问相关的storage,然后下载文件。

在这里插入图片描述

1.3 FastDFS路径说明

stringfast/M00/00/00/rBGdZl5ak4yAHTNeAAxv6ziU5pA742.png
  • 组名(/stringfast):文件上传后所在的Storage组名称。在文件上传成功后由Storage 服务器返回,需要客户端自行保存。
  • 虚拟磁盘路径(/M00):Storage配置的虚拟路径,指向Storage组中某个节点的硬盘地址。与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
  • 数据两级目录(/00/00):Storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据。该数值采用算法计算得出。
  • 文件名:与文件上传时的文件名称不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

二、FastDFS 安装

2.1 拉取 FastDFS 镜像

2.1.1 查询FastDFS镜像

docker search fastdfs

在这里插入图片描述

2.1.2 拉取FastDFS镜像

docker pull morunchang/fastdfs
#默认拉取最新版本的
docker pull morunchang/fastdfs:1.2
#本人拉取的是1.2版本的
sudo docker login --username=白衣卿相2744 registry.cn-shanghai.aliyuncs.com
sudo docker pull registry.cn-shanghai.aliyuncs.com/dockerbin/fastdfs:[镜像版本号]
#亦可以使用阿里云的镜像

在这里插入图片描述

三、启动FastDFS

3.1 启动FastDFS 的 tracker 端

docker run -d --name=tracker --net=host --restart=always -v /opt/fastdfsdata/tracker/data:/data/fast_data/data  morunchang/fastdfs sh tracker.sh

3.2 启动FastDFS 的 storage 端

docker run -d --name=storage --net=host --restart=always -v /opt/fastdfsdata/storage/data:/data/fast_data/data -e TRACKER_IP=[TRACKER_IP地址]:22122 -e GROUP_NAME=stringfast morunchang/fastdfs sh storage.sh

参数说明:

  • -d 后台运行
  • –name 别名,格式为 --name 空格 别名--name=别名
  • --net=host 网络模式,告诉容器使用主机网络堆栈
  • --restart=always 自动重启容器,也可以启动后追加
  • -v 挂载文件目录
  • -e 添加到环境变量中
  • stringfast 是组名,即 Storage 的组
  • 如果想要增加新的 Storage 服务器,再次运行该命令,注意更换新组名

四、修改配置(严格按照参数启动,此步骤可以省略)

4.1 进入storage中

docker exec -it storage  /bin/bash

4.2 配置nginx.conf

vi /etc/nginx/conf/nginx.conf

修改以下内容(一般无需修改,如果需要改端口等自行修改)

    server {
        listen       8080;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location ~ /M00 {
                    root /data/fast_data/data;
                    ngx_fastdfs_module;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

4.3 配置storage.conf

vi /etc/fdfs/storage.conf
# 创建storage时的ip,如果启动时带了 -e 参数,默认即可
tracker_server=[TRACKER_IP地址]:22122

#推荐与Nignx配置的端口相同
http.server_port=8080

在这里插入图片描述
在这里插入图片描述
文件位置说明:

  • FastDFS文件存放位置:/data/fast_data/data
  • Nginx 配置文件位置 /etc/nginx/conf/nginx.conf
  • FastDFS storage 配置文件位置 /etc/fdfs/storage.conf

2.3.4 重启容器

docker restart storage

五、追加 FastDFS 开机自启动

docker update --restart=always tracker
docker update --restart=always storage

六、开放防火墙端口或关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

七、升级nginx版本

  注:不想知道过程直接看最后一步

1.进入容器

docker exec -it storage  /bin/bash
#上述命令在宿主机操作,下述命令在容器里操作

2.下载nginx(根据需要选择最新版本)

cd /opt/
wget http://nginx.org/download/nginx-1.21.4.tar.gz

在这里插入图片描述

3.解压nginx

tar -zxvf nginx-1.21.4.tar.gz

4.隐藏nginx版本及请求头(不需要可以跳过)

详情请看 Nginx | nginx 知识归档

5.编译nginx

cd nginx-1.21.4
./configure  --prefix=/etc/nginx --add-module=/data/fastdfs-nginx-module/src
make

在这里插入图片描述
在这里插入图片描述

5.nginx可执行文件测试

/opt/nginx-1.21.4/objs/nginx -t

在这里插入图片描述

6.nginx可执行文件替换

mv /etc/nginx/sbin/nginx  /etc/nginx/sbin/nginx.old
mv /opt/nginx-1.21.4/objs/nginx  /etc/nginx/sbin/nginx 
chmod 755 /etc/nginx/sbin/nginx

在这里插入图片描述

7.重启容器

docker restart  storage

在这里插入图片描述

8.查看效果(我去了版本号)

在这里插入图片描述
在这里插入图片描述

9.复制备用

  可以替换其他环境中的nginx可执行文件

docker cp storage:/etc/nginx/sbin/nginx /opt/

在这里插入图片描述

10.快速导入

  我把nginx执行文件上传到了阿里云oss,以后安装时,只需要在新的容器里面下载替换老的nginx执行文件,随后重启容器即可。
【点击下载成品文件】

docker exec  storage wget  https://*.oss-cn-shanghai.aliyuncs.com/linux_soft/nginx   -o /etc/nginx/sbin/nginx
docker restart  storage
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 感谢您的提问。以下是使用 Docker 搭建一套简单的 PHP + Nginx 环境的详细步骤: 1. 安装 DockerDocker Compose 您可以在 Docker 的官方网站上下载并安装 DockerDocker Compose,这里不再赘述。 2. 创建项目文件夹 在您的电脑上创建一个新的项目文件夹,用于存放 PHP 和 Nginx 的配置文件和代码。 3. 创建 Nginx 配置文件 在您的项目文件夹中创建一个名为 `nginx.conf` 的文件,并在其中添加以下内容: ``` server { listen 80; server_name localhost; root /var/www/html; index index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name; include fastcgi_params; } } ``` 该配置文件定义了一个名为 `localhost` 的 Nginx 服务器,将 HTTP 请求监听在 80 端口上,使用 PHP FastCGI 进程来处理 PHP 代码。 4. 创建 PHP 配置文件 在您的项目文件夹中创建一个名为 `php.ini` 的文件,并在其中添加以下内容: ``` error_reporting = E_ALL display_errors = On display_startup_errors = On date.timezone = Asia/Shanghai ``` 该配置文件定义了 PHP 的一些基本配置,例如时区和错误报告。 5. 创建 Docker 配置文件 在您的项目文件夹中创建一个名为 `docker-compose.yml` 的文件,并在其中添加以下内容: ``` version: '3' services: nginx: image: nginx:1.18 volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./code:/var/www/html ports: - 80:80 depends_on: - php php: image: php:7.4-fpm volumes: - ./php.ini:/usr/local/etc/php/php.ini - ./code:/var/www/html ``` 该配置文件定义了两个 Docker 容器,分别对应 Nginx 和 PHP。Nginx 容器使用 Nginx 1.18 的官方镜像,挂载了刚刚创建的 `nginx.conf` 文件和项目代码文件夹,将 HTTP 请求监听在主机的 80 端口上,并依赖于 PHP 容器。PHP 容器使用 PHP 7.4 的官方镜像,挂载了刚刚创建的 `php.ini` 文件和项目代码文件夹。 6. 启动 Docker 容器 打开终端,切换到您的项目文件夹所在的目录,并执行以下命令: ``` docker-compose up ``` 该命令将会启动 Nginx 和 PHP 的 Docker 容器,并在终端中输出它们的日志。您可以通过浏览 ### 回答2: 使用Docker搭建一套简单的PHP+Nginx环境,可以按照以下步骤进行: 1. 首先,安装DockerDocker Compose,可以根据操作系统的不同,参考官方文档进行安装。 2. 创建一个新的文件夹,用于存放项目文件,并进入该文件夹。 3. 在项目文件夹中创建一个名为`docker-compose.yml`的文件,并打开编辑。 4. 在`docker-compose.yml`文件中添加以下内容: ``` version: '3' services: nginx: image: nginx:1.18 ports: - "80:80" volumes: - ./nginx/conf.d:/etc/nginx/conf.d - ./nginx/html:/usr/share/nginx/html php: image: php:7.4.26-fpm volumes: - ./php:/var/www/html ``` 5. 创建`nginx`文件夹,并在其中创建一个`conf.d`文件夹和一个`html`文件夹。 6. 在`conf.d`文件夹中创建一个名为`default.conf`的Nginx配置文件,并将以下内容复制到文件中: ``` server { listen 80; server_name localhost; root /usr/share/nginx/html; index index.php index.html; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ``` 7. 在`html`文件夹中创建一个名为`index.php`的PHP文件,并在其中添加以下内容作为测试: ```php <?php phpinfo(); ``` 8. 创建`php`文件夹,用于存放PHP项目文件。 9. 保存并关闭所有文件。 10. 在终端中进入项目文件夹,并运行以下命令启动Docker容器: ``` docker-compose up -d ``` 11. 打开浏览器,访问`http://localhost`,应该能看到PHP的信息页面,表示环境搭建成功。 通过以上步骤,我们就成功地使用Docker搭建了一套简单的PHP+Nginx环境,可以在本地进行开发和测试。 ### 回答3: 使用Docker搭建一套简单的PHP Nginx环境,可以按照以下步骤进行操作: 1. 首先,确保已经安装DockerDocker Compose,以便能够管理和运行容器。 2. 创建一个工作目录,用于存放相关的配置文件和Docker Compose文件。 3. 在工作目录中创建一个名为docker-compose.yml的文件,并在其中编写以下内容: ```yaml version: '3' services: web: image: nginx:1.18 volumes: - ./app:/var/www/html - ./nginx.conf:/etc/nginx/nginx.conf ports: - 80:80 php: image: php:7.4.26-fpm volumes: - ./app:/var/www/html ``` 这个文件定义了两个服务,一个是Nginx,一个是PHP-FPM。Nginx服务使用官方提供的1.18版本的镜像,将工作目录中的app文件夹挂载到容器的/var/www/html目录,用于存放网站文件;同时将工作目录中的nginx.conf文件挂载到容器的/etc/nginx/nginx.conf目录,用于配置Nginx。PHP服务使用官方提供的7.4.26-fpm版本的镜像,将工作目录中的app文件夹挂载到容器的/var/www/html目录,与Nginx共享代码。 4. 在工作目录中创建一个名为nginx.conf的文件,并在其中编写以下内容: ```nginx server { listen 80; index index.php; root /var/www/html; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ``` 这个配置文件定义了Nginx的基本设置,将请求转发给PHP-FPM处理。 5. 在工作目录中创建一个名为app的文件夹,用于存放PHP文件和网站代码。 6. 打开命令行工具,进入工作目录,运行以下命令启动容器: ``` docker-compose up -d ``` 这个命令会根据docker-compose.yml文件中定义的配置启动容器。 7. 打开浏览器,访问http://localhost,即可看到运行在Docker容器中的PHP Nginx环境。 通过以上步骤,我们成功使用Docker搭建了一个简单的PHP Nginx环境,Nginx版本为1.18,PHP版本为7.4.26。可以在工作目录的app文件夹中添加任意PHP文件和网站代码,Nginx会将请求转发给PHP-FPM处理,并将结果返回给浏览器显示。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值