Oi Paulo,
Obrigado pela dica. A partir dela fui pesquisar e consegui o que
queria. Como tenho costume de anotar, coloco aqui em baixo como
consegui o que queria, para que outros possam consultar. O detalhe
importante foi que tive de botar uma ordem precisa de inicialização
(1. server, 2. cliente web) e encerramento (1. cliente web, 2.
server).
Valeu, um abraço,
Márcio
-----------------------------------------------
Corrigindo o script de inicialização do OpenERP
-----------------------------------------------
Os seguintes comandos funcionaram para inicializar o OpenERP. Leve-se
em conta que o OpenERP já estava funcionando normalmente quando
chamado da linha de comando, e que ele teve uma primeira execução
usando o parâmetro "--save" que criou um arquivo de configuração,
permitindo que ele seja rodado das outras vezes sem precisar de
parâmetro nenhum.
A modificação feita na inicialização foi retirar os parâmetros quiet,
background e config. Como a variável USER não foi definida aqui, ela
contém o usuário que está logado no momento (você).
Em resumo, as alterações foram:
- Tirar o parâmetro "config" (que apontava para um arquivo
inexistente).
- Corrigir o path na variável DAEMON e acrescentar a extensão .py.
- Definir a variável USER com o seu nome de usuário.
# INICIALIZAÇÃO
DAEMON=/opt/openerp/server/bin/openerp-server.py
NAME=openerp-server
sudo start-stop-daemon --start --pidfile /var/run/${NAME}.pid --chuid $
{USER} --make-pidfile --exec ${DAEMON}
# FINALIZAÇÃO
NAME=openerp-server
start-stop-daemon --stop --pidfile /var/run/${NAME}.pid --oknodo
-----------------------------------------
Inicialização do Cliente Web como serviço
-----------------------------------------
sudo cp /opt/openerp/web/scripts/init.d/openerp-web /etc/init.d/
sudo gedit /etc/init.d/openerp-web
Editar as duas variáveis a seguir, para o que for apropriado em seu
sistema.
DAEMON=/opt/openerp/web/openerp-web.py
USER="verde"
O cliente web funciona quando executado da linha de comando, então não
é necessário acessar arquivo de configuração. Logo, é preciso
desabilitar a linha: DAEMON_OPTS="-c $CONFIGFILE", colocando "#" em
seu início.
# DAEMON_OPTS="-c $CONFIGFILE"
-------------------------
Botando pra rodar no boot
-------------------------
Simplesmente colocar scripts em /etc/init.d não é suficiente para
inicializá-los no boot, precisamos então usar o update-rc.d, que
define em quais runlevel o script irá iniciar e finalizar:
sudo update-rc.d openerp-server start 21 2 3 4 5 . stop 21 0 1 6 .
sudo update-rc.d openerp-web start 70 2 3 4 5 . stop 20 0 1 6 .
O primeiro comando significa: inicialize o daemon openerp-server na
posição 21 da sequência de incialização, e o finalize na posição 21 da
sequência de finalização.
O segundo comando significa: inicialize o daemon openerp-web na
posição 70 e o finalize na posição 20.
Como 21 é menor que 70, isto garante que o servidor será iniciado
primeiro, e depois o cliente web.
E como 20 é menor que 21, isso garante que o cliente web será
finalizado primeiro, e depois, finalmente, o servidor será finalizado.
----------------------------------
MAIS INFORMAÇÕES
----------------------------------
--------------------------------------------
Rodando programas na inicialização do Ubuntu
--------------------------------------------
Referência:
https://help.ubuntu.com/community/UbuntuBootupHowto
Os scripts de inicialização são localizados na pasta /etc/init.d
Durante o boot do Ubuntu, estes scripts não são executados
diretamente,
e sim através de uma estrutura de links simbólicos que administra os
serviços que devem ser inicializados em um dado "nível de
execução" (runlevel).
Assim, cada script em /etc/init.d precisa ter um link em uma das
pastas /etc/rc*.d, onde * representa estes valores: S, 0, 1, 2, 3, 4,
5, 6.
Os scripts que estão linkados para /etc/rcS.d são executados primeiro.
Depois os scripts em /etc/rcN.d são executados, onde N é o nível de
execução
escolhido (o padrão é 2).
--------
Runlevel
--------
Referências:
http://www.guiadohardware.net/termos/runlevel
http://en.wikipedia.org/wiki/Runlevel
Nível de execução do sistema. No Linux e outros sistemas baseados no
Unix o runlevel indica o modo de operação atual da máquina, definindo
quais serviços e recursos devem permanecer ativos. O runlevel pode ser
alterado a qualquer momento pelo root, através do comando telinit (#
telinit 3, # telinit 5, etc.).
No Linux os runlevels são numerados de 0 a 6. No nível 0 o sistema
está parado, nenhum processo é executado. Este modo entra em ação
quando desligamos o sistema via software.
No Debian, e em outras distribuições Linux baseadas nele, não há
diferença entre os níveis 2 a 5.
Runlevel Descrição
-------- ---------
0 Sistema paralisado (halt)
1 Modo mono-usuário.
2-5 Modo multi-usuário completo em modo texto e gráfico, se
disponível.
6 Reboot
Existe ainda um modo especial, o modo S, que dependendo da
distribuição equivale ao modo 1 ou 6.
Cada serviço do sistema é configurado de modo a saber em quais níveis
ele pode ser executado.
-----------------------------------
Instalando scripts de inicialização
-----------------------------------
Para instalar seu próprio script, copie-o para /etc/init.d e torne-o
executável:
sudo cp meuscript /etc/init.d
sudo chmod +x /etc/init.d/myscript
Para fazer o script rodar
com o argumento "start" ao final da sequência de inicialização,
e com o argumento "stop" no início da sequência de inicialização:
sudo update-rc.d meuscript defaults 98 02
98 e 02 são os números sequenciais de início e de parada,
respectivamente.
Ambos são números entre 00 e 99 e especificam o momento, mais cedo ou
mais tarde,
no qual um serviço é iniciado ou finalizado. Se um serviço inicia
tarde, ele
deve ser finalizado mais cedo, e vice-versa. Uma boa regra é fazer o
número sequencial de parada ser igual a 100 menos o número sequencial
de início.
---
FAQ
---
<> What are the different runlevels for?
Runlevel 0 stands for shutdown
Runlevel 2 is the default runlevel for the Ubuntu boot process
Runlevel 6 stands for reboot
<> Why does Ubuntu uses runlevel 2 as default? Will I ever need 3-5?
Does anyone have an answer to this? Most other distros use runlevel 5
for GUI and runlevel 3 for console. Runlevel 2 is usually almost
complete but networking disabled. I visit clients with my laptop, and
it would be very useful to boot up quickly without networking in these
cases. With Ubuntu's current use of runlevels there's not much room
for this.
<> What is in /etc/rcS.d?
The links you find in there are executed before executing runlevel
1-5.
<> What does '''K''' and '''S''' stand for?
K stands stops a process, S starts it.
<> What do the numbers between '''K''' / '''S''' and the initscript
name mean?
these numbers determine the order in which the various scripts get
executed. S35mountall.sh is executed before S40hotplug.
<> How do I deactivate a script at bootup?
see UbuntuBootupHowto or similarly SysvconfigHowTo or Boot-Up Manager
at this thread
http://ubuntuforums.org/showthread.php?p=190562
----------------------------------
Erro de socket: Endereço já em uso
----------------------------------
sudo netstat -antp | grep python
Anote o PID do processo que vai fechar
kill <PID>
If you try to start the Open ERP server from a terminal but get the
message socket.error: (98, ’Address already in use’) then you might be
trying to start Open ERP while an instance of Open ERP is already
running and using the sockets that you’ve defined (by default 8069 and
8070).