Ubuntu 16.04'te daemon oluşturma


13

PHP'de belirli başlıklara sahip bir URL'yi ayrıştıran ve içeriğin tüm URL'lerini sıraya koyan bir tarayıcı geliştirdim. İyi çalışıyor.

Ben ubuntu 14.04 ub bu kodu geliştirdi ve ben bu içeriği ile / etc / init klasörüne bir .conf dosya koymak:

# Info
description "Warm the varnish to get the list of products"
author      "Juanjo Aguilella"

# Events
start on startup
stop on shutdown

# Automatically respawn
respawn
respawn limit 100 5

# Run the script
# Note, in this example, if your PHP script return
# the string "ERROR", the daemon will stop itself.
script
    [ $(exec /usr/bin/php -f /var/www/crawler.php) = 'ERROR' ] && ( stop; exit 1; )  
end script

Ubuntu 14.04'te iyi çalışıyor ve "sudo service crawler start" ve "sudo service crawler stop" kullanarak arka plan programını başlatabilir ve durdurabilirim

Şimdi üretim ortamında bir Ubuntu 16.04 sunucum var ve aynı kodu aynı klasöre koydum ama hizmeti başlatmaya çalıştığımda "crawler.service başlatılamadı. Birim crawler.service bulunamadı" iletisini alıyorum

Bana bu konuda yardım edebilir misin?

Saygılarımızla


/ Usr / bin / php dosyasında php dosyası eksik mi? Günlükleri kontrol edin, bazı bilgilere sahip olacaksınız
Dom

2
Ubuntu 16.04, systemd kullanır. Bunun nasıl çalıştığını öğrenin ve bir tarayıcı yapın.
Halfgaar

Yanıtlar:


15

@Juanjo Aguilella Marés yanıtına eklediğinizde, komut dosyanızı kopyaladıktan / bağladıktan /etc/systemd/systemsonra, sunucu başlatıldığında otomatik olarak başlatmak isteyebilirsiniz:

sudo systemctl daemon-reload
sudo systemctl enable my_service.service
sudo systemctl start my_service.service

Kaynak Dijital Okyanus

Kök olarak çalıştırmamak da iyi bir fikirdir. userSenaryonuzdaki satırı değiştirin :

[Service]
User=some_user

12

Sorunu çözdüm:

a) Bu kodla / etc / systemd / system'de crawler.service dosyası oluşturun:

[Unit]
Description=Crawler cache Service
After=network.target

[Service]
User=root
Restart=always
Type=forking
ExecStart=/var/www/execute.sh

[Install]
WantedBy=multi-user.target

bash dosyam bu kodla aynı php dosyasına paralel olarak farklı yürütmeler içeriyor:

#!/bin/sh
php /var/www/tiendas.local.mediamarkt.es/crawler.php
sleep 0.1
{
    php /var/www/tiendas.local.mediamarkt.es/crawler.php
}&
sleep 0.2
{
    php /var/www/tiendas.local.mediamarkt.es/crawler.php
}&
sleep 0.3
{
    php /var/www/tiendas.local.mediamarkt.es/crawler.php
}&
sleep 0.4
{
    php /var/www/tiendas.local.mediamarkt.es/crawler.php
}

yürütme arasındaki uyku hizmet çok hızlı yürütme sorunu kurtarmak için gerekli.

Çözüm hakkında herhangi bir öneriniz varsa, lütfen yorum yapın, bash dosyalarında ve systemd dosyalarında çok fazla deneyimim yok, ancak şu anda iyi çalışıyor.



4

1]. Hizmet oluşturmak için / etc / systemd / system / adresine gidin.

2]. Bir serviceName dosyası oluşturun, örneğin chatSocket.service

3]. İçeriği aşağıdaki gibi dosyaya yerleştirin

[Unit]
Description=Your PHP Daemon Service
#Requires=mysqld.service memcached.service #May your script needs mysql or other services to run.
#After=mysqld.service memcached.service

[Service]
User=root
Type=simple
TimeoutSec=0
PIDFile=/var/run/server.pid
ExecStart=/usr/bin/php -f /home/shrikant/workspace/app/Http/Controllers/server.php  2>&1> /dev/null #path to script
#ExecStop=/bin/kill -HUP $MAINPID
#ExecReload=/bin/kill -HUP $MAINPID
KillMode=process

Restart=on-failure
RestartSec=42s

StandardOutput=null #If you don't want to make toms of logs you can set it null if you sent a file or some other options it will send all php output to this one.
StandardError=/home/shrikant/workspace/app/Http/Controllers/chatSocket.log #path to error log file
[Install]
WantedBy=default.target

4]. Yapılandırmayı vurarak yeniden yükleyin:

sudo systemctl daemon-reload

5]. Sistem başlatma hizmeti otomatik olarak başlayacağı zaman hizmeti varsayılan olarak etkinleştir:

sudo systemctl enable my_service.service

6]. Aşağıdaki komutu kullanarak hizmetinizi başlatın:

sudo systemctl start my_service.service

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.