فناوریمدیریت سرور
خودکارسازی نصب وردپرس با پلسک

بی شک شما نیز در مورد نحوه نصب سریع وردپرس با پلسک اطلاعاتی دارید. به عنوان متخصص هاستینگ، می توانید این اطلاعات را در اختیار مشتریان خود نیز قرار دهید.در این مقاله قصد داریم خودکارسازی نصب وردپرس در پلسک را با هم مرور کنیم. پس همراه وب ایده باشید.
با استفاده از چند کلیک ساده امکان نصب وردپرس فراهم می شود:
- بر روی گزینه وردپرس(WordPress) در منوی Featured applications کلیک کنید.
- روی گزینه نصب(install) کلیک نمایید.
همانطور که مشاهده کردید این کار تنها با چند کلیک ساده انجام می شود. اما اگر بخواهید این فرآیند را خودکار کنید باید به فکر روش دیگری باشید. در این مقاله قصد داریم به همین موضوع بپردازیم. فقط به خاطر داشته باشید که این شیوه در پلسک 12.5 تست شده است اما با Plesk Onyx نیز سازگار است.
چگونه نصب وردپرس برای دامنه های جدید را خودکار سازیم؟
زمانی که دامنه جدید توسط پلسک فراهم می شود باید یک محرک داشته باشیم. به عنوان یک محرک از کنترل کننده رویداد(event handler) استفاده می کنیم. (این پست را مشاهده کنید). در پارامترهای موجود در کنترل کننده رویداد باید اسکریپتی قرار داده شود. این اسکریپت با permission روت اجرا می شود. خوب فرض کنید که نام اسکرپیت domain-created.sh است:
در یک سناریوی عمومی ممکن است نخواهیم وردپرس را در هر دامنه جدید به کار ببندیم. ساده ترین روش برای اینکه بتوانیم تعیین کنیم چه دامنه ای به وردپرس نیاز دارد ؛ می توانیم دو پلن جداگانه ایجاد کنیم. فرض کنید دامنه ای که وردپرس در آن فعال است، WordPress auto نام دارد. شما می توانید پایگاه داده را محدود کنید زیرا معمولا به بیش از یک پایگاه داده نیاز نخواهید داشت.
خوب حالا اجازه دهید اسکریپت مورد نظر را با هم مورد بررسی قرار دهیم. فقط به خاطر داشته باشید که اگرچه اسکریپت زیر تست شده و کارایی آن مورد تایید است اما نمی توان مطمئن بود که در سرور و سیستم عامل های دیگر همین کارایی را داشته باشد. به همین خاطر بدون تست، آنالیز و بررسی شرایط نمی توان از آن استفاده کرد. به عنوان مثال ذخیره کردن پسورد به شکل آشکار(plaintext) در فایل کنترل کننده می تواند دردسرساز باشد.
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
/bin/date >> /tmp/event_handler.log # information on the event date and time /usr/bin/id >> /tmp/event_handler.log # information on the user, on behalf of which the script was executed (to ensure control) #we need random string generators. One simple for logins, and the other is more complex for secure passwords. genpass_alphanum() { local l=$1 [ “$l” == “” ] && l=16 tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs } genpass() { local l=$1 [ “$l” == “” ] && l=16 tr -dc A-Za-z0-9\_\!\@\#\$\%\^\&\*\?< /dev/urandom | head -c ${l} | xargs } #We want to make we provide the latest WordPress version. See http://docs.plesk.com/en-US/12.5/cli-linux/using-command-line-utilities/aps-application-catalog.63094/ for more details on “plesk bin aps” functionality VER_RAW=(`plesk bin aps -gp|grep WordPress -A2 -B1|grep -v Vendor|awk ‘{print $2}’`) VER_LEN=${#VER_RAW[*]} VER=() for i in {0,$((VER_LEN/3)),1}; do VER=(${VER[@]} ${VER_RAW[$((i*3-1))]}); done IFS=$’\n’ sorted=($(sort <<<“${VER[*]}”)) LVC=${#sorted[*]} LATEST_VER=${sorted[$((LVC-1))]} echo latest version is $LATEST_VER >>/tmp/event_handler.log LATEST_PACKAGE_ID=`plesk bin aps -gp|grep $LATEST_VER -B3|head -1|awk ‘{print $2}’` echo latest package id is $LATEST_PACKAGE_ID >>/tmp/event_handler.log echo “domain ${NEW_DOMAIN_NAME}” >> /tmp/event_handler.log # Find out plan name on which domain is created – see http://docs.plesk.com/en-US/12.5/cli-linux/using-command-line-utilities/site-sites.67067/ for reference PLAN=`plesk bin site -i “${NEW_DOMAIN_NAME}”|grep -i plan|awk -F\” ‘{ print $2 }’` echo $PLAN >> /tmp/event_handler.log #if plan is right, we are installing WP, and for this we need to extract user name and email from domain owner, in order to provide WP with the same data, without having to make user correct it later if [ “$PLAN” == “$TARGET_PLAN” ]; then echo “${NEW_DOMAIN_NAME} is eligible for WP installation” >> /tmp/event_handler.log USER=`plesk bin domain -i $NEW_DOMAIN_NAME|grep Owner|awk -F\( ‘{print $2}’|awk -F\) ‘{print $1}’` EMAIL=`plesk bin user -i $USER|grep mail|awk ‘{print $2}’` echo $USER $EMAIL >> /tmp/event_handler.log #Generating password, login, database name and database user name echo “installing WordPress version $LATEST_VER package ID $LATEST_PACKAGE_ID for domain ${NEW_DOMAIN_NAME}” >> /tmp/event_handler.log echo “generating secure password” >> /tmp/event_handler.log PASSWD=`genpass 8`_ #echo “Password $PASSWD” >> /tmp/event_handler.log echo “generating db name and db user name” >> /tmp/event_handler.log DBUSER=admin_`genpass_alphanum 6` echo “DB User $DBUSER” >> /tmp/event_handler.log DBNAME=wp_`genpass_alphanum 6` echo “DB Name $DBNAME” >> /tmp/event_handler.log # We need to generate an XML template for Plesk to provide an APS package. Each APS package has its own requirements to the template. In WP template we need to put user name, email address, password and locale – all this information will be used in WordPress instance. User can edit it later. echo “Generating template for WP” >> /tmp/event_handler.log echo “<?xml version=\”1.0\”?> <settings> <setting> <name>admin_email</name> <value>$EMAIL</value> </setting> <setting> <name>admin_name</name> <value>$NEW_SYSTEM_USER</value> </setting> <setting> <name>admin_password</name> <value>$PASSWD</value> </setting> <setting> <name>locale</name> <value>en-US</value> </setting> <setting> <name>title</name> <value>WordPress</value> </setting> </settings>” > /tmp/template1.xml #now ready to install WordPress instance. First let’s log command to execute echo “plesk bin aps –install “/tmp/template1.xml” -package-id $LATEST_PACKAGE_ID -domain ${NEW_DOMAIN_NAME} -ssl false -url-prefix wordpress -db-name $DBNAME -db-user $DBUSER -passwd \”$PASSWD\” ” >> /tmp/event_handler.log #and fire it for real plesk bin aps –install “/tmp/template1.xml” -package-id $LATEST_PACKAGE_ID -domain ${NEW_DOMAIN_NAME} -ssl false -url-prefix wordpress -db-name $DBNAME -db-user $DBUSER -passwd “$PASSWD” >> /tmp/event_handler.log 2>&1 #you might want to remove logging in the above line, as APS package installation produces a lot of output. echo “Finished installing WordPress for domain ${NEW_DOMAIN_NAME}” >> /tmp/event_handler.log echo “Notifying user of successful installation” >> /tmp/event_handler.log #Optional email notification sent out to the domain owner. Make sure your Plesk has correct FQDN and DNS is setup properly. mail -s “Your WordPress is ready” “$EMAIL” <<EOF Hello, $USER. Your WordPress installation is ready. To access it, open ${NEW_DOMAIN_NAME}/wordpress Login: $NEW_SYSTEM_USER Password: $PASSWD EOF rm /tmp/template1.xml –f #If plan name is not our target plan, skipping the installation else echo “${NEW_DOMAIN_NAME} does not need WP installation” >> /tmp/event_handler.log fi echo “————–” >> /tmp/event_handler.log |
این اسکریپت چگونه کار می کند؟
در پلن وردپرس، یک اشتراک ایجاد کنید.
باید ببینید، Instance وردپرس فراهم شده است یا خیر. همانطور که مشاهده می کنید نصب نسخه جدید وردپرس بدون هیچ خطایی انجام شده است. این موضوع نشان می دهد که آخرین نسخه از آن به خوبی نصب و فعال است.