Não consigo que o XAMPP inicie automaticamente no OS X

1

Não consigo fazer o XAMPP iniciar quando o OS X é inicializado. Eu tenho pesquisado isso há algum tempo, mas sem sorte. O XAMPP precisa ser iniciado como root, e eu não quero armazenar a senha para root em um script em algum lugar e usar os "itens de login" do painel pref de contas para iniciar o xampp. Sim, isso funcionará, mas não é o caminho certo.

Estou tentando lançá-lo usando o launchd / users damons / LaunchDaemons. Isso inclui a criação de um arquivo plist no diretório "/ Library / LaunchDaemons".

Eu criei um arquivo chamado xampp.startapache.plist e coloquei isso dentro:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnableTransactions</key>
<true/>
<key>Label</key>
<string>xampp.startapache</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/XAMPP/xamppfiles/xampp</string>
<string>startapache</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>/Applications/XAMPP/xamppfiles</string>
</dict>
</plist>

Isso foi descrito aqui , bem como em várias outras páginas de ajuda semelhantes . Eu tentei editar os arquivos manualmente e também tentei usar o Lingon. Mas isso não funciona! Eu até tentei fazer uma entrada semelhante para um arquivo de script localizado no mesmo diretório, o que seria o eco do tempo para um arquivo de log. O arquivo de log está em branco - como se o script não estivesse sendo executado.

Como posso fazer isso funcionar?

    
por cwd 09.02.2011 / 16:44

3 respostas

2

Veja o que acabou funcionando para mim:

Crie estes dois arquivos:

/Library/LaunchDaemons/xampp.sql.startapache.plist
/Library/LaunchDaemons/xampp.startapache.plist

Dentro do primeiro, adicione este código:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnableTransactions</key>
<true/>
<key>Label</key>
<string>xampp.startapache.mysql</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/XAMPP/xamppfiles/xampp</string>
<string>startmysql</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>/Applications/XAMPP/xamppfiles</string>
<key>KeepAlive</key>
<false/>
<key>AbandonProcessGroup</key>
<true/>
</dict>
</plist>

No segundo, adicione este código:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnableTransactions</key>
<true/>
<key>Label</key>
<string>xampp.startapache</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/XAMPP/xamppfiles/xampp</string>
<string>startapache</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>/Applications/XAMPP/xamppfiles</string>
<key>KeepAlive</key>
<false/>
<key>AbandonProcessGroup</key>
<true/>
</dict>
</plist>

Eu tive que ter dois porque quando eu não tinha o sql, o mysql não estava começando, mas o apache estava. Isso pode ser porque eu tenho SSL ativado ou algo estranho assim. De qualquer forma, ter ambos resolvido o problema para mim, e eu usei o console.app para verificar se há mensagens de erro ao iniciar o apache - que foi útil também.

    
por 28.03.2011 / 04:19
1

Eu suspeito que você esteja se desentendendo com as expectativas do launchd sobre os programas que ele lança. Ele não é destinado principalmente para coisas que precisam ser executadas, é para coisas que precisam ser executadas e mantidas vivas - assim quando xampp startapache terminar, o launchd diz para si mesmo "OMG saiu, é melhor limpar os restos e iniciar uma nova instância "... Eu não testei isso com o xampp, mas suspeito que adicionar chaves ao .plist para dizer a ele para não reiniciar (KeepAlive = false) e não limpar subprocessos gerados (AbandonProcessGroup = true) vai fazer o truque:

<key>KeepAlive</key>
<false/>
<key>AbandonProcessGroup</key>
<true/>
    
por 09.02.2011 / 18:40
0

Eu mesmo tive essa mesma pergunta e, embora a resposta de cwd tenha funcionado, é muito complicado. Eu acho que a chave é transformar o AbandonProcessGroup true. Eu tenho que trabalhar com este único daemon de lançamento no OS X 10.9.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
 <dict>
  <key>Label</key>
    <string>org.xampp.server</string>
  <key>ProgramArguments</key>
    <array>
      <string>/Applications/XAMPP/xamppfiles/xampp</string>
      <string>start</string>
  </array>
  <key>RunAtLoad</key>
    <true/>
  <key>AbandonProcessGroup</key>
    <true/>
  </dict>
</plist>
    
por 06.02.2014 / 01:27