Los detalles:
Servidor de producción: Centos 7
Servidor web: Apache 2.4.6
Ruby: 2.4.2
Esta guía es un compendio de varias guías que se pueden encontrar en internet.
Assets
Este archivo es importante para poder cargar los assets.
#/etc/httpd/conf.d/puma.conf RewriteEngine On RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RequestHeader unset X-Forwarded-Proto <locationmatch "^/assets/.*$"> Header unset ETag FileETag None ExpiresActive On ExpiresDefault "access plus 1 year" </locationmatch> <locationmatch "^/assets/.*\.(css|js)$"> RewriteEngine on RewriteCond %{HTTP:Accept-Encoding} \b(x-)?gzip\b RewriteCond %{REQUEST_FILENAME}.gz -s RewriteRule ^(.+)$ $1.gz </locationmatch> <locationmatch "^/assets/.*\.css\.gz$"> ForceType text/css Header set Content-Encoding gzip Header add Vary Accept-Encoding </locationmatch> <locationmatch "^/assets/.*\.js\.gz$"> ForceType application/javascript Header set Content-Encoding gzip Header add Vary Accept-Encoding </locationmatch> AddOutputFilterByType DEFLATE text/html
Apache
Configuramos el archivo /etc/httpd/conf/httpd.conf:
<VirtualHost 111.222.333.444:80> ServerName puma.web.com DocumentRoot /home/puma/public_html/puma/public include /etc/httpd/conf.d/puma.conf Redirect permanent / https://puma.web.com/ <Directory /home/puma/public_html/puma/public> AllowOverride All Options=FollowSymLinks,MultiViews Order deny,allow Allow from all </Directory> </VirtualHost> <VirtualHost 111.222.333.444:443> ServerName puma.web.com DocumentRoot /home/puma/public_html/puma/public include /etc/httpd/conf.d/puma.conf RewriteRule ^/(.*)$ https://0.0.0.0:9294%{REQUEST_URI} [P] <Directory /home/puma/public_html/puma/public> AllowOverride All Options=FollowSymLinks,MultiViews Order deny,allow Allow from all </Directory> SSLProxyEngine On SSLProxyVerify none SSLProxyCheckPeerCN off SSLProxyCheckPeerName off SSLEngine on SSLCertificateFile /home/puma/public_html/puma/FILE.cert SSLCertificateKeyFile /home/puma/public_html/puma/FILE.key SSLProtocol +TLSv1.2 SSLCACertificateFile /home/puma/public_html/puma/FILE.crt </VirtualHost>
Puma
Se tiene que iniciar usando dos puertos uno para http y el otro para https, de la siguiente manera:
puma -d -b "ssl://127.0.0.1:9294?key=FILE.key&cert=FILE.cert&verify_mode=none&ca=FILE.crt" -b "tcp://127.0.0.1:9293" -e production
Cambiando los nombres de los archivo FILE.* por los de su certificado
Los puertos pueden ser cualquiera que no estén siendo usandos, podrían ser el 3000 y 3001 no hay problema.