Cómo instalar Ruby On Rails en Ubuntu 20.04 con MySQL, Nginx, Passenger, SSL. Ruby es un lenguaje de programación dinámico y de código abierto que prioriza la simplicidad y la productividad. Cuenta con una sintaxis fácil que es natural para leer y escribir. Ruby on Rails es un marco web ampliamente utilizado para Ruby que se creó para ayudar a los desarrolladores de software a ser más productivos.
Nginx es un servidor web que puede proporcionar transacciones HTTP y servir archivos estáticos, pero no puede ejecutar aplicaciones Ruby directamente. Así que usamos Phusion Passenger, que es un servidor de aplicaciones web gratuito y de código abierto. Está diseñado para manejar solicitudes HTTP, monitorear y administrar procesos y recursos, así como permitir la administración, el monitoreo y el diagnóstico de problemas.
En esta guía, configurará Passenger para ayudar a Nginx con el servicio de su aplicación web Ruby on Rails e instalará Let'sEncrypt SSL para proteger su aplicación.
Requisitos
- Un servidor con Ubuntu 20.04
- Acceso raíz a su servidor o usuario con privilegios sudo.
- Conocimiento intermedio en el uso de comandos de terminal de Linux.
- Nombre de dominio que apunta a la IP externa de su servidor.
Configuración inicial del servidor
Actualice los paquetes de su servidor a su versión más reciente.
sudo apt update sudo apt dist-upgrade -y
Instalar Ruby on Rails con Rbenv
Para asegurarnos de que la configuración funcione bien, comenzaremos agregando los repositorios Node.js e Yarn.
curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
Instalar dependencias
Ahora puedes instalar todas las dependencias.
sudo apt-get update sudo apt-get install git-core zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev nodejs yarn
Instalar Rbenv y Rbenv Build
Rbenv es un administrador de versiones de Ruby que se usa para instalar Ruby.
Aquí instalaremos Rbenv y Rbenv-build.
Instalar Rbenv
cd git clone https://github.com/rbenv/rbenv.git ~/.rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc exec $SHELL
Instalar compilación Rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc exec $SHELL
Configurar la versión de Ruby
Ahora puede configurar la versión de Ruby predeterminada y global.
rbenv install 3.1.1 rbenv global 3.1.1
Confirme la versión de Ruby usando el siguiente comando.
ruby -v
Ahora necesita instalar el paquete.
gem install bundler
Instalar rieles
gem install rails -v 7.0.2.3
Haz que el comando Rails sea ejecutable.
rbenv rehash
Confirme la versión de Rails.
rails -v
Instalar MySQL
En este tutorial usaremos MySQL para la base de datos.
sudo apt-get install mysql-server mysql-client libmysqlclient-dev
sudo mysql_secure_installation
Puede configurar un nuevo usuario y contraseña en MySQL si lo necesita.
Configurar Rails para MySQL
Ahora instale el adaptador MySQL para Rails
gem install mysql2
Instalar Passenger y Nginx
Ahora instalaremos Nginx y configuraremos Passenger.
Instala Nginx.
sudo apt -y install nginx
Instalar Pasajero.
sudo apt install -y dirmngr gnupg apt-transport-https ca-certificates sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
Agregue el depósito APY de Pasajeros.
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger focal main > /etc/apt/sources.list.d/passenger.list'
Actualice e instale Passenger.
sudo apt update sudo apt install -y libnginx-mod-http-passenger
Ahora se agregará una nueva configuración de pasajeros dentro del directorio conf.d de la instalación de Nginx.
Reinicie Nginx para que la instalación del módulo Pasajero surta efecto.
sudo service nginx start
Configurar pasajero con Rbenv
Edite el archivo de configuración del Pasajero.
sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
Comente las líneas que comienzan con passenger_root
y passenger_ruby
.
Agregue las siguientes líneas en el archivo.
Reemplazar nombre de usuario en la ruta de la opción Passenger_ruby con el nombre de usuario a través del cual ha instalado Rbenv.
passenger_ruby /home/example_user/.rbenv/shims/ruby; passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
Guarde y salga del archivo.
Reinicie Nginx.
sudo service nginx restart
Crear nuevo proyecto de rieles
Cree un nuevo directorio para su proyecto de Rails o simplemente navegue a cualquier directorio. Aquí estamos navegando al directorio web predeterminado de Nginx.
cd /var/www
Crear proyecto Rails.
rails new project-name -d mysql cd project-name
Edite la configuración de la base de datos para conectarse a su base de datos.
sudo nano config/database.yml
Reemplace el nombre de usuario con tu username
, contraseña con tu password
Asegúrate de que tu database.yml
se parece a esto
default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: username password: password host: locahost database: database_name development: <<: *default test: <<: *default production: <<: *default
Inicializa la base de datos de Rails.
rake db:create
Reinicie Rails.
rails restart
Configurar Nginx con Ruby on Rails
Elimina las configuraciones predeterminadas de Nginx.
sudo rm -rf /etc/nginx/sites-available/default sudo rm -rf /etc/nginx/sites-enabled/default
Cree una nueva configuración para su aplicación Ruby
sudo nano /etc/nginx/sites-available/domainname.conf
Pegue esta nueva configuración y presione Ctrl+X
seguido de Y
para guardar el archivo
server { listen 80 default_server; server_name domainname.com; passenger_enabled on; passenger_app_env production; root /var/www/html/project-name/public; }
Habilite su nueva configuración
sudo ln -s /etc/nginx/sites-available/domainname.conf /etc/nginx/sites-enabled/domainname.conf
Valide la configuración de Nginx y reinicie nginx
sudo nginx -t sudo service nginx restart
Instalar Let'sEncrypt SSL
Podemos usar Certbot para instalar el certificado SSL Let's Encrypt gratuito para su dominio.
sudo apt install python3-certbot-nginx
Ejecute el siguiente comando para instalar el certificado y configurar el redireccionamiento a HTTPS automáticamente.
sudo certbot --nginx --redirect --agree-tos --no-eff-email -m [email protected] -d domain.com -d www.domain.com
Ahora debería recibir el certificado SSL y se configurará automáticamente.
Configurar la renovación automática.
sudo certbot renew --dry-run
Ahora Ruby on Rails está instalado y configurado con Passenger y Nginx y conectado con la base de datos MySQL.
Visite su nombre de dominio en su navegador, puede ver la página de bienvenida de Ruby on Rails.
Conclusión
Ahora ha aprendido cómo instalar Ruby On Rails en Ubuntu 20.04 con MySQL y configurar Nginx con Passenger y configurar Let'sEncrypt SSL.
Gracias por tu tiempo. Si tiene algún problema o comentario, deje un comentario a continuación.