Docker+Nginx+FTP 文件共享网站


一、安装 centos7 镜像

# 拉取 centos7 镜像
docker pull centos:7

# 启动 centos7 容器
docker run -idt --name ftp -v /data/ftp:/data/ftp  -p 20:20 -p 21:21 -p 8020:8020 -p 47400-47470:47400-47470 -e FTP_USER=ftp -e FTP_PASS=ftp -e PASV_ADDRESS=0.0.0.0 --privileged=true centos:7   /usr/sbin/init

二、 环境初始化

# 进入容器
docker exec -it ftp /bin/bash

# 安装常用命令
yum -y install net-tools vim tree unzip telnet gcc gcc-c++ make

三、 安装Nginx

# 安装依赖
yum install -y pcre-devel openssl-devel

# 新建 nginx 用户
useradd -s /sbin/nologin -M nginx

# 将 nginx 安装包放置在 /data/ftp 下,进入 /data/ftp 目录
cd /data/ftp

# 将 nginx 安装包解压到 /usr/local
tar xf /data/soft/nginx/nginx-1.16.1.tar.gz -C /usr/local

# 编译安装
cd /usr/local/nginx-1.16.1
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

make && make install

mkdir /usr/local/nginx/conf/conf.d
cd /usr/local/nginx/conf/
mv nginx.conf nginx.conf.bak

# 创建 nginx 配置文件
vim nginx.conf
user nginx;
worker_processes 1;
events {
    worker_connections 1024;
}
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    include             /usr/local/nginx/conf/conf.d/*.conf;
}

# 创建 ftp 的 nginx 代理配置文件
cd /usr/local/nginx/conf/conf.d/
vim ftp-web.conf
server{
        listen 8020;
        server_name 172.17.0.2;
        location / {
        root /data/ftp/;
        index ftpuser;
        autoindex on;             # 显示目录
        autoindex_exact_size on;  # 显示文件大小,on(单位bytes);off(单位:KB,MB,GB)
        autoindex_localtime on;   # 显示文件时间,默认off,显示文件时间GMT时间,on为文件服务器时间
        charset utf-8,gbk;        # 解决中文乱码问题
}
}

# 启动 nginx
/usr/local/nginx/sbin/nginx

四、 安装 FTP 服务器

# 安装ftp服务

yum install vsftpd -y

# 启动ftp服务

systemctl start vsftpd

五、访问测试

六、注意事项

1、若出现无法访问,查看目录权限。