ステータス:非推奨

この記事では、サポートされなくなったバージョンのCentOSについて説明します。 現在CentOS6を実行しているサーバーを運用している場合は、サポートされているバージョンのCentOSにアップグレードまたは移行することを強くお勧めします。

理由 CentOS 6は2020年11月30日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。 このため、このガイドは維持されなくなりました。

代わりに参照:このガイドは参照として役立つ場合がありますが、他のCentOSリリースでは機能しない場合があります。 可能な場合は、使用しているCentOSのバージョン用に作成されたガイドを使用することを強くお勧めします。

談話について

Discourseは、新しいオープンソースのディスカッションプラットフォームです。 ディスカッションフォーラムの完全な「再起動」として設計されており、従来のフォーラムとは異なるフローと組み込みの信頼システムを備えています。

ステップ1:OS構成


Discourseを実行するための前提条件はいくつかあります。 このチュートリアルでは、新しいCentos6VPSを想定しています。

スワップスペースを追加

RAMが2GB未満のVPSを実行している場合は、VPSでスワップを有効にする必要があります。 そうしないと、一部のビルド手順が失敗する可能性があります。

このチュートリアルには、CentOS6のスワップを有効にする手順が記載されています。 VPSが小さい場合は、少なくとも1GBのスワップスペースを追加します。

root以外のローカルユーザーを作成する

ほとんどの手順は、sudoアクセス権を持つroot以外のユーザーとして実行されます。 このチュートリアルでは、ユーザーアカウントを作成し、それにsudoパワーを付与する方法について説明します。

Discourseを実行するroot以外のユーザーを作成します

Discourseを実行するユーザーアカウントも必要です。 これは、自分のアカウントとは異なるアカウントであることが最善です。 discourse 良い選択でしょう。

EPELリポジトリを追加します

EPELはEnterpriseLinux用のExtraPackagesの略で、ベースのCentOSリポジトリの一部ではないインストールする必要のあるパッケージがいくつかあります。

ローカルユーザーとしてログインし、以下を実行します。

sudo su -c 'rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm'

必要なパッケージをインストールする

これらは、談話の前提条件またはその前提条件です。

sudo yum install gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison iconv-devel ruby-devel libxml2 libxml2-devel libxslt libxslt-devel git

Redisをインストールして起動します

Redisは、Discourseで使用されるオープンソースのKeyValueデータストアです。

sudo yum install redis.x86_64
sudo chkconfig --add redis
sudo chkconfig --level 345 redis on
sudo /etc/init.d/redis start

ステップ2:ngnixをインストールする


Ngnixは、Discourseへのプロキシ接続をリバースするために使用される軽量のWebサーバーおよびリバースプロキシです。

リポジトリを追加

ngnixは中央のCentOSリポジトリにないため、ngnixをインストールできるようにするには、yumのリポジトリを追加する必要があります。

テキストファイルを作成する /etc/yum.repos.d/nginx.repo:

sudo emacs /etc/yum.repos.d/nginx.repo

このコンテンツに貼り付けます:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

インストールしたら、yumパッケージリストを更新してからngnixをインストールする必要があります。

sudo yum upgrade
sudo yum install nginx.x86_64

ステップ3:PostgreSQLをインストールする


Discourseは、データバックエンドにPostgreSQLを使用しています。 EPELにはPostgreSQLのパッケージが含まれていますが、かなり時代遅れです。 これにより、PostgreSQLのリポジトリから新しいパッケージがインストールされます。

CentOSリポジトリを無効にする

まず、コアCentOSリポジトリからのパッケージを調べないようにyumに指示します。 これを行うには、ファイルを編集します /etc/yum.repos.d/CentOS-Base.repo.

sudo emacs /etc/yum.repos.d/CentOS-Base.repo

次の行を追加します。

exclude=postgresql*

[base][updates] このファイルのセクション。

PostgreSQLリポジトリをインストールします

次に、PostgreSQLのリポジトリをyumに登録します。

curl -O http://yum.postgresql.org/9.1/redhat/rhel-6-i386/pgdg-centos91-9.1-4.noarch.rpm
sudo rpm -ivh pgdg-centos91-9.1-4.noarch.rpm 

PostgreSQLサーバーをインストールします

これにより、サーバーとDiscourseに必要ないくつかの開発パッケージがインストールされ、サーバーが起動し、データベースが初期化され、再起動時に起動するように設定されます。

sudo yum install postgresql91-server.x86_64 postgresql91-contrib.x86_64 postgresql91-devel.x86_64

sudo service postgresql-9.1 initdb
sudo service postgresql-9.1 start
sudo chkconfig postgresql-9.1 on

ユーザーに権限を付与する

次に、PostgreSQLにユーザーについて通知し、データベースへのアクセスを許可します。

sudo -u postgres createuser -s root
sudo -u postgres createuser -s discourse

ステップ4:rvmとRubyをインストールする


Rubyとrvmは、談話ユーザーのシングルユーザーコンテキストでインストールされます。

rvmをインストールします

談話ユーザーになり、rvmの安定したブランチをインストールします。

sudo su - discourse
\curl -s -S -L https://get.rvm.io | bash -s stable

rvmは、談話ユーザーのログインスクリプトにいくつかの環境設定を追加します。 これらが設定されていることを確認するには、ログアウトしてから再度ログインするのが最も簡単です。

exit
sudo su - discourse

rvmに必要なパッケージがインストールされていることを確認します

これにより、環境が正しくセットアップされ、rvmが機能する準備ができていることが確認されます。 繰り返しますが、談話ユーザーとして、次を実行します。

rvm --autolibs=read-fail requirements

これにより、rvmで追加のパッケージは必要ないことが返されます。

ルビーをインストールする

談話ユーザーとして、ローカルのruby環境とバンドラーをインストールします。

rvm install 2.0.0
rvm use 2.0.0 --default
gem install bundler

ルビーの構成を微調整する

デフォルトでは、gemビルダーはシステムのPostgreSQLサーバーのサポートライブラリとバイナリを見つけることができません。 このgemをビルドするために、PostgresSQLライブラリをビルドするときにコマンドライン引数を渡すようにバンドルに指示します。

それでも談話ユーザーとして、次を実行します。

bundle config build.pg --with-pgsql-lib=/usr/pgsql-9.1/lib --with-pg-config=/usr/pgsql-9.1/bin/pg_config

ステップ5:談話をインストールして構成する


これで、システムはDiscourseを構築して実行する準備が整いました。

談話を構築する

談話ユーザーとして、gitを使用して談話ソースをプルダウンします。 これにより、Discoursegitツリーがサブフォルダーに複製されます discourse:

git clone git://github.com/discourse/discourse.git discourse

ソースをローカルにコピーしたら、Discourseをビルドします。

cd discourse
bundle install --deployment --without test

談話を構成する

サンプルの設定ファイルをコピーして、Discourseがそれらを見つけられるようにします。

cd config
cp database.yml.production-sample database.yml
cp redis.yml.sample redis.yml
cp discourse.pill.sample discourse.pill
cp environments/production.rb.sample environments/production.rb

編集する必要があります database.yml. 変更 host_names サーバーのホスト名への行。

データベースを作成する

談話ディレクトリに戻り、談話ユーザーが実行すると、次のようになります。

cd ~/discourse
createdb discourse_prod
RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production rake db:migrate
RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production rake assets:precompile

プリコンパイル手順は、画面に出力を出力せずに数分かかる場合があるため、プロセスがハングしたように見える場合があります。

権限を修正する

デフォルトでは、Webサーバーは談話ディレクトリにアクセスできません。 より広範な権限を付与するには、談話ユーザーとしてこれを実行します。

cd ~
chmod og+rx /home/discourse

bluepillをインストールして構成します

Bluepillは、Discourseが自身を監視するために使用するプロセス監視ツールです。 起動時に開始するようにインストールして構成します。

gem install bluepill
echo 'alias bluepill="NOEXEC_DISABLE=1 bluepill --no-privileged -c ~/.bluepill"' >> ~/.bash_profile
rvm wrapper $(rvm current) bootup bluepill
rvm wrapper $(rvm current) bootup bundle

談話を実行する

これで、談話を開始する準備が整いました。 Discourseを開始するには、次を実行します。

RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ROOT=/home/discourse/discourse RAILS_ENV=production NUM_WEBS=2 bluepill --no-privileged -c ~/.bluepill load /home/discourse/discourse/config/discourse.pill

また、これをDiscourseユーザーのcrontabに追加して、起動時に開始するようにDiscourseを構成する必要があります。 編集のためにcrontabを開きます。

crontab -e

そして、ポップアップするエディターに次の行を貼り付けます。

@reboot RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ROOT=/home/discourse/discourse RAILS_ENV=production NUM_WEBS=2 /home/discourse/.rvm/bin/bootup_bluepill --no-privileged -c ~/.bluepill load /home/discourse/discourse/config/discourse.pill

Discourseは現在実行中ですが、ホスト名に送信されたリクエストに応答する前に、実行中のDiscourseサーバーにリクエストを転送するようにngnixを構成する必要があります。

ステップ7:ngnixを構成する


次に、Discourseインスタンスを指すようにngnixを構成します。

再度ログインして、これらのコマンドをローカルユーザーとしてではなく、ローカルユーザーとして実行します。 discourse.

基本ngnix構成

構成に加える必要のある小さな変更があります。 を開きます /etc/nginx/nginx.conf ファイル:

sudo emacs /etc/nginx/nginx.conf

を見つける http ファイルのセクションを作成し、次の行を追加します。

server_names_hash_bucket_size 64;

Discourse用にnginxを構成する

Discourseには、nginx構成ファイルの例が付属しています。 Discourse ngnix構成の例を、ngnixが期待する場所にコピーします。

sudo cp /home/discourse/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf

このファイルに加える必要のある変更がいくつかあります。 `/etc/nginx/conf.d/discourse.conf’ファイルを開きます。

sudo emacs /etc/nginx/conf.d/discourse.conf
  • 変化する server_name あなたのホスト名に。

  • Discourseがインストールされている場所を反映するようにソケットパスを変更します。 これらは次のようになります。

upstream discourse {
  server unix:/home/discourse/discourse/tmp/sockets/thin.0.sock;
  server unix:/home/discourse/discourse/tmp/sockets/thin.1.sock;
  server unix:/home/discourse/discourse/tmp/sockets/thin.2.sock;
  server unix:/home/discourse/discourse/tmp/sockets/thin.3.sock;
}
  • ファイルのベースパスを変更します。 パスのある行を探す /var/www/discourse/public これを正しいパスに置き換えます。 /home/discourse/discourse/public.

次に、ngnixを再起動して、構成の変更を取得します。

sudo /etc/init.d/nginx stop
sudo /etc/init.d/nginx start

ngnixが現在実行されていない場合、stopコマンドは失敗する可能性がありますが、startコマンドは成功するはずです。

ステップ8:談話を使用してください!


Discourseが実行され、ホスト名でリクエストに応答しています。 最後に行う必要があるのは、Discourseインスタンスを管理する権限を与えるための管理者アカウントを設定することです。

Discourseユーザーを作成する

Webブラウザでホスト名に移動して、DiscourseWebサイトを開きます。 自分用のユーザーアカウントを作成し、サインアップに使用した電子メールアドレスをメモします。

自分に管理上の特権を与える

シェルに戻ります。 Discourseユーザーになり、Discourseインスタンスに接続されたRailsコンソールを起動します。

cd ~/discourse
RAILS_ENV=production bundle exec rails c

これにより、コマンドを実行できるRailsコンソールに移動します。 これらのコマンドは、管理アクセスを許可します。 メールアドレスを、サインアップしたメールアドレスに置き換えます。

me = User.find_by_username_or_email('[email protected]')
me.activate
me.admin = true
me.save

このユーザーをデフォルトの連絡先として設定することもできます。

SiteSetting.site_contact_username = me.username

exitと入力して、Railsコンソールを終了します。

管理者であることを確認します

WebブラウザのDiscourseインスタンスに戻ります。 サインアップしたアカウントとしてログインしていない場合は、再度ログインしてください。 これで、Discourseインスタンスを好みに合わせて構成できるようになります。

おめでとう! Discourseをインストールしました。 ハザ!