---
# System prepended metadata

title: ROR Installation and Deployment Steps For OMNI

---

## ROR Installation Steps For OMNI

1. **Update the package lists for upgrades for packages that need upgrading, as well as new packages that have just come to the repositories:**
    ```bash
    sudo apt update
    ```

2. **Install necessary development tools and libraries required for building and running software:**
    ```bash
    sudo apt install -y git curl libssl-dev libreadline-dev zlib1g-dev autoconf bison build-essential libyaml-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev
    ```

3. **Install `libcurl` and its development files:**
    ```bash
    sudo apt install libcurl4 libcurl4-openssl-dev
    ```

4. **Install `libxml2` and its development files:**
    ```bash
    sudo apt install libxml2 libxml2-dev
    ```

5. **Install ImageMagick and its development files:**
    ```bash
    sudo apt install imagemagick libmagickwand-dev
    ```

6. **Install PostgreSQL and its development files:**
    ```bash
    sudo apt install postgresql libpq-dev
    ```

7. **Start the PostgreSQL service:**
    ```bash
    sudo service postgresql start
    ```

8. **Clone the `asdf` version manager repository to your home directory and checkout the specific branch `v0.11.3`:**
    ```bash
    git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.11.3
    ```

9. **Add the `asdf` initialization script to your shell's configuration file (`~/.bashrc`), so it loads whenever you start a new shell session:**
    ```bash
    echo '. $HOME/.asdf/asdf.sh' >> ~/.bashrc
    ```

10. **Reload your shell configuration to apply the changes made in the previous step:**
    ```bash
    source ~/.bashrc
    ```

11. **Add the Ruby plugin to `asdf`, enabling `asdf` to manage Ruby versions:**
    ```bash
    asdf plugin-add ruby https://github.com/asdf-vm/asdf-ruby.git
    ```

12. **Install Ruby version 2.7.4 using `asdf`:**
    ```bash
    asdf install ruby 2.7.4
    ```

13. **Clone the repository using SSH:**
    ```bash
    git clone git@github.com:PurpleplumTech/omni.git
    ```

14. **(Alternative) Clone the repository using HTTPS:**
    ```bash
    git clone https://github.com/PurpleplumTech/omni.git
    ```

15. **Change directory to the cloned repository:**
    ```bash
    cd omni/
    ```

16. **Check out the `staging` branch:**
    ```bash
    git checkout staging
    ```

17. **Install the specific version of Bundler:**
    ```bash
    gem install bundler -v 2.4.22
    ```

18. **Install the required gems specified in the `Gemfile`:**
    ```bash
    bundle install
    ```
19. **Install Redis , Start Redis Server and Check Redis Is Running or Not**
    ```
    sudo apt install redis-server
    sudo service redis-server start
    redis-cli ping
    ```
20. **Start Sidekiq**
    ```
    bundle exec sidekiq -C config/sidekiq.yml
    ```
21. **Postgres User Configuration**
    ```
    # Switch to the PostgreSQL user
    sudo -i -u postgres

    # Access the PostgreSQL command line interface
    psql

    # Check if users have passwords set
    SELECT usename, passwd IS NOT NULL AS has_password FROM pg_shadow;

    # Optionally, change a user's password
    ALTER USER your_user WITH PASSWORD 'your_new_password';

    # Exit the PostgreSQL command line interface
    \q
    ```
22. **Create Database for the User**
    ```
    # Switch to the PostgreSQL user
    sudo -i -u postgres
    # Create DB and link it to user
    createdb your_database -O your_user
    ```
23. **Config In database.yml**
    ```
    staging:
      <<: *default
      username: your_user
      password: your_password
      database: your_database
      port: 5432
    ```
24. **Initiate Database**
    ```
    #Switch to project directory
    cd path_to_project_directory
    
    #Comment line 26 to 33 (batch related code) in sidekiq.rb
    
    #Load Database
    RAILS_ENV=staging bundle exec rake db:create db:schema:load db:migrate
    
    #UnComment line 26 to 33 (batch related code) in sidekiq.rb

    ```
24. **Run The Server**
    ```
    bundle exec rails s -e staging
    ```

These commands set up the necessary dependencies, clone the repository, and prepare the environment to run a Ruby on Rails application.

## Deployment Steps For OMNI

### Frontend Deployment Steps

1. **Build Your React Application Locally**

    Ensure your React application is built locally:
    ```
    npm run build
    ```
2. Securely Copy Build to the Server
    ```
    scp -i ./omni_prod2.pem -r ./build/ ubuntu@52.221.173.152:/tmp
    ```
3. Log Into the Server
    ```
    ssh -i ./omni_prod2.pem ubuntu@52.221.173.152
    ```
4. Remove Existing Builds on the Server
    ```
    rm -rf /tmp/build/
    rm -rf /home/ubuntu/omni-webapp/build/
    ```
5. Copy the New Build to the Webapp Directory
    ```
    cp -R /tmp/build/ /home/ubuntu/omni-webapp/
    ```


### Backend Deployment Steps

1. **Log Into the QA Server**

    First, log into your server using SSH:
    ```
    ssh -i path_to_pem  ubuntu@10.0.1.10
    ```
2. **Download The Repo From Git**
    ```
    git clone https://github.com/PurpleplumTech/omni.git
    
    #Enter the directory
    cd omni
    
    #Install Dependencies and continue with Step 3.    
    ```
3. **Creating/Enter a screen session which allows you to keep the Rails server running even after disconnecting from SSH.**
    ```
    #Check Screens List
    screen -list
    
    #Create New Screen no screens available in list.
    screen -S omni-server
    
    #If you want to enter exisiting screens.
    screen -rd omni-server
    
    #Stop the Server
    Ctrl + C 
    
    #Take Latest Release From Github and replace the files using FileZilla.
    
    #Start the Server
    bundle exec rails s -e staging
    
    #Exit the Screen using
    Ctrl + A + D
    ```
4. **Existing Frontend and Backend Paths in QA Server**
    
    ```
    #Frontend Path
    /home/ubuntu/omni-webapp
    
    #Backend Path
    /home/ubuntu/omni-1.6/omni-1.6
    ```



