====== Install ====== ===== リポジトリ ===== {{section>centos:yum:quick_repo#centos_6x}} ===== 開発ツール ===== # yum -y install openssl-devel gcc-c++ git ===== MongoDB ===== # vi /etc/yum.repos.d/mongodb.repo [mongodb-org-3.0] name=MongoDB Repository baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/ gpgcheck=0 enabled=0 # yum --enablerepo=mongodb-org-3.0 install mongodb-org # chkconfig mongod on # service mongod start ===== Apache、etc ===== # yum -y install httpd libcurl-devel httpd-devel apr-devel apr-util-devel ===== Ruby、etc ===== ==== rbenv ==== 複数のRubyバージョンをインストールして、それぞれのRuby環境を切り替える # cd /usr/local/ # git clone https://github.com/sstephenson/rbenv.git # mkdir rbenv/shims rbenv/versions # groupadd rbenv # chgrp -R rbenv rbenv # chmod -R g+rwxXs rbenv # git clone git://github.com/sstephenson/ruby-build.git ruby-build # cd ruby-build # ./install.sh # vi /etc/profile.d/rbenv.sh export RBENV_ROOT="/usr/local/rbenv" export PATH="/usr/local/rbenv/bin:$PATH" eval "$(rbenv init -)" # source /etc/profile.d/rbenv.sh # which rbenv ==== ruby ==== ※AsakusaSatelliteがjson 1.8.0を要求するが、ruby 2.2.2などではインストールできないのでダウングレード # rbenv install 2.1.0 # rbenv global 2.1.0 # ruby -v ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux] ==== bundler ==== プロジェクト内で使うRubyのパッケージを管理する。Gemfileにパッケージ名、バージョンなどを記述してgemのライブラリを管理する # gem install bundler --no-rdoc --no-ri Fetching: bundler-1.9.9.gem (100%) Successfully installed bundler-1.9.9 1 gem installed ==== passenger ==== Apacheなど、webサーバ上でRubyのwebアプリを動作させるモジュール === インストール === # gem install passenger --no-rdoc --no-ri === Apacheモジュールのビルドとインストール === # passenger-install-apache2-module Welcome to the Phusion Passenger Apache 2 module installer, v5.0.8. This installer will guide you through the entire installation process. It shouldn't take more than 3 minutes in total. Here's what you can expect from the installation process: 1. The Apache 2 module will be installed for you. 2. You'll learn how to configure Apache. 3. You'll learn how to deploy a Ruby on Rails application. Don't worry if anything goes wrong. This installer will advise you on how to solve any problems. Press Enter to continue, or Ctrl-C to abort. 1 -------------------------------------------- Which languages are you interested in? Use to select. If the menu doesn't display correctly, press '!' ‣ ⬢ Ruby ⬢ Python ⬡ Node.js ⬡ Meteor -------------------------------------------- ~省略~ -------------------------------------------- Almost there! Please edit your Apache configuration file, and add these lines: LoadModule passenger_module /usr/local/rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/passenger-5.0.8/buildout/apache2/mod_passenger.so PassengerRoot /usr/local/rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/passenger-5.0.8 PassengerDefaultRuby /usr/local/rbenv/versions/2.1.0/bin/ruby After you restart Apache, you are ready to deploy any number of web applications on Apache, with a minimum amount of configuration! Press ENTER when you are done editing. -------------------------------------------- Validating installation... * Checking whether this Passenger install is in PATH... ✓ * Checking whether there are no other Passenger installations... (!) You are currently validating against Phusion Passenger 5.0.8, located in: /usr/local/rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/passenger-5.0.8/bin/passenger Besides this Passenger installation, the following other Passenger installations have also been detected: /usr/local/rbenv/shims/passenger Please uninstall these other Passenger installations to avoid confusion or conflicts. * Checking whether Apache is installed... ✓ * Checking whether the Passenger module is correctly configured in Apache... (!) You did not specify 'LoadModule passenger_module' in any of your Apache configuration files. Please paste the configuration snippet that this installer printed earlier, into one of your Apache configuration files, such as /etc/httpd/conf/httpd.conf. Detected 0 error(s), 2 warning(s). Press ENTER to continue. -------------------------------------------- Deploying a web application: an example Suppose you have a web application in /somewhere. Add a virtual host to your Apache configuration file and set its DocumentRoot to /somewhere/public: ServerName www.yourhost.com # !!! Be sure to point DocumentRoot to 'public'! DocumentRoot /somewhere/public # This relaxes Apache security settings. AllowOverride all # MultiViews must be turned off. Options -MultiViews # Uncomment this if you're on Apache >= 2.4: #Require all granted And that's it! You may also want to check the Users Guide for security and optimization tips, troubleshooting and other useful information: /usr/local/rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/passenger-5.0.8/doc/Users guide Apache.html https://www.phusionpassenger.com/documentation/Users%20guide%20Apache.html Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-) https://www.phusionpassenger.com Phusion Passenger is a trademark of Hongli Lai & Ninh Bui. === Apacheの設定 === ※AsakusaSatelliteを「ドキュメントルート/as」に設置する前提で。 # vi /etc/httpd/conf.d/asakusasatellite.conf LoadModule passenger_module /usr/local/rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/passenger-5.0.8/buildout/apache2/mod_passenger.so PassengerRoot /usr/local/rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/passenger-5.0.8 PassengerDefaultRuby /usr/local/rbenv/versions/2.1.0/bin/ruby RailsEnv production RailsBaseURI /as ===== AsakusaSatellite ===== http://www.codefirst.org/AsakusaSatellite/ 開発者向けのリアルタイムチャットアプリケーション ==== インストール ==== # cd /tmp/ # wget https://github.com/codefirst/AsakusaSatellite/archive/v0.9.0.tar.gz # tar xzvf v0.9.0.tar.gz # mv AsakusaSatellite-0.9.0 /var/AsakusaSatellite # cd /var/AsakusaSatellite/ === ライブラリインストール === /var/AsakusaSatellite/Gemfileを参考に、プロジェクト(/var/AsakusaSatellite/)配下に必要なライブラリをインストールする # bundle install --path .bundle --without development test # cp config/environments/production.rb config/environments/production.rb.bk # vi config/environments/production.rb 12,13c12 < #config.serve_static_assets = true < config.serve_static_assets = false --- > config.serve_static_assets = true === rake実行 === プロジェクト(/var/AsakusaSatellite/)配下のライブラリを読み込んでrake実行 # bundle exec rake assets:precompile RAILS_ENV=production ==== 認証設定 ==== Twitter⇒Redmine # cp /var/AsakusaSatellite/config/filter_intra.yml /var/AsakusaSatellite/config/filter_intra.yml.bk # vi /var/AsakusaSatellite/config/filter_intra.yml 21c21 < - dir: as_global_js_css --- > # - dir: as_global_js_css 23c23 < # - dir: as_twitterauth_plugin --- > - dir: as_twitterauth_plugin 25c25 < - dir: as_redmineauth_plugin --- > # - dir: as_redmineauth_plugin # cp /var/AsakusaSatellite/config/settings.yml /var/AsakusaSatellite/config/settings.yml.bk # vi /var/AsakusaSatellite/config/settings.yml 1,6d0 < #omniauth: < # provider: "twitter" < # provider_args: < # - "Ug9FZ0r8zp3jwuvOGFYWQ" < # - "qMvcOzyQu4Qkz1bm0k1bOHYDn1m4JF3DXbQK9CWfMA" < 8c2 < provider: 'redmine' --- > provider: "twitter" 10c4,10 < - 'http://192.168.1.210/redmine/' --- > - "Ug9FZ0r8zp3jwuvOGFYWQ" > - "qMvcOzyQu4Qkz1bm0k1bOHYDn1m4JF3DXbQK9CWfMA" > > #omniauth: > # provider: 'redmine' > # provider_args: > # - 'Redmine URL' # cp /var/AsakusaSatellite/plugins/as_redmineauth_plugin/app/models/redmine_user.rb /var/AsakusaSatellite/plugins/as_redmineauth_plugin/app/models/redmine_user.rb.bk # vi /var/AsakusaSatellite/plugins/as_redmineauth_plugin/app/models/redmine_user.rb 24c24 < "#{last} #{first}" --- > "#{first} #{last}" ==== デスクトップ通知用設定 ==== # cp /var/AsakusaSatellite/config/message_pusher.yml /var/AsakusaSatellite/config/message_pusher.yml.bk # vi /var/AsakusaSatellite/config/message_pusher.yml 12,13c12,13 < http: http://192.168.1.249:3002/http < web_socket: ws://192.168.1.249:3002/websocket --- > http: http://localhost:3002/http > web_socket: ws://localhost:3002/websocket ==== socky ==== デスクトップ通知用socky起動(プロジェクトローカルのthinでsocdkyを起動) * thin \\ ウェブサーバ(https://github.com/macournoyer/thin) \\ # thin -R RackFile -pPORT -tTimeout(SEC) start & * Socky \\ Ruby向けWebSocketサーバ(https://github.com/socky) \\ # bundle exec thin -R socky/config.ru -p3002 -t0 start & === 起動スクリプト === # vi /etc/init.d/socky #!/bin/bash # ### BEGIN CHKCONFIG INFO # chkconfig: 2345 55 25 # description: bundle exec thin ... ### END CHKCONFIG INFO prog=socky cmd=/usr/local/rbenv/shims/bundle pjroot=/var/AsakusaSatellite pidfile=$pjroot/tmp/pids/thin.pid start() { echo -n $"Starting $prog: " if [ -f "$pidfile" ] ; then pid=`cat "$pidfile"` printf 'Existing process: %d\n' "$pid" retval=1 else cd $pjroot $cmd exec thin -R socky/config.ru -p3002 -t0 -d start fi } stop() { echo -n $"Stopping $prog: " if [ -f "$pidfile" ] ; then cd $pjroot $cmd exec thin -R socky/config.ru -p3002 -t0 -d stop #SOCKYPID=`cat "$pidfile"` #/bin/kill "$SOCKYPID" >/dev/null 2>&1 fi } restart() { if [ -f "$pidfile" ] ; then cd $pjroot $cmd exec thin -R socky/config.ru -p3002 -t0 -d restart fi } case "$1" in start) start ;; stop) stop ;; restart) #restart stop start ;; *) echo "Usage: $prog {start|stop|restart}" >&2 exit 3 ;; esac exit # chmod 755 /etc/init.d/socky # /etc/init.d/socky start # chkconfig socky on ==== ドキュメントへのシンボリックリンク作成 ==== # cd /var/www/html # ln -s /var/AsakusaSatellite/public as # ln -s /var/AsakusaSatellite/public/assets/ assets ==== 権限設定 ==== # chown -R apache.apache /var/AsakusaSatellite # chmod -R 777 /var/AsakusaSatellite/tmp # chmod -R 777 /var/AsakusaSatellite/public/upload ===== apache(再)起動 ===== # /etc/init.d/httpd restart