সেন্টস-এ ডিমন হিসাবে চালানোর জন্য শেল স্ক্রিপ্ট পাচ্ছেন?


8

সম্পাদনা: কোন কারণে আমার পোস্টের অর্ধেকটি কেটে গেছে, কী হয়েছে তা নিশ্চিত নয়। আমি শীঘ্রই আপডেট করব এবং পোস্ট করব যে এটি শীর্ষে এখানে আপডেট হয়েছে।

সম্পাদনা: অসম্পূর্ণ প্রশ্নের জন্য দুঃখিত, আমি পোস্টটি আবার আপডেট করেছি।

সম্পাদনা (8:55 অপরাহ্ন EST 10/10/2011): স্টিভেনের পরামর্শ মতো আমি /srv/rhodecode/start.sh আপডেট করেছি, এখনও আনন্দ নেই। এটি এভাবে ঝুলতে থাকে:

[lpeabody@vcs rhodecode]$ sudo /etc/init.d/rhodecode-server start
Starting rhodecode-server:

পরিবর্তনগুলি দেখানোর জন্য আমি নীচের স্ক্রিপ্টগুলি আপডেট করেছি।


আমি জীবনে কখনও শেল বা বাশ স্ক্রিপ্ট লিখিনি। আমি সেন্টোজে রডকোড ইনস্টল করার চেষ্টা করছি, এবং সেখানে দেবিয়ান ও জেন্টুর জন্য আরআইডি স্ক্রিপ্ট রয়েছে তবে রেডহ্যাট / সেন্টোসের জন্য নয় যা আমার কাছে উন্মাদ। সুতরাং আমাকে একটি লিখতে হবে কারণ আমাদের সার্ভারের পরিবেশটি সেন্টোস 5 চালানোতে সীমাবদ্ধ the প্রকল্পের উত্সটি এখানে বিটবকেটে পাওয়া যাবে

ধারণাটি হ'ল রোডকোড ডাব্লু / সেলারি এবং রাবিট এমকিউ চালানো। এটি সব পাইথনে লেখা এবং আমার নিজস্ব পরিবেশটি ভার্চুয়ালেনভ ব্যবহার করে নিজস্ব স্বতন্ত্র ভার্চুয়াল ধারক। আমি এখানে শেল স্ক্রিপ্টের জন্য ধারণা পেয়েছি ।

আমি রোডকোড নামে একটি সিস্টেম ব্যবহারকারী তৈরি করেছি এবং ডিরেক্টরিটি তৈরি করেছি / var / রান / রোডকোড এবং এর মালিকানা রোডকোড। আমি / var / www / rhodecode তৈরি করেছি যেখানে product.ini থাকে, সেইসাথে /srv/rhodecode/start.sh এর সমস্ত কিছুই রোডকোডের মালিকানাধীন।

অনুমতিসমূহ:

[lpeabody@vcs run]$ ll -a /var/run/rhodecode
total 12
drwxr-xr-x  2 rhodecode rhodecode 4096 Oct 10 15:57 .
drwxr-xr-x 21 root      root      4096 Oct 10 16:07 ..

[lpeabody@vcs run]$ ll -a /var/www/rhodecode
total 76
drwxr-xr-x  4 rhodecode rhodecode  4096 Oct 10 16:47 .
drwxr-xr-x 11 root      root       4096 Oct  5 14:54 ..
drwxrwxr-x  3 rhodecode rhodecode  4096 Oct  5 19:40 data
-rw-r--r--  1 rhodecode rhodecode     0 Oct 10 16:41 debug.log
-rw-r--r--  1 rhodecode rhodecode  1466 Oct 10 16:41 error.log
-rw-rw-r--  1 rhodecode rhodecode  6000 Oct  6 15:27 production.ini
drwxrwxr-x  2 rhodecode rhodecode  4096 Oct  5 18:37 repos
-rw-r--r--  1 rhodecode rhodecode 44032 Oct  5 19:16 rhodecode.db

[lpeabody@vcs run]$ ll -a /srv/rhodecode/
total 16
drwxr-xr-x 2 rhodecode rhodecode 4096 Oct 10 16:40 .
drwxr-xr-x 4 root      root      4096 Oct  7 14:40 ..
-rwxr-xr-x 1 rhodecode rhodecode  277 Oct 10 16:40 start.sh

আমার কাছে নিম্নলিখিত ব্যাশ এবং শেল স্ক্রিপ্ট রয়েছে।

/srv/rhodecode/start.sh

#!/bin/bash                                                                                               
# run this as the rhodecode user!                                                                         

WDIR=/var/www/rhodecode                                                                                   
VIRTUALENV_DIR=/opt/python_virtualenvironments/rhodecode-venv                                             
export PYTHON_EGG_CACHE=/tmp/.python-eggs                                                                 

source $VIRTUALENV_DIR/bin/activate                                                                       

cd $WDIR                                                                                                  
exec paster serve production.ini 1> debug.log 2> error.log

/etc/init.d/rhodecode-server

#!/bin/sh                                                                                                                                                                                                                                    
#                                                                                                                                                                                                                                            
# rhodecode-server RhodeCode server instance                                                                                                                                                                                                 
#                                                                                                                                                                                                                                            
#                                                                                                                                                                                                                                            

# PATH=/sbin:/usr/sbin:/bin:/usr/bin                                                                                                                                                                                                         
NAME=rhodecode-server                                                                                                                                                                                                                        
DESC=rhodecode-server                                                                                                                                                                                                                        
USER=rhodecode                                                                                                                                                                                                                               
PID_FILE=/var/run/rhodecode/pid                                                                                                                                                                                                              
CMD=/srv/rhodecode/start.sh                                                                                                                                                                                                                  

LOCK_FILE=/var/lock/subsys/$NAME                                                                                                                                                                                                             

. /etc/init.d/functions                                                                                                                                                                                                                      

RETVAL=0                                                                                                                                                                                                                                     

remove_pid () {                                                                                                                                                                                                                              
    rm -f ${PID_FILE}                                                                                                                                                                                                                        
}                                                                                                                                                                                                                                            

start_rhodecode () {                                                                                                                                                                                                                         
    daemon --user $USER --pidfile $PID_FILE $CMD                                                                                                                                                                                        
    RETVAL=$?                                                                                                                                                                                                                                
    [ $RETVAL -eq 0 ] && touch $LOCK_FILE                                                                                                                                                                                                    
    return $RETVAL                                                                                                                                                                                                                           
}                                                                                                                                                                                                                                            

stop_rhodecode () {                                                                                                                                                                                                                          
    killproc -p $PID_FILE                                                                                                                                                                                                                    
    RETVAL=&?                                                                                                                                                                                                                                
    rm -f $LOCK_FILE                                                                                                                                                                                                                         
    rm -f $PID_FILE                                                                                                                                                                                                                          
    return $RETVAL                                                                                                                                                                                                                           
}                                                                                                                                                                                                                                            

restart_rhodecode () {                                                                                                                                                                                                                       
    stop_rhodecode                                                                                                                                                                                                                           
    start_rhodecode                                                                                                                                                                                                                          
    RETVAL=$?                                                                                                                                                                                                                                
}                                                                                                                                                                                                                                            

case "$1" in                                                                                                                                                                                                                                 
  start)                                                                                                                                                                                                                                     
    echo -n $"Starting $DESC: "                                                                                                                                                                                                              
    start_rhodecode                                                                                                                                                                                                                          
    echo                                                                                                                                                                                                                                     
    ;;                                                                                                                                                                                                                                       
  stop)                                                                                                                                                                                                                                      
    echo -n $"Stopping $DESC: "                                                                                                                                                                                                              
    stop_rhodecode                                                                                                                                                                                                                           
    echo                                                                                                                                                                                                                                     
    ;;                                                                                                                                                                                                                                       
  restart)                                                                                                                                                                                                                                   
    echo -n $"Restarting $DESC: "                                                                                                                                                                                                            
    restart_rhodecode                                                                                                                                                                                                                        
    echo                                                                                                                                                                                                                                     
    ;;
  *)                                                                                                                                                                                                                                         
    echo $"Usage: $0 {start|stop|restart}"                                                                                                                                                                                                   
    RETVAL=1                                                                                                                                                                                                                                 
    ;;                                                                                                                                                                                                                                       
esac                                                                                                                                                                                                                                         

exit $RETVAL

আমি যখন চালাব sudo /etc/init.d/rhodecode-server startএবং তারপরে রান করব তখন আমি /srv/rhodecode/start.sh থেকে কমান্ডটি ps -aux | grep pasterদেখতে পাচ্ছি paster serve production.iniএবং রোডকোডের ইউজার আইডি (102) দিয়ে চলছে।

102       5222  0.7  7.8 144300 80988 ?        Sl   16:08   0:00 /opt/python_virtualenvironments/rhodecode-venv/bin/python /opt/python_virtualenvironments/rhodecode-venv/bin/paster serve production.ini

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


@mailq আমি আমার প্রশ্ন আপডেট করেছি। কোনও কারণে অর্ধেক পোস্টটি কেটে ফেলা হয়েছে ... ডিমন কেন পিড ফাইল তৈরি করে না তা নিয়ে প্রশ্ন।
লেস্টার পিয়াবডি

এটি /var/run/rhodecode/pidযেভাবে চলছে সেই ব্যবহারকারীর জন্য কি সঠিক অনুমতি রয়েছে ? এই বিষয়টির জন্য, পরিবর্তনশীলটি সঠিক বা এটি হওয়া উচিত /var/run/rhodecode.pid?
জন গার্ডেনিয়ার্স

@ জন এই প্রক্রিয়ায় জড়িত সমস্ত ডিরেক্টরি এবং ফাইলগুলিতে অনুমতিগুলি তালিকা করার জন্য আমি আমার পোস্টে একটি অনুমতি বিভাগ যুক্ত করেছি (আমার জ্ঞানে)।
লেস্টার পিবডি

আপনার ডিবাগ তথ্য বন্ধ করুন sh -x /etc/init.d/rhodecode-server start?
কোয়ান্টা

daemon --pidfileপিড ফাইলটি কেবল তা নির্দিষ্ট করে। CentOS এ ফাংশনগুলির প্রয়োজনীয় --make-pidfileবিকল্পটি মনে হচ্ছে না
কেসিডি

উত্তর:


1

আমার মনে হয় আপনার সমস্যা আছে /srv/rhodecode/start.sh। এটি বর্তমানে pasterএকটি পৃথক পটভূমি প্রক্রিয়া হিসাবে শুরু হচ্ছে এবং তারপরে অবিলম্বে প্রস্থান করা হবে। এটি আপনার আরআইপি স্ক্রিপ্টের জন্য একটি সমস্যা সৃষ্টি করে, যা start.shনিজেকে দীর্ঘস্থায়ী ডেমন প্রক্রিয়াটি পরিচালিত হওয়ার প্রত্যাশা করে।

সুতরাং, /srv/rhodecode/start.shনিম্নলিখিত হিসাবে পড়ার শেষ লাইনটি পরিবর্তন করার চেষ্টা করুন :

exec paster serve production.ini 1> debug.log 2> error.log

ব্যবহার execতোলে start.sh হয়ে paster , যা দ্বারা daemonized হয় daemoninit স্ক্রিপ্ট কমান্ড।


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

আমি আসলে এসএসএইচডি করেছি এবং এটি চেষ্টা করেছি এবং এটি কোনও কাজ করে নি .. এটি ঝুলতে থাকে, আমি আমার পোস্টটি আপডেট করব।
লেস্টার পিবডি

0

আপনার কি অবস্থান নির্দিষ্ট করতে হবে? আপনি একটি নাম দেওয়ার জন্য --name বিকল্পটি ব্যবহার করতে পারেন? এটি আপনার জন্য পিআইডি তৈরি করবে এবং আপনার কাজ শেষ হয়ে গেলে এটি পরিষ্কার করবে। সুতরাং এটি দেখতে হবে:

$NAME="rhodecode"
start_rhodecode () {                                                                                                                                                                                                                         
    daemon --user $USER --name $NAME $CMD                                                                                                                                                                                        
    RETVAL=$?                                                                                                                                                                                                                                
    return $RETVAL                                                                                                                                                                                                                           
} 

stop_rhodecode () {                                                                                                                                                                                                                          
    daemon --name $NAME --stop                                                                                                                                                           
    RETVAL=&?                                                                                                                                                                                                                                                                                                         
    return $RETVAL                                                                                                                                                                                                                           
}     

সেন্টোস .5.৫
মারিউজস

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