Web后端 请教几个 homeland 程序的问题!

humwicked · 发布于 2017年10月02日 · 最后由 huacnlee 回复于 2018年05月22日 · 626 次阅读
96

国庆好!

最近在折腾homeland程序搭建一个论坛,现在论坛已经通过docker(本来是想通过普通方式搭建的,即手动方式,但弄了很多实在弄不好)方式部署好了!Docker 部署 homeland确实很方便,但是现在遇到了一些问题,就是docker模式我不知道怎么修改(无法修改)homeland的源代码,比如我要做修改站点的favicon.ico 站标,修改一程序的一些CSS。不知道贵站是怎么修改的呢?我之前了解到可以自己重新打包修改过的homeland封装 image,但是我不知道要怎么修改homeland_docker,希望不吝赐教!

另外通过docker方式搭建好的homeland,我绑定域名有 ABC.COM 和WWW.ABC.COM,我发现WWW.ABC.COM不会自动跳转到ABC.COM,另外服务器的IP地址也能访问到网站。😰

共收到 11 条回复
84794b

关于域名跳转问题

这个需要在nginx上进行配置,例如ttalk.im的nginx配置

server {
        listen 80 default;
        server_name ttalk.im,www.ttalk.im;
        location / {
                 rewrite ^(.*) https://$server_name/$1 permanent;
        }

}

nginx的相关配置应当在homeland下面的etc当中

站点的favicon.ico

静态资源一般都放在了homeland的shared目录下,这个可以根据你的需要进行修改

源代码修改

我这里是重新fork了homeland的代码,以及docker构建脚本, 修改了其中代码指向

# NAME:     homeland/myhomeland
FROM homeland/base:0.2.3
MAINTAINER David Gao "https://github.com/DavidAlphaFox"

ENV RAILS_ENV 'production'
RUN curl https://get.acme.sh | sh

ENV HOMELAND_VERSION '3.0.8'

RUN useradd ruby -s /bin/bash -m -U &&\
    mkdir -p /var/www &&\
    cd /var/www &&\
    git clone --branch v$HOMELAND_VERSION https://github.com/DavidAlphaFox/homeland.git --depth 1
RUN cd /var/www/homeland && bundle install --deployment &&\
    find /var/www/homeland/vendor/bundle -name tmp -type d -exec rm -rf {} + &&\
    chown -R ruby:ruby /var/www

WORKDIR /var/www/homeland


相关文件放在了homeland的images下,以及你自己需要修改docker-compose.yml来确保使用你自己的构建镜像

96
84794bDavidAlphaFox 回复

😘 非常感谢详细回答!

首先阐述一下我现在的部署方式,我是通过Homeland官方推荐的Docker部署的。

1、关于Nginx 重定向问题

其实我就是采用你这种方式设置的,我修改nginx配置文件路径如下:

/root/homeland/etc/nginx/homeland.conf

配置修改如下

server {
  listen 80 default;
  include /etc/nginx/conf.d/homeland/*.conf;
  server_name domian.com www.domian.com;
  rewrite ^(.*) https://$server_name/$1 permanent;
  location /nginx_status {
    allow 127.0.0.1;
    deny all;
    stub_status on;
  }

但是这种方式修改后是无法访问网站,提示过多重定向!不知道是不是我修改的配置文件错了吗?

2、站点的favicon.ico

是不是把favicon.ico文件直接丢进如下目录即可吗?

/root/homeland/shared

另外,如果有其他图片丢进这个目录,那么站点的路径是什么呢?我如何引用到某个图片?

比如我丢进一个big.png 图片进入 /root/homeland/shared 文件夹,那么访问地址是否是:https://domian.com/images/big.png

3、关于fork源码修改

我觉得通过docker方式部署确实很方便快捷。之前也参考过testerhome 分支的修改方法,但都安装失败,应该是我修改匹配的文件不对。不知道关于homeland fork具体需要修改哪几个homeland_docker文件才能安装时使用我自己的分支呢?

PS:我通过看您的回复解答还是看不太懂,关于fork源码修改这里能否再详细的回复一下!非常感谢!

祝社区越来越好!

96

另外我发现事实上贵站的nginx重定向貌似也没做全,我实际访问IP是能自动跳转到https://ttalk.im/了。

但是访问https://wwwttalk.im/还是没有跳转!

84794b

@humwicked

nginx

TTalk.im并没有使用homeland自带的nginx,而是在host上配置了一个nginx进行相应的转发。 做跳转需要单独的一个server节,里面没有任何多余的配置,就像这样。当然这个配置并没有完全做到你说的访问 https://www.ttalk.im 会跳转 https://ttalk.im

server {
        listen 80 default;
        server_name ttalk.im,www.ttalk.im;
        location / {
                 rewrite ^(.*) https://$server_name/$1 permanent;
        }
}

如果想做到访问https://www.ttalk.im 会跳转 https://ttalk.im, 需要建立另外一个server节,这里只是个示意,还需要进行测试。

server {
        listen 443;
        server_name www.ttalk.im;
        location / {
                 rewrite ^(.*) https://ttalk.im/$1 permanent;
        }
}

静态文件

因为homeland是使用的docker文件映射,这个是从docker-compose.yml中截取关于静态文件的配置

- ./shared/cache/assets:/var/www/homeland/public/assets
- ./shared/.well-known:/var/www/homeland/public/.well-known
- ./data/uploads:/var/www/homeland/public/uploads
- ./shared/cache/uploads-thumb:/var/www/cache/uploads-thumb
- ./shared/system:/var/www/homeland/public/system

如果你想新增一个静态文件,是要放到./shared/system下,然后根据homeland的nginx配置文件

root /var/www/homeland/public;

access_log /var/www/log/homeland-access.log timed_combined buffer=1k;
error_log  /var/www/log/homeland-error.log;

# DO NOT CHANGE THIS
location ~ (/system|.well-known|/avatar.png|/favicon.ico|/*.txt) {
  access_log        off;
  expires           7d;
  gzip_static on;
  add_header  Cache-Control public;
}

可以直接通过绝对路径去访问/system/xxx.png 比如我丢进一个big.png 图片进入 /root/homeland/system 文件夹,那么访问地址是否是:https://domian.com/system/big.png

关于fork

一个是要fork https://github.com/ruby-china/homeland-docker, 这个主要是用来构建Docker镜像的,所有的Docker构建都是通过这个来完成的。 fork之后,需要修改docker-compose.yml和images/homeland/Dockerfile , 分别指向你的镜像和源代码

令一个是要fork https://github.com/ruby-china/homeland, 这个是homeland的代码,所有的代码级别修改都需要在这里面进行。

96
84794bDavidAlphaFox 回复

节日愉快,非常感谢耐心详细解答!🎉

关于nginx重定向的做法,我按照你说的方式去做始终失败,昨天我换了一种方式修改,发现成功了,代码如下:

server {
  listen 80 default_server;

  server_name ib-china.org www.ib-china.org;
  if ($host ~* www.ib-china.org) { 
    return 301 https://ib-china.org$request_uri;
  }
  include /etc/nginx/conf.d/homeland/*.conf;

  location /nginx_status {
    allow 127.0.0.1;
    deny all;
    stub_status on;
  }

另外关于fork,一种还琢磨不透,怎么修改始终make的时候源码都是去官方抓docker了。

主要是对docker一窍不通,看来还需要时间去学习!

96

看了你们的答案,还是不懂怎么修改favicon.ico....

84794b
32YUFENGWANG 回复

@YUFENGWANG 简单的说就是在homeland/shared/cache/assets下面将favicon-“hash”这个文件替换掉,但是下次升级的homeland时候,就会需要在做一次。根本的解决方案就是,直接改代码。

96
84794bDavidAlphaFox 回复

我还是改代码吧。。。。

84794b
32YUFENGWANG 回复

我好像也是改的代码,但是有点不记得了,homeland是个面向程序员的产品,很多时候需要自己动手丰衣足食。

96
84794bDavidAlphaFox 回复

管理后台“设置”功能,修改"custom_head_html",增加:

<link rel="icon" href="https://..." />

favicon 图片可以在发帖界面上传得到

需要 登录/注册 后方可回复, 如果你还没有账号请点击这里 注册