diff --git a/Installing-Tracks-2.2.2-on-CentOS-6.5-Minimal-x86_64.md b/Installing-Tracks-2.2.2-on-CentOS-6.5-Minimal-x86_64.md index f2cb930..becc347 100644 --- a/Installing-Tracks-2.2.2-on-CentOS-6.5-Minimal-x86_64.md +++ b/Installing-Tracks-2.2.2-on-CentOS-6.5-Minimal-x86_64.md @@ -705,3 +705,722 @@ $ gem install passenger $ passenger -v Phusion Passenger version 4.0.44 ``` + +##Tracks 2.2.2 + +Important! My attempts to build using the most current build of 2.2.2 from github or 2.3 developement versions failed. Also, at the time I built, both had a github build status of fails. As of June 26, 2014, 2.2.2 github build status now read success. Nonetheless, I would advise using the 2.2.2 tarball using the "Get Tracks" link from http://getontracks.org/. + +###Unpack +``` +$ tar -xzvf tracks-2.2.2.tar.gz +$ mv tracks-2.2.2 ~/tracks +``` + +Review `~/tracks/doc/installation.textile` for instructions. + +###Gems +Install gems using bundler +``` +$ cd ~/tracks/ +$ bundle install --without development test +Fetching gem metadata from https://rubygems.org/........ +Fetching additional metadata from https://rubygems.org/.. +Resolving dependencies... +Installing rake 10.0.3 +Installing RedCloth 4.2.9 +Installing aasm 3.0.16 +Installing i18n 0.6.1 +Installing multi_json 1.7.0 +Installing activesupport 3.2.13 +Installing builder 3.0.4 +Installing activemodel 3.2.13 +Installing erubis 2.7.0 +Installing journey 1.0.4 +Installing rack 1.4.5 +Installing rack-cache 1.2 +Installing rack-test 0.6.2 +Installing hike 1.2.1 +Installing tilt 1.3.6 +Installing sprockets 2.2.2 +Installing actionpack 3.2.13 +Installing mime-types 1.21 +Installing polyglot 0.3.3 +Installing treetop 1.4.12 +Installing mail 2.5.3 +Installing actionmailer 3.2.13 +Installing arel 3.0.2 +Installing tzinfo 0.3.37 +Installing activerecord 3.2.13 +Installing activeresource 3.2.13 +Installing acts_as_list 0.1.9 +Installing bcrypt-ruby 3.0.1 +Installing bluecloth 2.2.0 +Using bundler 1.6.2 +Using cache_digests 0.1.0 from source at vendor/gems/cache_digests-0.1.0 +Installing coffee-script-source 1.4.0 +Installing execjs 1.4.0 +Installing coffee-script 2.2.0 +Installing rack-ssl 1.3.3 +Installing json 1.7.7 +Installing rdoc 3.12.2 +Installing thor 0.17.0 +Installing railties 3.2.13 +Installing coffee-rails 3.2.2 +Installing formatize 1.1.0 +Installing htmlentities 4.3.1 +Installing jquery-rails 2.2.1 +Installing libv8 3.11.8.17 +Installing mysql2 0.3.11 +Installing nokogiri 1.5.6 +Installing rack-mini-profiler 0.1.23 +Installing rails 3.2.13 +Installing rails_autolink 1.0.9 +Installing ref 1.0.4 +Installing sanitize 2.0.3 +Installing sass 3.2.5 +Installing sass-rails 3.2.6 +Installing sqlite3 1.3.7 +Installing swf_fu 2.0.3 +Installing therubyracer 0.11.4 +Installing uglifier 1.3.0 +Installing will_paginate 3.0.4 +Your bundle is complete! +Gems in the groups development and test were not installed. +Use `bundle show [gemname]` to see where a bundled gem is installed. +Post-install message from rdoc: +Depending on your version of ruby, you may need to install ruby rdoc/ri data: + +<= 1.8.6 : unsupported + = 1.8.7 : gem install rdoc-data; rdoc-data --install + = 1.9.1 : gem install rdoc-data; rdoc-data --install +>= 1.9.2 : nothing to do! Yay! +``` + +###Configuration +Copy configuration files. +``` +$ cd ~/tracks/config/ +$ cp database.yml.tmpl database.yml +$ cp site.yml.tmpl site.yml +``` + +Update 'production' stanza account from root to dbuser and provide password. +``` +$ vi database.yml +``` + +Update time zone, salt, secret_token, and email address. +``` +$ vi site.yml +``` + +Note: we will be using Apache, but initially, let's use WEBrick for an initial testing. +``` +$ vi environments/production.rb +``` +Update config.serve_static_assets to true. + +###Schema +Create database schema. +``` +$ cd ~/tracks +$ rake db:migrate RAILS_ENV=production +== CreateTracksDb: migrating ================================================= +-- create_table(:contexts) + -> 0.0257s +-- create_table(:projects) + -> 0.1128s +-- create_table(:todos) + -> 0.0044s +-- create_table(:users) + -> 0.0033s +== CreateTracksDb: migrated (0.1465s) ======================================== + +== AddUserId: migrating ====================================================== +-- add_column(:contexts, :user_id, :integer, {:default=>1}) + -> 0.0090s +-- add_column(:projects, :user_id, :integer, {:default=>1}) + -> 0.0082s +-- add_column(:todos, :user_id, :integer, {:default=>1}) + -> 0.0077s +== AddUserId: migrated (0.0326s) ============================================= + +== CreatedAt: migrating ====================================================== +-- rename_column(:todos, "created", "created_at") + -> 0.1701s +== CreatedAt: migrated (0.1702s) ============================================= + +== Notes: migrating ========================================================== +-- create_table(:notes) + -> 0.0714s +== Notes: migrated (0.0715s) ================================================= + +== AddProjectDescription: migrating ========================================== +-- add_column(:projects, :description, :text) + -> 0.0899s +== AddProjectDescription: migrated (0.0900s) ================================= + +== AddPreferencesToUserTable: migrating ====================================== +-- add_column(:users, :preferences, :text) + -> 0.0096s +== AddPreferencesToUserTable: migrated (0.0119s) ============================= + +== AddSessionsTable: migrating =============================================== +-- create_table(:sessions) + -> 0.0043s +-- add_index(:sessions, :session_id) + -> 0.0097s +== AddSessionsTable: migrated (0.0142s) ====================================== + +== AddSubclassAttrToTodos: migrating ========================================= +-- add_column(:todos, :type, :string, {:null=>false, :default=>"Immediate"}) + -> 0.0317s +-- add_column(:todos, :show_from, :date) + -> 0.0556s +== AddSubclassAttrToTodos: migrated (0.0887s) ================================ + +== AddUserPrefRefresh: migrating ============================================= +== AddUserPrefRefresh: migrated (0.0011s) ==================================== + +== AddFirstAndLastNameToUser: migrating ====================================== +-- add_column(:users, :first_name, :string) + -> 0.0089s +-- add_column(:users, :last_name, :string) + -> 0.0078s +== AddFirstAndLastNameToUser: migrated (0.0168s) ============================= + +== PrefToShowHideSidebarItems: migrating ===================================== +== PrefToShowHideSidebarItems: migrated (0.0010s) ============================ + +== AddPreferencesModel: migrating ============================================ +-- create_table(:preferences) + -> 0.0047s +== AddPreferencesModel: migrated (0.0048s) =================================== + +== ConvertPreferences: migrating ============================================= +-- remove_column(:users, :preferences) + -> 0.0434s +== ConvertPreferences: migrated (0.0446s) ==================================== + +== ConvertProjectToStateMachine: migrating =================================== +-- add_column(:projects, :state, :string, {:limit=>20, :default=>"active", :null=>false}) + -> 0.0089s +-- remove_column(:projects, :done) + -> 0.0085s +== ConvertProjectToStateMachine: migrated (0.0185s) ========================== + +== AddVerboseActionDescriptorsPreference: migrating ========================== +-- add_column(:preferences, :verbose_action_descriptors, :boolean, {:default=>false, :null=>false}) + -> 0.0928s +== AddVerboseActionDescriptorsPreference: migrated (0.0929s) ================= + +== AddUserAuthType: migrating ================================================ +-- add_column(:users, :auth_type, :string, {:default=>"database", :null=>false}) + -> 0.0979s +== AddUserAuthType: migrated (0.0980s) ======================================= + +== AddOpenIdTables: migrating ================================================ +-- create_table("open_id_associations", {:force=>true}) + -> 0.0054s +-- create_table("open_id_nonces", {:force=>true}) + -> 0.0040s +-- create_table("open_id_settings", {:force=>true}) + -> 0.0051s +== AddOpenIdTables: migrated (0.0146s) ======================================= + +== AddUserOpenIdUrl: migrating =============================================== +-- add_column(:users, :open_id_url, :string) + -> 0.0095s +== AddUserOpenIdUrl: migrated (0.0096s) ====================================== + +== ConvertTodoToStateMachine: migrating ====================================== +-- add_column(:todos, :state, :string, {:limit=>20, :default=>"immediate", :null=>false}) + -> 0.0076s +-- rename_column(:todos, "completed", "completed_at") + -> 0.0115s +-- remove_column(:todos, :done) + -> 0.1065s +-- remove_column(:todos, :type) + -> 0.3187s +== ConvertTodoToStateMachine: migrated (0.4457s) ============================= + +== PrefToShowHiddenProjectsInSidebar: migrating ============================== +-- add_column(:preferences, :show_hidden_projects_in_sidebar, :boolean, {:default=>true, :null=>false}) + -> 0.0173s +== PrefToShowHiddenProjectsInSidebar: migrated (0.0173s) ===================== + +== AddTimeZonePreference: migrating ========================================== +-- add_column(:preferences, :time_zone, :string, {:limit=>255, :default=>"London", :null=>false}) + -> 0.0145s +== AddTimeZonePreference: migrated (0.0146s) ================================= + +== AddIndices: migrating ===================================================== +-- add_index(:todos, [:user_id, :state]) + -> 0.0571s +-- add_index(:todos, [:user_id, :project_id]) + -> 0.0182s +-- add_index(:todos, [:project_id]) + -> 0.0431s +-- add_index(:todos, [:context_id]) + -> 0.0874s +-- add_index(:todos, [:user_id, :context_id]) + -> 0.1034s +-- add_index(:preferences, :user_id) + -> 0.0151s +-- add_index(:projects, :user_id) + -> 0.0137s +-- add_index(:contexts, :user_id) + -> 0.0747s +== AddIndices: migrated (0.4132s) ============================================ + +== IndexOnUserLogin: migrating =============================================== +-- add_index(:users, :login) + -> 0.0244s +== IndexOnUserLogin: migrated (0.0245s) ====================================== + +== AddFindByNameIndices: migrating =========================================== +-- add_index(:projects, [:user_id, :name]) + -> 0.0277s +-- add_index(:contexts, [:user_id, :name]) + -> 0.0859s +== AddFindByNameIndices: migrated (0.1137s) ================================== + +== AddTagSupport: migrating ================================================== +-- create_table(:taggings) + -> 0.0053s +-- create_table(:tags) + -> 0.0231s +-- add_index(:tags, :name) + -> 0.0145s +-- add_index(:taggings, [:tag_id, :taggable_id, :taggable_type]) + -> 0.0314s +== AddTagSupport: migrated (0.0745s) ========================================= + +== AddProjectTimestamps: migrating =========================================== +-- add_column(:projects, :created_at, :timestamp) + -> 0.1526s +-- add_column(:projects, :updated_at, :timestamp) + -> 0.0085s +== AddProjectTimestamps: migrated (0.1612s) ================================== + +== AddContextTimestamps: migrating =========================================== +-- add_column(:contexts, :created_at, :timestamp) + -> 0.0875s +-- add_column(:contexts, :updated_at, :timestamp) + -> 0.0083s +== AddContextTimestamps: migrated (0.0959s) ================================== + +== AddShowProjectOnTodoDonePreference: migrating ============================= +-- add_column(:preferences, :show_project_on_todo_done, :boolean, {:default=>false, :null=>false}) + -> 0.0090s +== AddShowProjectOnTodoDonePreference: migrated (0.0091s) ==================== + +== AddTitleDateFormatPreference: migrating =================================== +-- add_column(:preferences, :title_date_format, :string, {:limit=>255, :default=>"%A, %d %B %Y", :null=>false}) + -> 0.0081s +== AddTitleDateFormatPreference: migrated (0.0082s) ========================== + +== SetNilTimestamps: migrating =============================================== +== SetNilTimestamps: migrated (0.0403s) ====================================== + +== AddDefaultContextToProject: migrating ===================================== +-- add_column(:projects, :default_context_id, :integer) + -> 0.0083s +== AddDefaultContextToProject: migrated (0.0085s) ============================ + +== AddMobileTodosPerPagePreference: migrating ================================ +-- add_column(:preferences, :mobile_todos_per_page, :integer, {:null=>false, :default=>6}) + -> 0.1132s +== AddMobileTodosPerPagePreference: migrated (0.1132s) ======================= + +== AddRememberMeToUser: migrating ============================================ +-- rename_column(:users, "password", "crypted_password") + -> 0.0113s +-- add_column(:users, :remember_token, :string) + -> 0.0089s +-- add_column(:users, :remember_token_expires_at, :datetime) + -> 0.0073s +== AddRememberMeToUser: migrated (0.0278s) =================================== + +== RenameWordToToken: migrating ============================================== +-- rename_column(:users, "word", "token") + -> 0.0159s +== RenameWordToToken: migrated (0.0160s) ===================================== + +== UpdateOpenIdUrls: migrating =============================================== +== UpdateOpenIdUrls: migrated (0.0013s) ====================================== + +== AddProjectCompletedAtColumn: migrating ==================================== +-- add_column(:projects, :completed_at, :datetime) + -> 0.1048s +== AddProjectCompletedAtColumn: migrated (0.1063s) =========================== + +== AddIndexToNotes: migrating ================================================ +-- add_index(:notes, [:project_id]) + -> 0.0094s +-- add_index(:notes, [:user_id]) + -> 0.0394s +== AddIndexToNotes: migrated (0.0489s) ======================================= + +== ProjectsContextsRemoveNotNullFromPosition: migrating ====================== +-- change_column(:projects, :position, :integer, {:null=>true, :default=>nil}) + -> 0.2133s +-- change_column(:contexts, :position, :integer, {:null=>true, :default=>nil}) + -> 0.0097s +== ProjectsContextsRemoveNotNullFromPosition: migrated (0.2232s) ============= + +== CreateRecurringTodos: migrating =========================================== +-- create_table(:recurring_todos) + -> 0.0051s +-- add_column(:todos, :recurring_todo_id, :integer) + -> 0.0245s +== CreateRecurringTodos: migrated (0.0297s) ================================== + +== AddSeveralIndexes: migrating ============================================== +-- add_index(:taggings, [:taggable_id, :taggable_type]) + -> 0.0086s +-- add_index(:taggings, :tag_id) + -> 0.2208s +-- add_index(:recurring_todos, :user_id) + -> 0.0171s +-- add_index(:recurring_todos, :state) + -> 0.0150s +== AddSeveralIndexes: migrated (0.2617s) ===================================== + +== AddSmsToPreference: migrating ============================================= +-- add_column(:preferences, :sms_email, :string) + -> 0.0452s +-- add_column(:preferences, :sms_context_id, :integer) + -> 0.0100s +== AddSmsToPreference: migrated (0.0554s) ==================================== + +== ChangeDatesToDatetimes: migrating ========================================= +-- change_column(:todos, :show_from, :datetime) + -> 0.0103s +-- change_column(:todos, :due, :datetime) + -> 0.0111s +-- change_column(:recurring_todos, :start_from, :datetime) + -> 0.0329s +-- change_column(:recurring_todos, :end_date, :datetime) + -> 0.0100s +== ChangeDatesToDatetimes: migrated (0.1023s) ================================ + +== AddUpdatedAtToTodos: migrating ============================================ +-- add_column(:todos, :updated_at, :timestamp) + -> 0.1827s +-- execute("update todos set updated_at = created_at where completed_at IS NULL") + -> 0.0005s +-- execute("update todos set updated_at = completed_at where NOT (completed_at IS NULL)") + -> 0.0004s +== AddUpdatedAtToTodos: migrated (0.1837s) =================================== + +== UpgradeOpenId: migrating ================================================== +-- create_table(:open_id_authentication_associations, {:force=>true}) + -> 0.0054s +-- create_table(:open_id_authentication_nonces, {:force=>true}) + -> 0.0044s +-- drop_table(:open_id_associations) + -> 0.0017s +-- drop_table(:open_id_nonces) + -> 0.0024s +-- drop_table(:open_id_settings) + -> 0.0015s +== UpgradeOpenId: migrated (0.0156s) ========================================= + +== RemoveUserFromTaggings: migrating ========================================= +-- remove_index(:taggings, [:tag_id, :taggable_id, :taggable_type]) + -> 0.0083s +-- remove_index(:tags, :name) + -> 0.0073s +-- remove_column(:taggings, :user_id) + -> 0.0072s +-- add_index(:tags, :name) + -> 0.1684s +-- add_index(:taggings, [:tag_id, :taggable_id, :taggable_type]) + -> 0.0405s +== RemoveUserFromTaggings: migrated (0.2321s) ================================ + +== FixIncorrectlyHiddenTodos: migrating ====================================== +== FixIncorrectlyHiddenTodos: migrated (0.0545s) ============================= + +== AddDefaultTagsToProject: migrating ======================================== +-- add_column(:projects, :default_tags, :string) + -> 0.0093s +== AddDefaultTagsToProject: migrated (0.0093s) =============================== + +== AddTodoDependencies: migrating ============================================ +-- create_table(:dependencies) + -> 0.0038s +== AddTodoDependencies: migrated (0.0038s) =================================== + +== AddShowAlwaysToRecurringTodo: migrating =================================== +-- add_column(:recurring_todos, :show_always, :boolean) + -> 0.0277s +== AddShowAlwaysToRecurringTodo: migrated (0.0422s) ========================== + +== AddIndexToTodoState: migrating ============================================ +-- add_index(:todos, :state) + -> 0.0104s +== AddIndexToTodoState: migrated (0.0105s) =================================== + +== AddLocaleToPreference: migrating ========================================== +-- add_column(:preferences, :locale, :string) + -> 0.1439s +== AddLocaleToPreference: migrated (0.1439s) ================================= + +== AdaptToNewAasm: migrating ================================================= +-- change_column_default(:todos, :state, nil) + -> 0.0044s +-- change_column_default(:projects, :state, nil) + -> 0.0044s +-- change_column_default(:recurring_todos, :state, nil) + -> 0.0048s +== AdaptToNewAasm: migrated (0.0137s) ======================================== + +== MakeOldRecurringTodosValidate: migrating ================================== +== MakeOldRecurringTodosValidate: migrated (0.0008s) ========================= + +== ChangeCryptedPasswordLength: migrating ==================================== +-- change_column("users", "crypted_password", :string, {:limit=>60}) + -> 0.0084s +== ChangeCryptedPasswordLength: migrated (0.0086s) =========================== + +== AddLastReviewedToProject: migrating ======================================= +-- add_column(:projects, :last_reviewed, :timestamp) + -> 0.0287s +-- execute("UPDATE projects SET last_reviewed = created_at WHERE last_reviewed IS NULL") + -> 0.0002s +== AddLastReviewedToProject: migrated (0.0290s) ============================== + +== AddNextReviewPreferences: migrating ======================================= +-- add_column(:preferences, :review_period, :integer, {:default=>14, :null=>false}) + -> 0.0082s +== AddNextReviewPreferences: migrated (0.0083s) ============================== + +== AddIndicesToDependencyTable: migrating ==================================== +-- add_index(:dependencies, :successor_id) + -> 0.0079s +-- add_index(:dependencies, :predecessor_id) + -> 0.0676s +-- add_index(:projects, :state) + -> 0.1340s +-- add_index(:projects, [:user_id, :state]) + -> 0.0423s +== AddIndicesToDependencyTable: migrated (0.2522s) =========================== + +== AddRenderedNotes: migrating =============================================== +-- add_column(:todos, "rendered_notes", :text) + -> 0.0086s +-- Clearing show_from dates from completed todos +-- Generating new column values from notes. This may take a while. +-- Done: 0 / 0 +== AddRenderedNotes: migrated (0.0121s) ====================================== + +== CreateTolkTables: migrating =============================================== +-- create_table(:tolk_locales) + -> 0.0030s +-- add_index(:tolk_locales, :name, {:unique=>true}) + -> 0.0077s +-- create_table(:tolk_phrases) + -> 0.0250s +-- create_table(:tolk_translations) + -> 0.0049s +-- add_index(:tolk_translations, [:phrase_id, :locale_id], {:unique=>true}) + -> 0.0079s +== CreateTolkTables: migrated (0.0488s) ====================================== + +== NoDefaultAdminEmail: migrating ============================================ +-- remove_column(:preferences, :admin_email) + -> 0.0194s +== NoDefaultAdminEmail: migrated (0.0195s) =================================== +``` + +###Precompile Assets +$ cd ~/tracks +$ rake assets:precompile + /home/tracks/.rvm/rubies/ruby-1.9.3-p547/bin/ruby /home/tracks/.rvm/gems/ruby-1.9.3-p547/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets + +###WEBrick +Open firewall for Tracks using WEBrick on port 3000 TCP. +``` +$ sudo system-config-firewall-tui +$ sudo service iptables status +``` + +###Start the Server (test) +``` +$ cd ~/tracks +$ rails server -e production +=> Booting WEBrick +=> Rails 3.2.13 application starting in production on http://0.0.0.0:3000 +=> Call with -d to detach +=> Ctrl-C to shutdown server +[2014-05-31 14:19:21] INFO WEBrick 1.3.1 +[2014-05-31 14:19:21] INFO ruby 1.9.3 (2014-05-14) [x86_64-linux] +[2014-05-31 14:19:21] INFO WEBrick::HTTPServer#start: pid=3521 port=3000 +``` + +###Success? +If the server failed to start, review logs and/or the instructions above. If server started successfully, ctrl+c to shutdown Tracks and continue the installation. + +##Apache +Update the tracks user directory in preparation for passenger. +``` +$ sudo chmod o+x /home/tracks +``` + +Configure Passenger & Apache2 +``` +$ passenger-install-apache2-module + Welcome to the Phusion Passenger Apache 2 module installer, v4.0.44. + + 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. +``` + +If you have met the requirements, everything should be green. Accept the defaults to compile which takes quite some time. The installation should complete with the following. +``` + -------------------------------------------- + Almost there! + + Please edit your Apache configuration file, and add these lines: + + LoadModule passenger_module /home/tracks/.rvm/gems/ruby-1.9.3-p547/gems/passenger-4.0.44/buildout/apache2/mod_passenger.so + + PassengerRoot /home/tracks/.rvm/gems/ruby-1.9.3-p547/gems/passenger-4.0.44 + PassengerDefaultRuby /home/tracks/.rvm/gems/ruby-1.9.3-p547/wrappers/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 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: + + /home/tracks/.rvm/gems/ruby-1.9.3-p547/gems/passenger-4.0.44/doc/Users guide Apache.html + http://www.modrails.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. +``` + +Create Passenger module conf file and copy and paste. +``` +$ sudo vi /etc/httpd/conf.d/passenger.conf +``` + +Copy and paste the following: +``` +LoadModule passenger_module /home/tracks/.rvm/gems/ruby-1.9.3-p547/gems/passenger-4.0.44/buildout/apache2/mod_passenger.so + + PassengerRoot /home/tracks/.rvm/gems/ruby-1.9.3-p547/gems/passenger-4.0.44 + PassengerDefaultRuby /home/tracks/.rvm/gems/ruby-1.9.3-p547/wrappers/ruby + PassengerDefaultUser apache + +``` + +Update apache conf file. +``` +$ sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak +$ sudo vi /etc/httpd/conf/httpd.conf +``` + +At the bottom of the file, add the following: +``` + + ServerName www.somedomain.com + # !!! Be sure to point DocumentRoot to 'public'! + DocumentRoot /home/tracks/tracks/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 + + +``` + +Configure SELinux by configuring 'SELINUX' to 'permissive' +``` +$ sudo vi /etc/selinux/conf +``` + +Then for this session set SELinux to be permissive +``` +$ sudo setenforce 0 +``` + +Once Tracks installation is complete, you can create a SELinux module. See the section titled "SELINUX" below for instructions. + +Open firewall for Apache by 'customizing' and permitting http or web traffic (80 TCP). You may, also, remove the previous rule for port 3000 TCP. +``` +$ sudo system-config-firewall-tui +``` + +Verify changes using: +``` +$ sudo service iptables status +``` + +Validate Apache operations by starting the httpd service then using a browser, verify, you are prompted to set admin credentials for Tracks. +``` +$ sudo service httpd start +``` + +Configure Apache to start at boot. +``` +$ sudo chkconfig httpd on +``` + +Update config.serve_static_assets variable to false. +``` +$ vi environments/production.rb +``` + +##Done +At this point you are ready to begin using Tracks. + +The basic process is as follows: +Create contexts, i.e. work, home, gym, etc. +Create projects and specify context. +Create actons specifying context and project. + +Alternatively, You can simply create an action specifying a new context and project. Tracks will auto-create them. For example, create an action to 'replace toilet seal' and specify context 'home' and project 'bathroom remodel.' + + ;) Enjoy! \ No newline at end of file