0°

Centos6.5 Discourse安装部署教程

系统环境软件版本:
OS:CentOS 6.5-x86_64
PostgreSQL:9.2.4
Redis:2.6.14
Ruby:2.0.0
注:本文中Nginx、PostgreSQL、Redis已事先通过源码编译安装完成。

设定主机名称

# vi /etc/hosts
192.168.1.100	domain.com	//修改为自己的IP和域名

添加数据库和用户

$ su - postgresql
$ createdb discourse
$ createuser -s discourse
$ psql -c "alter user discourse password 'password';"
$ exit

创建discourse用户和组

# groupadd discourse
# useradd --shell /bin/bash discourse -g discourse

创建discourse目录并修改为discourse用户和组

# mkdir /var/www/discourse
# chown -R discourse:discourse /var/www/discourse

切换到discourse用户

# su - discourse

安装RVM

$ curl -L get.rvm.io | bash -s stable

安装ruby和创建配置Gem集

$ rvm install 2.0.0
$ rvm gemset create discourse
$ rvm use 2.0.0@discourse

下载安装discourse

$ cd /var/www/discourse
$ git clone https://github.com/discourse/discourse.git

为Discourse指定版本.ruby-version和Gem集.ruby-gemset

$ echo "ruby-2.0.0-p598" > .ruby-version
$ echo "discourse" > .ruby-gemset

安装Discourse所需的Gem

$ bundle install

注:如果postgresql是通过源码代码安装需通过gem指定pg_config路径安装postgresql插件,再执行bundle install,具体如下:

$ gem install pg -v '0.18.0' -- --with-pg_config=/usr/local/postgresql/bin/pg_config

修改Discourse相关配置文件

修改database.yml

$ vi config/database.yml
development:
  adapter: postgresql
  database: discourse_development
  username: discoursedb
  password: 数据库用户discourse的密码
  host: localhost
  min_messages: warning
  pool: 5
  timeout: 5000
  host_names:
    - "localhost" //修改为自己的域名
test:
  adapter: postgresql
  database: discourse_test
  username: discoursesdb
  password: 数据库用户discourse的密码
  host: localhost
  min_messages: warning
  pool: 5
  timeout: 5000
  host_names:
    - test.localhost
profile:
  adapter: postgresql
  database: discourse_profile
  username: discoursedb
  password: 数据库用户discourse的密码
  host: localhost
  min_messages: warning
  pool: 5
  timeout: 5000
  host_names:
    - "localhost" //修改为自己的域名

修改discourse.pill

$ cp config/discourse.pill.sample config/discourse.pill
$ vi config/discourse.pill
rails_root  = ENV['RAILS_ROOT'] || "/var/www/discourse"

将rails_root设为/var/www/discourse

生成密钥会话令牌

$ rake secret

将生成的密钥复制下来

$ vi config/initializers/secret_token.rb

//清空该文件中的所有已有内容
//将下面这行代码拷贝到该文件中,用刚才生成的密钥代替[TOKEN]部分。

Discourse::Application.config.secret_token = "[TOKEN]"

修改production.rb设定邮件发送方式

$ vi config/environments/production.rb

修改其中有关邮件发送的部分,这里是全局配置.

if GlobalSetting.smtp_address
    settings = {
      address:              'smtp.gmail.com',
      port:                 587,
      domain:               'mail.gmail.com',
      user_name:            'user@gmail.com',
      password:             'password',
      authentication:       'plain',
      enable_starttls_auto: true
    }

    settings[:openssl_verify_mode] = GlobalSetting.smtp_openssl_verify_mode if GlobalSetting.smtp_openssl_verify_mode

    config.action_mailer.smtp_settings = settings.reject{|_, y| y.nil?}
  else
    config.action_mailer.delivery_method = :sendmail
    config.action_mailer.sendmail_settings = {arguments: '-i'}
  end

修改discourse_default.conf

$ vi config/environments/discourse_default.conf
hostname = "www.example.com" //修改为自己的域名

注:discourse_default.conf文件也可以设置邮箱以及数据库连接等信息。

初始化数据库

RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production rake db:migrate
RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production rake assets:precompile

配置nginx

$ exit //退出discourse用户
# cp /var/www/discourse/config/nginx.sample.conf /usr/local/nginx/conf/extra/discourse.conf //nginx根据实际环境配置

修改discourse.conf

# vi /usr/local/nginx/conf/extra/discourse.conf

修改以下信息修改为实际环境

server unix:/var/www/discourse/tmp/sockets/thin.0.sock;
server unix:/var/www/discourse/tmp/sockets/thin.1.sock;
server unix:/var/www/discourse/tmp/sockets/thin.2.sock;
server unix:/var/www/discourse/tmp/sockets/thin.3.sock;
proxy_cache_path /usr/local/nginx/cache
server_name www.domain.com;
set $public /var/www/discourse/public;

重新载入nginx配置

# /usr/local/nginx/sbin/nginx -s reload

安装并配置Bluepill

Discourse官方使用bluepill来管理所有discourse的相关服务

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

启动discourse

$ cd /var/www/discourse
$ RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ROOT=/var/www/discourse RAILS_ENV=production NUM_WEBS=4 /home/discourse/.rvm/bin/bootup_bluepill --no-privileged -c ~/.bluepill load /var/www/discourse/config/discourse.pill

开机自动运行discourse

# su - discourse
$ crontab -e
@reboot RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ROOT=/var/www/discourse RAILS_ENV=production NUM_WEBS=4 /home/discourse/.rvm/bin/bootup_bluepill --no-privileged -c ~/.bluepill load /var/www/discourse/config/discourse.pill

创建管理员

登录discourse论坛地址,并注册一个用户,比如:admin@admin.com
执行以下命令:

# su - discourse
$ cd /var/www/discourse
$ RAILS_ENV=production bundle exec rails c
> me = User.find_by_username_or_email('admin@admin.com')
> me.activate
> me.admin = true
> me.save

更新升级

# su - discourse
$ cd /var/www/discourse
$ bootup_bluepill --no-privileged stop
$ git checkout master
$ git pull
$ git fetch --tags
$ bundle install --without test
$ RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production rake db:migrate
$ RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production rake assets:precompile
$ bootup_bluepill --no-privileged start

启用中文支持

使用管理员账户登录后,点击右上角的管理员名称进入设置界面,然后再点击右上角的小扳手Admin进入系统管理界面,在第二项Settings中,把default_locale从默认的en更改为zh_CN,然后返回论坛主界面,按Ctrl+F5刷新浏览器缓存,中文界面就出来了.

参考地址:http://www.tuicool.com/articles/IjA32u

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论