CentOS6.4x64VPSにDiscourseをインストールする方法
ステータス:非推奨
この記事では、サポートされなくなったバージョンの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をインストールしました。 ハザ!