Ubuntu 17.04에서 Rbenv, Rails, MariaDB, Nginx, SSL 및 승객으로 Ruby를 설치 및 구성하는 방법

Ruby on Rails는 프로그래머의 생산성을 높이기 위해 개발 된 인기있는 Ruby 용 웹 프레임 워크입니다. 그러나 다양한 보석과 종속성을 함께 사용하면 까다로울 수 있습니다. 이 안내서는 일반적으로 사용되는 gem 및 종속성을 포함하여 프로덕션 환경에 완벽한 레일 환경을 설정하는 데 도움이됩니다.

요구 사항

  • 최소 512MB의 RAM이있는 Vultr 인스턴스 (1024MB 선호)
  • Ubuntu 17.04를 실행하는 Vultr 인스턴스

이 안내서에 사용 된 스택

  • Nginx : 빠르고 강력한 웹 서버. (버전 1.10.3)
  • 승객 : Nginx가 Ruby 앱을 제공하는 데 도움이되는 앱 서버. (버전 1.5.1.8)
  • Rbenv : 루비 버전 관리자. (1.1.1-2 버전)
  • 루비 : (ver 2.4.1)
  • MariaDB : MySQL 서버의 오픈 소스 브랜치 (ver 10.2)
  • Let 's Encrypt의 SSL 인증서

설치

Sudo 사용자 추가

참고 : 공격에 노출 될 수 있으므로 이러한 서비스를 루트로 설치하지 않는 것이 좋습니다. deploy또는 app사용자 설정 은 일반적인 규칙입니다.

sudo adduser deploy
sudo adduser deploy sudo
su deploy

업데이트 및 업그레이드 시스템

Ubuntu VM에서 모든 최신 패키지를 실행하고 있는지 확인하십시오.

sudo apt-get update && sudo apt-get upgrade -y

빌드 시스템 설치

rbenv 및 기타 gem을 사용하여 Ruby를 컴파일 하려면 다양한 패키지를 설치해야합니다. Ruby 버전에 따라 일부 패키지가 필요하지 않을 수 있습니다.

컴파일
sudo apt-get install -y curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev
sudo apt-get install -y libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev
sudo apt-get install -y python-software-properties libffi-dev
sudo apt-get install -y build-essential openssl libreadline6 libreadline6-dev libreadline-dev
sudo apt-get install -y automake libtool bison pkg-config bison autoconf libc6-dev ncurses-dev
sudo apt-get install -y libapr1-dev libaprutil1-dev libx11-dev libffi-dev tcl-dev tk-dev
SSL 지원을위한 패키지

승객과 같은 여러 보석을 컴파일하는 데 필요합니다.

sudo apt-get install -y zlib1g zlib1g-dev libssl-dev libyaml-dev libcurl4-openssl-dev libruby
버전 관리

Ruby 커뮤니티는 Git을 선택한 SCM으로 사용하고 있습니다. Mercurial 또는 Subversion과 같은 추가 항목도 설치할 수 있습니다.

sudo apt-get install -y git git-core
MySQL / MariaDB 용 데이터베이스 드라이버
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
노코 기리

네이티브 XML 라이브러리가 필요한 몇 가지 인기있는 gem에 필요합니다.

sudo apt-get install -y libxml2-dev libxslt-dev
Node.js

기본 우분투 저장소는 몇 가지 주요 버전보다 뒤쳐지는 경향이 있으므로 최신 버전의 Node에서 공식 저장소를 추가하십시오.

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

선택적 패키지

이 패키지는 시스템을 실행하는 데 필요하지 않지만 특정 보석을 사용해야하는 경우에 좋습니다.

그래프와 이미지

이 라이브러리는 필요하지 않으며 이미지 조작 젬을 사용하지 않을 경우 건너 뛸 수 있습니다. Rmagick과 같은 :

sudo apt-get install -y imagemagick libmagickwand-dev libvips-dev

SQLite 및 PostgreSQL 용 데이터베이스 드라이버

다른 데이터베이스에 연결하거나 간단한 로컬 DB를 선호하는 경우 SQLite 또는 PostgreSQL 용 드라이버를 설치하십시오.

sudo apt-get install -y libsqlite3-dev sqlite3  libpq-dev postgresql postgresql-contrib

도구

일반적으로 새로 우분투 설치시 사전 설치되어 있지 않은 유틸리티. 선택한 텍스트 편집기를 자유롭게 설치하십시오.

sudo apt-get install -y iotop htop nano vim

MariaDB 서버 설치

MariaDB는 강력한 관계형 SQL 서버이며 MySQL과 완벽하게 호환됩니다. 최신 버전의 MariaDB를 설치하는 가장 쉬운 방법은 공식 저장소를 사용하는 것입니다.

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386] http://ftp.utexas.edu/mariadb/repo/10.2/ubuntu zesty main'
sudo apt update
sudo apt install -y mariadb-server

프롬프트에 따라 루트 비밀번호를 설정하십시오. 그런 다음 새 설치에 액세스 할 수 있는지 확인하십시오.

mysql -V 

다음과 비슷한 줄이 표시됩니다.

mysql  Ver 15.1 Distrib 10.2.8-MariaDB, for debian-linux-gnu (x86_64) using readline 5

MySQL 쉘에 로그인하십시오.

mysql -h localhost -u root -p 

참고 : \q종료 하려면 사용 하십시오 .


Rbenv 및 Ruby 설치

르 벤프

git을 사용하여 Rbenv를 설치하십시오. 이것은 가장 간단한 설치 방법이며 나중에 쉽게 업데이트 할 수 있습니다. 또한 install ruby-build, 실제로 다른 버전의 Ruby를 컴파일합니다.

cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

참고 : 당신은 단순히 업데이트해야하는 경우 cd ~/.rbenvgit pull.

쉘에서 Rbenv와 Ruby 빌드를 사용 가능하게하십시오. 비 대화식 bash 명령에 중요한 파일 시작 부분 에 내보내기 행이 삽입되도록하려면 .bashrc다음 행을 사용하십시오.

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.temp_bashrc
echo 'eval "$(rbenv init -)"' >> ~/.temp_bashrc
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.temp_bashrc

cat ~/.temp_bashrc ~/.bashrc > ~/.combined_bashrc && mv ~/.combined_bashrc ~/.bashrc && rm ~/.temp_bashrc

exec $SHELL

Rbenv 및 Ruby-build가 설치되어 있고 쉘에서 사용 가능한지 확인하십시오.

rbenv install --list

경우 rbenv인식되지 않는, 로그 아웃 쉘에 다시 로그인.

~/.bash_profile파일을 작성하고 파일을 소스로 지정하십시오 ~/.bashrc. whenevergem에서 설정 한 크론 작업과 같이 Rails 앱에서 비 대화식 쉘 명령을 실행해야하는 경우 대화식 쉘과 동일한 Ruby 버전이 사용됩니다. 이것은 이상한 오류를 방지하는 데 도움이 될 수 있습니다. 이 줄을 ~/.bash_profile파일에 추가 하십시오.

if [ -f $HOME/.bashrc ]; then
        source $HOME/.bashrc
fi

루비

Ruby 2.4.1을 설치하십시오.

rbenv install 2.4.1

참고 :이 프로세스는 VM의 리소스에 따라 5-15 분이 걸릴 수 있으며 진행률 표시 줄이 없습니다.

Rbenv를 어디서나 사용할 수있게하십시오.

rbenv global 2.4.1

승객과 Nginx

apt에 대한 PGP 키 및 HTTPS 지원을 추가하십시오.

sudo apt-get install -y dirmngr gnupg
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates

승객 저장소를 추가하십시오.

sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger zesty main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update

Passenger + Nginx 모듈을 설치하십시오 :

sudo apt-get install -y nginx
sudo apt-get install -y libnginx-mod-http-passenger

이 시점에서 도메인 이름 또는 IP를 사용하여 Vultr 인스턴스를 방문하여 테스트하십시오. 그들이 작동하면, 페이지는 기본 Nginx 시작 페이지를 보여줄 것입니다.

레일 설정, 앱 및 승객 구성

번 들러 및 레일 설치 :

gem install bundler rails --no-ri --no-rdoc

우분투 / 데비안 규칙은에서 앱을 설정하는 것입니다 /var/www. 기본적으로 루트 만 쓸 수 있습니다. 설정이 작동하려면 sudo 사용자에게 소유권을 부여하십시오 deploy.

sudo chown deploy:deploy /var/www -R

에서 rails 앱을 생성하십시오 /var/www/. 배포하려는 앱이 이미있는 경우 git clone여기에서 실행 한 후 다음을 실행하십시오 bundle.

cd /var/www
rails new example --database=mysql
앱을 가리 키도록 승객을 구성하십시오.
  1. Nginx를 준비하십시오.

    sudo nano /etc/nginx/nginx.conf
    
  2. 사용자를로 변경하십시오 deploy.

    user deploy;
    
  3. 으로 http는 config의 섹션 승객을 포함하여로드 모듈에 Nginx에 알려주는 선이 있어야한다. 누락 된 경우 Virtual Host Configs제목 바로 다음에 , 전에 추가 할 수 있습니다 sites-enabled.

    include /etc/nginx/conf.d/*.conf;
    
  4. passenger.conf파일을 편집 / 생성 하십시오.

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. 승객에게 Rbenv 설정을 사용하도록 지시하십시오. 여객에 포함 된 루비 버전을 가리키는 줄이있을 수 있습니다. 삭제하거나 주석 처리하십시오.

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. 에서 앱을 가리 키도록 가상 호스트를 설정하십시오 /var/www/example/.

    sudo nano /etc/nginx/sites-enabled/example.conf
    
    
    server {
      listen 80;
      server_name example.com www.example.com;
      root /var/www/example/public;
      passenger_enabled on;
    
      # When you are ready to switch to production mode - change this to `production`
      passenger_app_env development; # <-- !important      
    }
    
  7. Nginx를 다시 시작하십시오.

    sudo service nginx restart
    

이제 응용 프로그램을 개발 모드에서 사용할 수 있습니다. 생산 모드로 전환하려면 Nginx 구성으로 돌아가서 rails_env설정을로 변경해야 합니다 production.

프로덕션 모드로 전환하기 전에, 당신은 여전히 설정에 프로덕션 데이터베이스가 필요합니다 example_production, database.yml및 비밀 키를. Capistrano 또는 Mina와 같은 도구를 확인하여 응용 프로그램 배포 프로세스를 가속화하십시오. ENV 변수를와 같은 gem과 함께 사용 dotenv하고 암호, 비밀 키 등을 git 저장소에 커밋하지 않는 것이 좋습니다.

SSL 설정

도메인에 SSL 인증서를 제공하는 여러 서비스가 있으며, 많은 비용이 지불되며 부부는 무료입니다. 어떤 서비스를 사용하든 SSL을 설정하십시오. 암호화 하자는 사용 이 매우 쉽고 무료입니다. Let 's Encrypt는 많은 기술 거인이 후원하는 비영리 조직입니다.

설치

다음 명령을 실행하고 지시를 따릅니다.

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx
sudo certbot --nginx
sudo certbot renew --dry-run

를 사용하여 Vultr 인스턴스로 이동 HTTPS하면 안전한 웹 사이트가 표시됩니다.

갱신

새로 발급 된 인증서는 만료되며 정기적으로 갱신해야합니다. 가장 쉬운 방법은 크론 작업을 설정하는 것입니다.

sudo crontab -e 
30 2 * * 1 /usr/bin/certbot renew 

마지막이지만 선택적인 단계로 VM을 재부팅하고 모든 서비스가 예상대로 다시 시작되는지 확인하십시오.



Leave a Comment

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.

ReactOS: 이것이 Windows의 미래입니까?

ReactOS: 이것이 Windows의 미래입니까?

오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

우리 컴퓨터는 모든 데이터를 저널링 파일 시스템이라고 하는 체계적인 방식으로 저장합니다. 검색을 누르는 즉시 컴퓨터에서 파일을 검색하고 표시할 수 있는 효율적인 방법입니다.https://wethegeek.com/?p=94116&preview=true

기술적 특이점: 인류 문명의 먼 미래?

기술적 특이점: 인류 문명의 먼 미래?

과학이 빠른 속도로 발전하고 우리의 많은 노력을 인수함에 따라 설명할 수 없는 특이점에 처할 위험도 높아집니다. 특이점이 우리에게 무엇을 의미할 수 있는지 읽어보십시오.

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

2021년 의료 분야에서 인공 지능의 영향

2021년 의료 분야에서 인공 지능의 영향

의료 분야의 AI는 지난 수십 년 동안 큰 도약을 했습니다. 따라서 의료 분야에서 AI의 미래는 여전히 나날이 성장하고 있습니다.