Cómo instalar y configurar Ruby con Rbenv, Rails, MariaDB, Nginx, SSL y Passenger en Ubuntu 17.04

Ruby on Rails es un marco web popular para Ruby que se desarrolló para aumentar la productividad de un programador. Sin embargo, hacer que varias gemas y dependencias trabajen juntas puede ser complicado a veces. Esta guía lo ayudará a configurar un entorno completo de Rails listo para producción, que incluye gemas y dependencias de uso común.

Requisitos

  • Vultr instancia con al menos 512 MB de RAM (1024 MB preferidos).
  • Vultr instancia ejecutando Ubuntu 17.04.

Pila utilizada en esta guía

  • Nginx : un servidor web rápido y potente. (ver 1.10.3)
  • Passenger : un servidor de aplicaciones que ayudará a Nginx a servir su aplicación Ruby. (ver 1.5.1.8)
  • Rbenv : un administrador de versiones de Ruby. (ver 1.1.1-2)
  • Ruby : (ver 2.4.1)
  • MariaDB : una rama de código abierto del servidor MySQL (ver 10.2)
  • Certificado SSL de Let's Encrypt

Instalación

Añadir usuario de Sudo

Nota : Se recomienda encarecidamente no instalar ninguno de estos servicios como root, ya que podría exponerse a un ataque. La creación de una deployo appusuario es una convención común:

sudo adduser deploy
sudo adduser deploy sudo
su deploy

Actualización y sistema de actualización

Asegúrese de ejecutar todos los paquetes más recientes en su máquina virtual Ubuntu:

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

Instalar sistema de compilación

Para poder compilar Ruby usando rbenv y otras gemas, se deben instalar varios paquetes. Dependiendo de la versión de Ruby que necesitará, algunos de los paquetes pueden no ser necesarios.

Compilando
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
Paquetes para soporte SSL

Estos son necesarios para compilar varias gemas, como Passenger:

sudo apt-get install -y zlib1g zlib1g-dev libssl-dev libyaml-dev libcurl4-openssl-dev libruby
Versionado

La comunidad Ruby está usando Git como un SCM de elección; pero también se pueden instalar otros adicionales, como Mercurial o Subversion:

sudo apt-get install -y git git-core
Controladores de bases de datos para MySQL / MariaDB
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
Nokogiri

Requerido para varias gemas populares que necesitan bibliotecas XML nativas:

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

Agregue repositorios oficiales de Node con la última versión, ya que los repositorios de Ubuntu predeterminados tienden a retrasarse con respecto a algunas versiones principales:

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

Paquetes opcionales

Estos paquetes no son necesarios para que el sistema se ejecute, pero es bueno tenerlos si necesita usar ciertas gemas.

Gráficos e Imágenes

Estas bibliotecas no son necesarias y pueden omitirse a menos que planee usar gemas de manipulación de imágenes; como Rmagick:

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

Controladores de bases de datos para SQLite y PostgreSQL

Instale controladores para SQLite o PostgreSQL si necesita conectarse a otras bases de datos o prefiere una base de datos local simple:

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

Herramientas

Utilidades que normalmente no vienen preinstaladas en una nueva instalación de Ubuntu. Siéntase libre de instalar su editor de texto de su elección:

sudo apt-get install -y iotop htop nano vim

Instale el servidor MariaDB

MariaDB es un poderoso servidor SQL relacional, que es totalmente compatible con MySQL. La forma más fácil de instalar la última versión de MariaDB es utilizando repositorios oficiales:

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

Siga las indicaciones y configure una contraseña de root. Luego, verifique que pueda acceder a su nueva instalación:

mysql -V 

Mostrará una línea similar a esta:

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

Inicie sesión en el shell de MySQL:

mysql -h localhost -u root -p 

Nota : use \qpara salir.


Instalar Rbenv y Ruby

Rbenv

Instala Rbenv usando git. Este es el método de instalación más simple y permite actualizaciones fáciles más adelante. También instale ruby-build, es responsable de compilar diferentes versiones de Ruby:

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

Nota : Cuando necesita actualizar simplemente cd ~/.rbenvy git pull.

Haga que Rbenv y Ruby-build estén disponibles en el shell. Para asegurarse de que las líneas de exportación se inserten al principio del .bashrcarchivo, lo cual es importante para los comandos bash no interactivos, use estas líneas:

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

Compruebe si Rbenv y Ruby-build están instalados y están disponibles en shell:

rbenv install --list

Si rbenvno se reconoce, cierre sesión y vuelva a iniciar sesión en el shell.

Cree un ~/.bash_profilearchivo y apúntelo para obtener su ~/.bashrcarchivo Si necesita ejecutar comandos de shell no interactivos desde su aplicación Rails, como la configuración de trabajos cron de la whenevergema, utilizará la misma versión de Ruby que su shell interactivo. Esto puede ayudar a prevenir errores extraños. Agregue esta línea al ~/.bash_profilearchivo:

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

Rubí

Instalar Ruby 2.4.1:

rbenv install 2.4.1

Nota : Este proceso puede demorar entre 5 y 15 minutos, dependiendo de los recursos en su VM, y no hay una barra de progreso.

Haga que Rbenv esté disponible en todas partes.

rbenv global 2.4.1

Pasajero y Nginx

Agregue la clave PGP y el soporte HTTPS para apt:

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

Agregue el repositorio de pasajeros:

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

Instale los módulos Passenger + Nginx:

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

Visite su instancia de Vultr usando su nombre de dominio o IP para probarlos en este punto. Si están funcionando, su página mostrará la página de bienvenida predeterminada de Nginx.

Configurar rieles, la aplicación y Configurar pasajero

Instalar Bundler y Rails:

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

La convención de Ubuntu / Debian es configurar su aplicación en /var/www. Por defecto solo se puede escribir por root. Para que la configuración funcione, dele propiedad al usuario de sudo deploy:

sudo chown deploy:deploy /var/www -R

Genera la aplicación de rieles en /var/www/. Si ya tiene una aplicación que desea implementar, git cloneaquí y luego ejecute bundle:

cd /var/www
rails new example --database=mysql
Configure Passenger para que apunte a la aplicación.
  1. Prep Nginx.

    sudo nano /etc/nginx/nginx.conf
    
  2. Cambiar usuario a deploy.

    user deploy;
    
  3. En la httpsección de la configuración, debería haber una línea que le indique a Nginx que cargue los módulos, incluido el pasajero. Si falta, puede agregarlo justo después del Virtual Host Configstítulo, pero antes sites-enabled.

    include /etc/nginx/conf.d/*.conf;
    
  4. Edite / cree el passenger.confarchivo.

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. Dile a Passenger que use nuestra configuración de Rbenv. Puede contener una línea que apunta a la versión Ruby incluida con Passenger, simplemente elimínela o coméntela.

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. Configure el host virtual para que apunte a la aplicación /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. Reinicia Nginx.

    sudo service nginx restart
    

En este punto, su aplicación está lista para ser utilizada en modo de desarrollo. Para cambiar al modo de producción, debe volver a su configuración de Nginx y cambiar la rails_envconfiguración a production.

Antes de cambiar al modo de producción, todavía tendrá que configurar su base de datos de producción example_production, database.ymly la clave secreta. Consulte una herramienta como Capistrano o Mina para acelerar el proceso de implementación de su aplicación. Es una buena práctica usar variables ENV con una gema como dotenv, y no confirme sus contraseñas, claves secretas y demás en su repositorio git.

Configurar SSL

Existen múltiples servicios que ofrecen certificados SSL para su dominio, muchos son pagados y algunos son gratuitos. Configure SSL sin importar el servicio que use. Let's Encrypt es muy fácil y gratuito de usar. Let's Encrypt es una organización sin fines de lucro respaldada por muchos gigantes tecnológicos.

Instalación

Ejecute los siguientes comandos y siga las indicaciones.

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

Si va a su instancia de Vultr ahora usando HTTPS, verá un sitio web seguro.

Renovación

Su certificado recién emitido caducará y deberá renovarse periódicamente. La forma más fácil de hacer esto es configurar un trabajo cron.

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

Como paso final, pero opcional, reinicie su VM y asegúrese de que todos los servicios se reinicien como se espera.

Dejar un comentario

ZPanel y Sentora en CentOS 6 x64

ZPanel y Sentora en CentOS 6 x64

ZPanel, un panel de control de alojamiento web popular, se bifurcó en 2014 a un nuevo proyecto llamado Sentora. Aprende a instalar Sentora en tu servidor con este tutorial.

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Aprende cómo instalar Vtiger CRM, una aplicación de gestión de relaciones con el cliente, en CentOS 7 para aumentar tus ventas y mejorar el servicio al cliente.

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Esta guía completa le mostrará cómo configurar un servidor Counter-Strike 1.6 en Linux, optimizando el rendimiento y la seguridad para el mejor juego. Aprende los pasos más recientes aquí.

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

Los ataques de ransomware van en aumento, pero ¿puede la IA ayudar a lidiar con el último virus informático? ¿Es la IA la respuesta? Lea aquí, sepa que la IA es una bendición o una perdición

ReactOS: ¿Es este el futuro de Windows?

ReactOS: ¿Es este el futuro de Windows?

ReactOS, un sistema operativo de código abierto y gratuito, está aquí con la última versión. ¿Puede satisfacer las necesidades de los usuarios de Windows de hoy en día y acabar con Microsoft? Averigüemos más sobre este estilo antiguo, pero una experiencia de sistema operativo más nueva.

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Whatsapp finalmente lanzó la aplicación de escritorio para usuarios de Mac y Windows. Ahora puede acceder a Whatsapp desde Windows o Mac fácilmente. Disponible para Windows 8+ y Mac OS 10.9+

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

Lea esto para saber cómo la Inteligencia Artificial se está volviendo popular entre las empresas de pequeña escala y cómo está aumentando las probabilidades de hacerlas crecer y dar ventaja a sus competidores.

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

Recientemente, Apple lanzó macOS Catalina 10.15.4, una actualización complementaria para solucionar problemas, pero parece que la actualización está causando más problemas que conducen al bloqueo de las máquinas Mac. Lee este artículo para obtener más información

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

¿Qué es un sistema de archivos de diario y cómo funciona?

¿Qué es un sistema de archivos de diario y cómo funciona?

Nuestra computadora almacena todos los datos de una manera organizada conocida como sistema de archivos de diario. Es un método eficiente que permite a la computadora buscar y mostrar archivos tan pronto como presiona buscar.