系统环境:CentOS Linux release 7.4.1708 (Core)
参考:
https://blog.csdn.net/tttzzztttzzz/article/details/86709318
https://www.linuxea.com/1423.html
一、拉取镜像并启动(改下ip地址)
docker run -d --restart=always --privileged=true --net=host --name=fastdfs -e IP=xx.xx.xxx.xxx(ip地址) -e WEB_PORT=80 -v ${HOME}/fastdfs:/var/local/fdfs registry.cn-beijing.aliyuncs.com/tianzuo/fastdfs
二、测试FastDFS
1.进入fastdfs容器
docker exec -it fastdfs /bin/bash
2.添加index.html测试文件
echo "Hello FastDFS!">index.html
3.测试文件上传
fdfs_test /etc/fdfs/client.conf upload index.html
返回 example file url: http://xx.xx.xx.xx/group1/M00/00/00/rBDzWF5M-I-AaotYAAAADwL5vO468_big.html 表示FastDFS上传功能没问题
三、下载fastdfs-nginx-module-1.20、http_ssl_module、模块和nginx安装包
1.下载fastdfs-nginx-module-1.20模块
可以看下容器的linux版本
cat /etc/issue
我的是Alpine Linux 3.8。没有apt-get、vim等命令。alpine 通过apk –help命令查看完整的包管理命令
创建下载目录
mkdir /usr/local/src
进入下载目录
cd /usr/local/src
下载fastdfs-nginx-module-1.20
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz
解压
tar xf V1.20.tar.gz
2.下载nginx安装包
wget http://nginx.org/download/nginx-1.13.6.tar.gz
解压
tar xf nginx-1.13.6.tar.gz
进入nginx-1.13.6目录
cd nginx-1.13.6
3.下载http_ssl_module模块
apk --update --no-cache add geoip geoip-dev pcre libxslt gd openssl-dev pcre-dev zlib-dev build-base linux-headers libxslt-dev gd-dev openssl-dev libstdc++ libgcc patch logrotate supervisor inotify-tools && rm -rf /var/cache/apk/*
4.nginx添加模块
./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module-1.20/src --with-httpstubstatus_module --with-httpsslmodule
解释下 ./configure --prefix 后面跟的是nginx安装目录
编译nginx
make
5.查看是否支持ssl
objs/nginx -V
有 TLS SNI support enabled 这个信息表示nginx支持ssl
把安装目录下的sbin/nginx备份
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-bak
把objs/nginx拷贝到安装目录下sbin的文件夹下
cp objs/nginx /usr/local/nginx/sbin
进入nginx安装目录
cd /usr/local/nginx
查看nginx.conf是否编写有误
sbin/nginx -t
6.ssl证书
创建证书目录
mkdir cert
从阿里云下载证书拷贝到cert目录下
退出容器
exit
把宿主机文件拷贝到容器里
docker cp 宿主机目录或文件 容器ID(或容器名):/usr/local/nginx/cert
7.编写fastdfs容器里的nginx.conf (支持http和https)
vi /usr/local/nginx/conf/nginx.conf
server {
listen 80;
#server_name localhost;
####### https ###########
listen 443 ssl;
server_name localhost;
#ssl on;
ssl_certificate /usr/local/nginx/cert/cert.pem;
ssl_certificate_key /usr/local/nginx/cert/cert.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
####### https ###########
location ~ /group[0-9]/M00 {
ngx_fastdfs_module;
}
}
保存后查看是否编写正确
sbin/nginx -t
查看是否已经监听80和443端口
netstat -unltp
如果443和80端口都没有被监听到,需启动nginx
sbin/nginx
如果443和80端口只监听到一个,停止nginx
sbin/nginx -s stop
再启动nginx
sbin/nginx
再次上传文件
把文件地址拷贝到浏览器地址栏看下能否正常显示,再把http改成https看下能否正常显示,如果都没问题就表示成功了