# Install Discourse on an isolated CentOS 7 server

**URL:** https://meta.discourse.org/t/install-discourse-on-an-isolated-centos-7-server/73538
**Category:** Sysadmins
**Tags:** how-to, install
**Created:** [11월 6, 2017, 5:16오후 UTC](https://meta.discourse.org/t/install-discourse-on-an-isolated-centos-7-server/73538 "2017-11-06T17:16:03Z")
**Posts on this page:** 4
**Page:** 2

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [8월 1, 2019, 1:38오후 UTC](https://meta.discourse.org/t/install-discourse-on-an-isolated-centos-7-server/73538/21 "2019-08-01T13:38:16Z")

</div>

Most plugins carry all the code they need and have a simple install. Those two you tried to use need to fetch gems (libraries) from the internet to able to function.

---

<div class="post-metadata">

### Author: ![ssvenn](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ssvenn/32/86740_2.png) [@ssvenn](https://meta.discourse.org/u/ssvenn)
#### Post date: [10월 23, 2019, 2:21오후 UTC](https://meta.discourse.org/t/install-discourse-on-an-isolated-centos-7-server/73538/22 "2019-10-23T14:21:57Z")

</div>

코드에서 플러그인을 위한 Ruby gem fetch가 어디서 일어나는지 아세요? 찾아보긴 했는데 아직 정확한 위치를 찾지 못했어요.

캐시된 gem을 사용하는 대신 격리된 호스트에서 rubygems 미러를 실행하는 것이 더 우아한 방법일 것 같다는 생각이 드네요. 여기에 튜토리얼을 찾았는데, 시스템 전체의 추가 gem 소스를 구성할 수 있는 것 같습니다.

> **[Run your own gem server - RubyGems Guides](https://guides.rubygems.org/run-your-own-gem-server/)**
>
> Tutorials, guides, FAQs for RubyGems package management

---

<div class="post-metadata">

### Author: ![ssvenn](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ssvenn/32/86740_2.png) [@ssvenn](https://meta.discourse.org/u/ssvenn)
#### Post date: [6월 18, 2021, 6:59오후 UTC](https://meta.discourse.org/t/install-discourse-on-an-isolated-centos-7-server/73538/23 "2021-06-18T18:59:13Z")

</div>

내부 Discourse는 꽤 오랫동안 같은 구버전을 안정적으로 사용해 왔지만, 마침내 IE9를 제거하게 되어 업그레이드가 시급한 상태입니다.  
Discourse 최신 버전에서도 이 가이드는 여전히 유효합니다. RHEL 7 대신 RHEL 8을 사용해도 마찬가지입니다. 🙂

실험을 통해 discourse-prometheus와 discourse-calendar 플러그인이 추가 의존성이 있더라도 오프라인에서도 작동하도록 하는 방법을 알아냈습니다. 핵심은 빌드 서버의 플러그인 디렉터리와 /var/www/discourse/vendor/bundle/ruby에 있는 루비 제머(ruby gems)를 모두 가져오는 것이었습니다.

```plaintext
docker run -it -v ~/local/rubygems.org:/local-rubygems local_discourse/app /bin/bash -c "cp -rv /var/www/discourse/vendor/bundle/ruby /local-rubygems"
docker run -it -v ~/local/rubygems.org/plugin-gems/discourse-calendar:/local-rubygems local_discourse/app /bin/bash -c "cp -rv /var/www/discourse/plugins/discourse-calendar/gems /local-rubygems"
docker run -it -v ~/local/rubygems.org/plugin-gems/discourse-prometheus:/local-rubygems local_discourse/app /bin/bash -c "cp -rv /var/www/discourse/plugins/discourse-prometheus/gems /local-rubygems"

```

그리고 /templates/web.template.yml 파일에서 다음과 같이 설정합니다:

```plaintext
  - exec:
      cd: $home
      hook: bundle_exec
      cmd:
        # 로컬 루비 캐시 복사
        - cp -rv /local-rubygems.org/ruby/* $home/vendor/bundle/ruby/
        - cp -rv /local-rubygems.org/plugin-gems/* $home/plugins/
        - su discourse -c 'bundle install --local --deployment --retry 3 --jobs 4 --verbose --without test development'

```

참고로 Active Directory IIS SSO 관련 토론 주제가 언젠가 사라진 것 같지만, 코드는 여전히 [https://github.com/laktak/discourse-sso에서](https://github.com/laktak/discourse-sso%EC%97%90%EC%84%9C) 사용할 수 있으며, 현재 이름이 변경된 [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) SSO와도 정상적으로 작동합니다.

---

<div class="post-metadata">

### Author: ![ssvenn](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ssvenn/32/86740_2.png) [@ssvenn](https://meta.discourse.org/u/ssvenn)
#### Post date: [7월 5, 2022, 11:15오전 UTC](https://meta.discourse.org/t/install-discourse-on-an-isolated-centos-7-server/73538/24 "2022-07-05T11:15:17Z")

</div>

다른 업그레이드를 시도해 보았는데, web.template.yml 파일에 새로운 “yarn install” 섹션이 추가된 것으로 보이며, 이로 인해 격리된 환경에서 문제가 발생하고 있습니다.

```plaintext
- exec:
      cd: $home
      cmd:
        - "[! -d 'node_modules'] || su discourse -c 'yarn install --production && yarn cache list'"

```

기존 컨테이너와 새 컨테이너의 내용을 비교해 보면, 새 컨테이너에는 /usr/local/share/.cache/yarn/v6에 캐시된 yarn 패키지가 많이 있는 반면, 기존 컨테이너에는 아무것도 없는 것 같습니다. 아마도 필요한 node.js 패키지가 이전에는 베이스 이미지 내에 포함되어 있었지만, 이제는 재빌드 과정에서 업데이트되는 것으로 추측됩니다.

ruby 캐시와 동일한 방식으로 yarn 캐시를 복사해 내어, 빌드 박스의 캐시된 패키지를 yarn이 사용하도록 할 수 있는지 실험해 볼 것입니다.

[이전 페이지](https://meta.discourse.org/t/install-discourse-on-an-isolated-centos-7-server/73538.md?page=1)
