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

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

  • @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的代码,所有的代码级别修改都需要在这里面进行。

  • 关于域名跳转问题

    这个需要在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来确保使用你自己的构建镜像

Tech Talk的管理者

Erlang脑残粉,Ruby(Common Lisp)大爱