先介绍一下我的方案,使用官方的镜像,其中包含图床容器,以及数据库,两个容器,宿主机开启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:80networks: 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 24Mphp_value upload_max_filesize 10M在""之前。
然后把改好的配置文件重新传回容器中。
docker cp /root.htaccess 3dec77ff864f:/var/www/html/然后在网站仪表盘设置中修改上传图片大小即可。