خانه / فناوری / خودکارسازی نصب وردپرس با پلسک
خودکارسازی نصب وردپرس با پلسک

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

بی شک شما نیز در مورد نحوه نصب سریع وردپرس با پلسک اطلاعاتی دارید.  به عنوان متخصص هاستینگ، می توانید این اطلاعات را در اختیار مشتریان خود نیز قرار دهید.در این مقاله قصد داریم خودکارسازی نصب وردپرس در پلسک را با هم مرور کنیم. پس همراه وب ایده باشید.

  با استفاده از چند کلیک ساده امکان نصب وردپرس فراهم می شود:

  1. بر روی گزینه وردپرس(WordPress) در منوی Featured applications کلیک کنید.

1

  1. روی گزینه نصب(install) کلیک نمایید.

2

همانطور که مشاهده کردید این کار تنها با چند کلیک ساده انجام می شود. اما اگر بخواهید این فرآیند را خودکار کنید باید به فکر روش دیگری باشید. در این مقاله قصد داریم به همین موضوع بپردازیم. فقط به خاطر داشته باشید که این شیوه در پلسک ۱۲٫۵ تست شده است اما با Plesk Onyx نیز سازگار است.

چگونه نصب وردپرس برای دامنه های جدید را خودکار سازیم؟

زمانی که دامنه جدید توسط پلسک فراهم می شود باید یک محرک داشته باشیم. به عنوان یک محرک از کنترل کننده رویداد(event handler) استفاده می کنیم. (این پست را مشاهده کنید). در پارامترهای موجود در کنترل کننده رویداد  باید اسکریپتی قرار داده شود. این اسکریپت با permission روت اجرا می شود. خوب فرض کنید که نام اسکرپیت domain-created.sh است:

4-768x289

 در یک سناریوی عمومی ممکن است نخواهیم  وردپرس را در هر دامنه جدید به کار ببندیم.  ساده ترین روش برای اینکه بتوانیم تعیین کنیم چه دامنه ای به وردپرس نیاز دارد ؛ می توانیم دو پلن جداگانه ایجاد کنیم.  فرض کنید دامنه ای که وردپرس در آن فعال است، WordPress auto  نام دارد. شما می توانید پایگاه داده را محدود کنید زیرا  معمولا به بیش از یک پایگاه داده نیاز نخواهید داشت.

خوب حالا اجازه دهید اسکریپت مورد نظر را با هم مورد بررسی قرار دهیم. فقط به خاطر داشته باشید که اگرچه اسکریپت زیر تست شده و کارایی آن مورد تایید است اما نمی توان مطمئن بود که در سرور و سیستم  عامل های دیگر همین کارایی را داشته باشد. به همین خاطر بدون تست، آنالیز و بررسی شرایط نمی توان از آن استفاده کرد.  به عنوان مثال ذخیره کردن پسورد به شکل آشکار(plaintext) در فایل کنترل کننده می تواند دردسرساز باشد.

۱

۲

۳

۴

۵

۶

۷

۸

۹

۱۰

۱۱

۱۲

۱۳

۱۴

۱۵

۱۶

۱۷

۱۸

۱۹

۲۰

۲۱

۲۲

۲۳

۲۴

۲۵

۲۶

۲۷

۲۸

۲۹

۳۰

۳۱

۳۲

۳۳

۳۴

۳۵

۳۶

۳۷

۳۸

۳۹

۴۰

۴۱

۴۲

۴۳

۴۴

۴۵

۴۶

۴۷

۴۸

۴۹

۵۰

۵۱

۵۲

۵۳

۵۴

۵۵

۵۶

۵۷

۵۸

۵۹

۶۰

۶۱

۶۲

۶۳

۶۴

۶۵

۶۶

۶۷

۶۸

۶۹

۷۰

۷۱

۷۲

۷۳

۷۴

۷۵

۷۶

۷۷

۷۸

۷۹

۸۰

۸۱

۸۲

۸۳

۸۴

۸۵

۸۶

۸۷

۸۸

۸۹

۹۰

۹۱

۹۲

۹۳

۹۴

۹۵

۹۶

۹۷

۹۸

۹۹

۱۰۰

۱۰۱

۱۰۲

۱۰۳

۱۰۴

۱۰۵

۱۰۶

۱۰۷

۱۰۸

۱۰۹

۱۱۰

۱۱۱

۱۱۲

۱۱۳

/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

این اسکریپت چگونه کار می کند؟

در پلن وردپرس، یک اشتراک ایجاد کنید.

5

باید ببینید، Instance وردپرس فراهم شده است یا خیر. همانطور که مشاهده می کنید نصب نسخه جدید وردپرس بدون هیچ خطایی انجام شده است. این موضوع نشان می دهد که آخرین نسخه از آن به خوبی  نصب و فعال است.

6

منبع

جوابی بنویسید

ایمیل شما نشر نخواهد شدخانه های ضروری نشانه گذاری شده است. *

*