CentOS6.4x64VPSにDiscourseをインストールする方法
ステータス:非推奨
この記事では、サポートされなくなったバージョンのCentOSについて説明します。 現在CentOS6を実行しているサーバーを運用している場合は、サポートされているバージョンのCentOSにアップグレードまたは移行することを強くお勧めします。
理由:
代わりに参照:このガイドは参照として役立つ場合がありますが、他の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をインストールしました。 ハザ!