Homeland Homeland Docker 部署后,不能上传头像,和上传图片,如何解决?

souyunku · 2018年09月21日 · 最后由 souyunku 回复于 2018年09月25日 · 5858 次阅读

头像路径显示错误

F12 发现头像路径是localhost

<img class="media-object avatar-96" src="http://localhost/system/letter_avatars/2/A/226_95_81/192.png">

如果重新上传头像就报错

app.local.env 配置

RAILS_ENV=production
# RAILS_LOG_TO_STDOUT=true

# Nginx
# NGINX_WORKER_CONNECTIONS=65535

# Database
DATABASE_URL=postgres://postgres@postgresql:5432/homeland
# DATABASE_POOL=64
REDIS_URL=redis://redis:6379/1
ELASTICSEARCH_HOST=elasticsearch:9200
MEMCACHED_HOST=memcached:11211

# App Config
app_name=Homeland
https=false
domain=xxxxx
# cert_domain=
# modules=all
# profile_fields=all
admin_emails=xxxxx
asset_host=

# [uploader]
upload_provider=file
# upload_host 
upload_host=

修改容器 内部 nginx.conf.erb ,还是上传图片失败

$  /home/app/homeland/config/nginx

$ vi nginx.conf,erb
在nginx.conf里追加client_body_temp_path属性。

client_body_temp_path /var/tmp/nginx;

看看 log/nginx-error.log

2018/09/21 16:18:13 [crit] 11#11: *12 open() "/var/tmp/nginx/client_body/0000000001" failed (13: Permission denied), client: 61.135.161.44, server: , request: "POST /setting HTTP/1.1", host: "bbs.souyunku.com", referrer: "http://bbs.souyunku.com/setting"

权限被拒绝,没有权限,在哪里加 "/var/tmp/nginx/client_body/0000000001 的权限

我是进入 docker 镜像里授权步骤

$ docker exec -it 263fc /bin/sh
$ chmod 777 -R /var/tmp/nginx/client_body

$ vi /etc/nginx/nginx.conf
在nginx.conf里追加client_body_temp_path属性。

client_body_temp_path /var/tmp/nginx;

$ exit

重启后还是,一样的错,不能上传头像,和上传图片

make restart
$ less nginx-error.log

2018/09/21 16:52:35 [crit] 12#12: *7 open() "/var/tmp/nginx/client_body/0000000002" failed (13: Permission denied), client: 61.135.161.44, server: , request: "POST /setting HTTP/1.1", host: "bbs.souyunku.com", referrer: "http://bbs.souyunku.com/setting"

修改容器 内部 nginx.conf.erb ,还是上传图片失败

$  /home/app/homeland/config/nginx

$ vi nginx.conf,erb
在nginx.conf里追加client_body_temp_path属性。

client_body_temp_path /var/tmp/nginx;

你 Docker 理解错了,你不能 docker exec -it 263fc /bin/sh 进去修改文件,修改没有效果的。

上面的修改过程都是没有任何作用的。

homeland/homeland 这个 Docker Image 里面已经处理好权限的,/var/tmp/nginx 这个路径是 app 用户的权限,Nginx 的配置也设定好用 app 用户来执行的。

我刚才用 homeland-docker 拉下来启动验证了一下,上传是没有问题的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号