先介绍一下我的方案,使用官方的镜像,其中包含图床容器,以及数据库,两个容器,宿主机开启Nginx,反向代理,并申请证书开启HTTPS。群晖中的安装直接参考:http://www.nasyun.com/thread-64644-1-5.html
1. 拉取相关容器
首先使用Docker compose,Docker Hub地址:https://hub.docker.com/r/nmtan/chevereto
version: '3'
services:
db:
image: mariadb
volumes:
- database:/var/lib/mysql:rw
restart: always
networks:
- private
environment:
MYSQL_ROOT_PASSWORD: chevereto_root
MYSQL_DATABASE: chevereto
MYSQL_USER: chevereto
MYSQL_PASSWORD: chevereto
chevereto:
depends_on:
- db
image: nmtan/chevereto
restart: always
networks:
- private
environment:
CHEVERETO_DB_HOST: db
CHEVERETO_DB_USERNAME: chevereto
CHEVERETO_DB_PASSWORD: chevereto
CHEVERETO_DB_NAME: chevereto
CHEVERETO_DB_PREFIX: chv_
volumes:
- chevereto_images:/var/www/html/images:rw
ports:
- 8080:80
networks:
private:
volumes:
database:
chevereto_images:
volumes是映射地址,“:”前为宿主机地址,environment为环境变量,下面的数据库参数自行修改,尤其是密码,数据库如果需要映射端口,可以使用 ports: 映射一个,方便之后的管理。
chevereto下面的端口开启的是8080,自行修改即可,反正后面需要反向代理到443上。
2. 申请证书,
我参考的是:https://www.cnblogs.com/xiaoyige/p/12667640.html
具体方法在我之前的一篇文章中。
这里要提醒的是,证书文件生成好之后要考出来,我存放的路径与文章中相似。在
/usr/local/nginx/ssl
3.配置宿主机Nginx
建议先关闭与Nginx有关,或使用到的容器,影响配置,本机安装后也先关闭,修改好文件后统一开放。
我使用的是yum或者apt-get,也就是包管理安装,没有编译安装。
相关配置参考:https://segmentfault.com/a/1190000019622293
https://www.cnblogs.com/tuyile006/p/12819302.html
我本机运行着几个服务,因此有几个对外端口,域名是A.com,并且这个域名到期可能就不会再用了,因此图床网站要放在一个一直续费的域名上的子域中,pic.B.com
那么直接使用反向代理80,443端口即可。
Nginx的配置文件在
/etc/nginx/nginx.conf
打开上面文档后发现具体配置是”sites-available“文件夹中的“default”
server {
listen 80;
server_name XXX.com;
return 301 https://XXX.com$request_uri;
}
server {
listen 443 ssl;
gzip on;
server_name XXX.com;
ssl_certificate /usr/local/nginx/ssl/XXX.com.cer;
ssl_certificate_key /usr/local/nginx/ssl/XXX.com.key;
access_log /var/log/nginx/pic.log combined;
error_log /var/log/nginx/pic.log;
location / {
proxy_redirect off;
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
client_max_body_size 100m;
client_body_buffer_size 128k;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
首先第一块server中把80端口进行跳转,都转到https上,然后配置443端口,把证书存放的位置指一下,log日志文件位置指一下,然后在proxy_pass中指出服务容器的端口,这样访问就会直接跳转了。
最后要解除上传2M的限制。
docker ps -a
查看下容器的ID,复制容器的配置文件到本地(3dec77ff864f)为容器id
docker cp 3dec77ff864f:/var/www/html/.htaccess /root/
然后编辑文件,添加
php_value post_max_size 24M
php_value upload_max_filesize 10M
在”“之前。
然后把改好的配置文件重新传回容器中。
docker cp /root.htaccess 3dec77ff864f:/var/www/html/
然后在网站仪表盘设置中修改上传图片大小即可。