ruby sudo bundler rvm thin

ruby - add user to rvm group



RVM y thin, usuario root vs. local (4)

RVM viene con un práctico generador de envoltura que crea un cargador intermediario para un script init.d. Esto le permite cargar un servicio usando una versión particular de Ruby y gemset. Lo uso así (después de instalar la gema delgada):

1 - crear la entrada init.d para thin

sudo thin install

2 - configurar algunos valores por defecto

sudo /usr/sbin/update-rc.d -f thin defaults

3 - generar la configuración de arranque para su aplicación de rieles

sudo thin config -C /etc/thin/<appname>.yml -c /var/rails/<appdir> --servers 4 -e production

4 - generar script rvm wrapper

rvm wrapper <rubyversion>@<gemset> bootup thin

5 - Si está utilizando un conjunto de gemas global, solo puede usar

rvm wrapper ruby-1.9.2-p125 bootup thin

6 - editar thin init

sudo nano /etc/init.d/thin

7 - cambiar el cargador original

DAEMON=/usr/local/rvm/gems/ruby-<rubyversion>-<rubyrevision>@<gemset>/bin/thin

8 - para señalar el envoltorio rvm en su lugar

DAEMON=/usr/local/bin/bootup_thin

9 - ponlo en marcha

sudo service thin start

Si está ejecutando más de una aplicación, simplemente genere un archivo yml de configuración de arranque para cada una; al arrancar, se analizan todos los archivos yml en / etc / thin /. Más información aquí:

http://wiki.rubyonrails.org/deployment/nginx-thin?rev=1233246014 nb: Esto está vinculado a una revisión, la versión más reciente se ha editado para que esté vacía. Considere mirar el enlace sin el ?rev=... en la url, la versión actual puede estar de vuelta y potencialmente más actualizada.

HTH

EDICIÓN DE BONIFICACIÓN 2013

Si bien ya no uso RVM en producción, thin sigue siendo mi servidor de producción preferido, y sigo los pasos 1-3 anteriores para comenzar. Pero la configuración predeterminada que genera puede hacer con algunos ajustes, aquí están algunos de los míos:

Establezca el usuario y el grupo que ejecuta thin como:

user: www-data group: www-data

Elimine la configuración del puerto y cambie a usar sockets (un poco más rápido):

# port: 3000 socket: tmp/sockets/<appname>.sock

Indique a Thin que reinicie las instancias una por una, en lugar de apagarlas todas antes de volver a comenzar (reinicio continuo):

onebyone: true

Dale al servidor una "etiqueta" para ayudar a identificarlos (en ps aux, etc.):

tag: <appname>

Así que estoy tratando de adelgazar para funcionar como un servicio con RVM. Después de una thin install , actualicé manualmente /etc/init.d/thin para usar un su - user cuando ejecutaba el comando config, de modo que thin se ejecutaba como un usuario local, en lugar de root. Hasta aquí todo bien.

Ahora, cuando trato de usar el sudo service thin start , parece que está intentando usar la versión que no es RVM de Ruby (1.8.7 que se instaló en la caja para comenzar) para ejecutar el comando. Hice una gem install thin en la versión no RVM, que luego me da un mensaje uninitialized constant Bundler : Bundler solo se instala en las gemas RVM, no en las gemas del sistema. Parece que no puedo configurar el entorno RVM (aunque mi script de inicio de RVM está en ~ / .bashrc, que luego se incluye en ~ / .bash_profile).

Todo lo que quiero hacer es correr como un servicio usando el entorno RVM, no el entorno del sistema. ¿Es esto posible? ¿Debo rendirme y cometer el pecado final de correr todo como root? Es muy tentador en este punto.

¡Gracias por cualquier ayuda!


Un addendum que, con suerte, ahorrará tiempo: Ubuntu puede hacer cosas divertidas con sudo y variables de entorno. Si el sudo normal no funciona, use rvmsudo (en .rvm / bin):

rvmsudo thin install rvmsudo update-rc.d -f thin defaults


Una buena práctica podría ser poner la aplicación en servicio en lugar de poder iniciar aplicaciones en diferentes entornos, como una aplicación en ruby ​​1.8.7 myapp1.8.7 y otra aplicación en ruby ​​1.9.2 myapp1.9.2

sudo nano /etc/init.d/myapp1.8.7

MANTENER el cargador original

DAEMON=/usr/local/rvm/gems/ruby-<rubyversion>-<rubyrevision>@<gemset>/bin/thin

En caso de inicio de caso

$DAEMON -C /etc/thin/$NAME.yml start

y ponlo en marcha

sudo service myapp1.8.7 start

Hace lo mismo con la aplicación myapp1.9.2 y podrá ejecutar muchas aplicaciones de forma independiente en entornos mixtos.

sudo service myapp1.9.2 start


para una instalación independiente, una solución simple, agregué los privilegios de root al usuario para los "requisitos de rvm" y luego eliminé los privilegios usando visudo username nombre ALL = (ALL: ALL) ALL

https://www.digitalocean.com/community/articles/how-to-add-delete-and-grant-sudo-privileges-to-users-on-a-debian-vps

Es probable que tenga problemas con el acceso de lectura / escritura a / usr / local / rvm

Cambié los permisos para que todos los usuarios pudieran leer / escribir / ejecutar;

como root ''chomod a + xwr / usr / local / rvm /''

Recibirá advertencias de RVM sobre todos los usuarios que tengan acceso de lectura / escritura / ejecución a esta carpeta al actualizar GEMS