ওবুন্টু 16.04 এ ডিমন তৈরি করুন


13

আমি পিএইচপি-তে একটি ক্রোলার তৈরি করেছি যা নির্দিষ্ট শিরোনামের সাথে একটি URLকে বিশ্লেষণ করে এবং সামগ্রীর সমস্ত ইউআরএলকে কাতারে রাখে put এটা ঠিক কাজ করে।

আমি এই কোডটি একটি উবুন্টু 14.04 এ বিকাশ করেছি এবং আমি এই বিষয়বস্তু দিয়ে / ইত্যাদি / আরডি ফোল্ডারে একটি .conf ফাইল রেখেছি:

# 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

এটি উবুন্টু 14.04 এ দুর্দান্ত কাজ করে এবং আমি "সুডো সার্ভিস ক্রলার স্টার্ট" এবং "সুডো সার্ভিস ক্রলার স্টপ" ব্যবহার করে ডিমন শুরু করতে এবং থামাতে পারি

এখন উত্পাদনের পরিবেশে আমার একটি উবুন্টু 16.04 সার্ভার রয়েছে এবং আমি একই কোডটি একই ফোল্ডারে রেখেছি তবে যখন আমি পরিষেবাটি শুরু করার চেষ্টা করি তখন আমি "বার্তাবহ সার্ভার শুরু করতে ব্যর্থ হয়েছি Unit

আপনি কি আমাকে এ সম্পর্কে কোনও সহায়তা দিতে পারেন?

শুভেচ্ছা সহ


/ Usr / বিন / পিএইচপি মধ্যে পিএইচপি এক্সিকিউটেবল অনুপস্থিত? লগগুলি পরীক্ষা করুন, আপনার কিছু তথ্য থাকবে
ডম

2
উবুন্টু 16.04 সিস্টেমযুক্ত ব্যবহার করে। কীভাবে এটি কাজ করে তা সন্ধান করুন এবং একটি ক্রলআর সার্ভিস তৈরি করুন।
হাফগ্গার

উত্তর:


15

@ জুঞ্জো আগুয়াইল্লা মার্সের উত্তরে যোগ করা, এবং একবার আপনি আপনার স্ক্রিপ্টটি অনুলিপি / লিঙ্ক করেছেন /etc/systemd/system, আপনি সার্ভারটি শুরু হওয়ার পরে এটি স্বয়ংক্রিয়ভাবে শুরু করতে চাইতে পারেন:

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

উত্স ডিজিটাল মহাসাগর

এটিকে মূল হিসাবে চালিত না করাই ভাল ধারণা। userআপনার স্ক্রিপ্টের লাইনটি কেবল পরিবর্তন করুন :

[Service]
User=some_user

12

আমি সমস্যাটি সমাধান করেছি:

ক) এই কোডটি দিয়ে / ইত্যাদি / systemd / সিস্টেমে একটি ফাইল ক্রলআল সার্ভিস তৈরি করুন:

[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

আমার বাশ ফাইলটিতে এই কোডের সাথে একই পিএইচপি ফাইলের সমান্তরালে একটি বিচ্ছিন্ন কার্যনির্বাহী রয়েছে:

#!/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
}

এক্সিকিউশনগুলির মধ্যে ঘুমটি পরিষেবাটির এত দ্রুত বাস্তবায়নের বিষয়ে সমস্যাটি সংরক্ষণ করার জন্য প্রয়োজনীয়।

সমাধান সম্পর্কে আপনার কাছে যদি কোনও পরামর্শ থাকে তবে দয়া করে মন্তব্য করুন, ব্যাশ ফাইল এবং সিস্টেমড ফাইলগুলিতে আমার প্রচুর অভিজ্ঞতা নেই, তবে এই মুহুর্তে ভাল কাজ করে।


5

14.04-র জন্য ইनिম সিস্টেমটি আপস্টার্ট। ১.0.০৪-এর জন্য এনআইডি সিস্টেমটি সিস্টেমযুক্ত। আপনার আপস্টার্ট স্ক্রিপ্টটি সিস্টেমড ইউনিট ফাইলে রূপান্তর করা উচিত । আছে অন্যান্য সম্পদের প্রচুর প্রাপ্তিসাধ্য খুব।


4

1]। একটি পরিষেবা তৈরি করতে / etc / systemd / system / এ যান

2]। পরিষেবাদির একটি ফাইল তৈরি করুন যেমন চ্যাটসকেট.সার্ভিস

3]। প্রদত্ত বেলো হিসাবে ফাইলগুলিতে সামগ্রী রাখুন

[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]। আঘাত করে কনফিগারেশন পুনরায় লোড করুন:

sudo systemctl daemon-reload

5]। ডিফল্টরূপে পরিষেবাটি সক্ষম করুন যখন সিস্টেম স্টার্ট পরিষেবা স্বয়ংক্রিয়ভাবে শুরু হবে:

sudo systemctl enable my_service.service

6]। নীচে কমান্ড ব্যবহার করে আপনার পরিষেবা শুরু করুন:

sudo systemctl start my_service.service

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.