Gradul in care DirectAdmin poate fi personalizat este nelimitat. Cei care doresc sa dezvolte un mediu de gazduire in propriul stil si functionalitati ar trebui sa ia in considerare utilizarea DirectAdmin ca fundament. Cu acesta, posibilitatile sunt numeroase, de la stilul personalizat la temele custom, la inregistrari specifice DNS implicite sau sabloane de fisiere personalizate.
Scopul acestui articol este a explora hook-urile pre- si post- in DirectAdmin, utilizate pentru a efectua actiunile dorite în urma evenimentelor specificate. Vom folosi un post hook al crearii contului pentru a instala și configura automat WordPress pentru domeniile adăugate prin intermediul panoului.
Cum functioneaza
Iata care sunt pasii:
1. Scrieti script-ul si salvati-l cu numele hook-ului pre sau post pe care doriti sa il utilizati
2. Plasati scriptul in /usr/local/directadmin/scripts/custom/
3. chmod 700
4. chown diradmin.diradmin
In ceea ce priveste denumirea scriptului, trebuie sa il denumiti pentru hook-ul pe care doriti sa-l utilizati. Iată câteva exemple preluate din fișierul /usr/local/directadmin/scripts/custom/README, deși există multe alte hook-uri disponibile:
| domain_create_pre.sh | Se executa INAINTE de a fi creat un domeniu |
| domain_create_post.sh | Se executa DUPA crearea domeniului |
| domain_destroy_pre.sh | Se executa INAINTE de a inlatura un domeniu |
| domain_destroy_post.sh | Se executa DUPA inlaturarea domeniului |
| domain_change_pre.sh | Se executa INAINTE de redenumirea domeniului. O valoare non-zero va anula modificarea. |
| domain_change_post.sh | Se executa DUPA redenumirea domeniului. |
| subdomain_create_pre.sh | Se executa INAINTE de crearea unui subdomeniu, dar dupa ce este confirmat. Daca scriptul returneaza o valoare non-zero, crearea este anulata. |
| subdomain_create_post.sh | Se executa DUPA crearea subdomeniului. |
| subdomain_destroy_pre.sh | Se executa INAINTE de inlaturarea unui subdomeniu. Daca scriptul returneaza o valoare non-zero, inlaturarea este anulata. |
| subdomain_destroy_post.sh | Se executa DUPA inlaturarea subdomeniului. |
| user_create_pre.sh | Se executa INAINTE de crearea unui utilizator, dar dupa ce este confirmat. Daca scriptul returneaza altceva decat zero, crearea este anulata. |
| user_create_post.sh | Se executa DUPA crearea utilizatorului. |
| user_destroy_pre.sh | Se executa INAINTE de inlaturarea unui utilizator. Daca scriptul returneaza altceva decat zero, inlaturarea este anulata. |
| user_destroy_post.sh | Se executa DUPA inlaturarea utilizatorului. |
| user_modify_post.sh | Se executa DUPA modificarea utilizatorului. |
| email_create_pre.sh | Se executa INAINTE de crearea emailului virtual, dar dupa ce este confirmat. Daca scriptul returneaza altceva decat zero, crearea este anulata. |
| email_create_post.sh | Se executa DUPA crearea emailului. |
| email_destroy_pre.sh | Se executa DUPA stergerea contului de email virtual. |
| email_change_pass_post.sh | Se executa INAINTE de a fi modificata o parola virtuala a contului pop. Daca scriptul returneaza altceva decat zero, modificarea este anulata. |
| email_change_pass_post.sh | Se executa DUPA modificarea unei parole virtuale a contului pop. |
| dns_write_post.sh | Se executa DUPA scrierea unei zone DNS (/var/named/domain.com.db) |
| database_create_post.sh | Se executa DUPA crearea unei baze de date. |
| database_user_create_post.sh | Se executa DUPA crearea unui utilizator pentru o baza de date. |
| domain_pointer_destroy_pre.sh | Se executa INAINTE de inlaturarea unui domain pointer |
| domain_pointer_destroy_post.sh | Se executa DUPA de inlaturarea unui domain pointer |
Instalarea WordPress pentru fiecare domeniu creat prin DirectAdmin
Vom continua cu pasii amintiti mai sus dar folosind ca exemplu instalarea WP-CLI WordPress la crearea contului. În primul rând, trebuie să scrieți scriptul pe care doriți să-l rulați la crearea domeniului. Rețineți că acest script folosește WP-CLI, deci trebuie instalat pe serverul dvs. la /usr/local/bin/wp pentru a putea folosi scriptul.
PASUL 1 Scrieti script-ul si salvati-l cu numele hook-ului pre sau post pe care doriti sa il utilizati
Dacă ne uitam la README-ul localizat in /usr/local/directadmin/scripts/custom/, acesta ne arata ce variabile de mediu ne sunt disponibile.
#!/bin/bash
exec 2>/usr/local/directadmin/customscripts.error.log
#set up DB variables
dbpass=$(openssl rand -hex 6) > /dev/null
ext=$(openssl rand -hex 2) > /dev/null
dbuser="wp${ext}" # do not include the username_ for dataskq here as DA adds this
wpconfigdbuser="${username}_wp${ext}"
wpadminpass=$(openssl rand -hex 6) > /dev/null
# install wp
if [ -f /home/$username/domains/$domain/public_html/index.php ]; then
echo "WARNING: There appears to be an index file already located in this directory, which indicates that an installation is already present! Empty the directory before running the script again."
exit
else
#Disable DAs index.html file
if [ -f /home/$username/domains/$domain/public_html/index.html ]; then
mv /home/$username/domains/$domain/public_html/index.html{,.bak}
fi
#Create DB
/usr/bin/mysqladmin -uda_admin -p$(cat /usr/local/directadmin/conf/mysql.conf | grep pass | cut -d\= -f2 ) create ${wpconfigdbuser};
echo "CREATE USER ${wpconfigdbuser} IDENTIFIED BY '${dbpass}';" | mysql -uda_admin -p$(cat /usr/local/directadmin/conf/mysql.conf | grep pass | cut -d\= -f2 );
echo "GRANT ALL PRIVILEGES ON ${wpconfigdbuser}.* TO ${wpconfigdbuser} IDENTIFIED BY '${dbpass}';" | mysql -uda_admin -p$(cat /usr/local/directadmin/conf/mysql.conf | grep pass | cut -d\= -f2);
#Download WP
cd /home/$username/domains/$domain/public_html/
su -c "/usr/local/bin/wp core download" $username
#set database details in the config file
su -c "/usr/local/bin/wp config create --dbname=$wpconfigdbuser --dbuser=$wpconfigdbuser --dbpass=$dbpass --dbhost=localhost" $username
#Make symlinks for https and configure wp-config.php and rewrite rules
if [[ $ssl == 'ON' ]]; then
su -c "/usr/local/bin/wp core install --url=https://$domain/ --admin_user=admin --admin_password=$wpadminpass --title= --admin_email=admin@$domain " $username
su -c "/usr/local/bin/wp rewrite structure '/%postname%/'" $username
printf "\n\nADMIN LOGIN CREDENTIALS:\nURL:https://$domain/wp-admin/\nUSERNAME:admin\nPASSWORD:$wpadminpass\n\n"
if [[ ! -h /home/$username/domains/$domain/private_html ]]; then
echo "Making a symlink for https..."
cd /home/$username/domains/$domain/
rm -rf private_html
su -c "ln -s public_html private_html" $username
fi
else
su -c "/usr/local/bin/wp core install --url=http://$domain/ --admin_user=admin --admin_password=$wpadminpass --title= --admin_email=admin@$domain " $username
su -c "/usr/local/bin/wp rewrite structure '/%postname%/'" $username
printf "\n\nADMIN LOGIN CREDENTIALS:\nURL:http://$domain/wp-admin/\nUSERNAME:admin\nPASSWORD:$wpadminpass\n\n"
fi
#Create .htaccess
cat << EOF > /home/$username/domains/$domain/public_html/.htaccess
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
EOF
chown $username. /home/$username/domains/$domain/public_html/.htaccess
fi
PASUL 2. Plasati scriptul in /usr/local/directadmin/scripts/custom/
Scriptul va trebui să fie plasat in directorul de scripturi custom al DirectAdmin pentru a-l gasi. Va trebui să fiți autentificat ca utilizator cu drepturi de root prin consola SSH pentru a accesa acest director.
PASUL 3 & 4 Faceti scriptul executabil si accesibil in DirectAdmin:
chmod 700 /usr/local/directadmin/scripts/custom/domain_create_post.sh
chown diradmin.diradmin /usr/local/directadmin/scripts/custom/domain_create_post.sh
Va puteți acum autentifica in DirectAdmin si sa creati un domeniu de test.
Lasați un anumit timp ca DirectAdmin sa proceseze lista de sarcini, apoi accesati URL-ul și conectați-vă folosind datele de autentificare furnizate.
Puteti verifica acest log pentru a vedea daca au aparut erori fatale la rularea scriptului. De asemenea, poate fi necesar să asteoptati pana la 2 minute înainte de a încerca să accesați pagina dvs. de autentificare cu drepturi de admin in WordPress, deoarece DirectAdmin poate necesita până la un minut pentru a procesa sarcinile în așteptare.
Acest script va trebui rescris pentru subdomenii dacă doriți ca WordPress să fie instalat și la crearea subdomeniilor. Scriptul va fi rescris folosind path-urile corespunzatoare si va fi denumit „subdomain_create_post.sh”.
Iata scriptul rescris aici, insa cu cateva considerente. In primul rând, nu există nicio variabilă de mediu SSL care să verifice dacă SSL este sau nu acceptat. Deoarece este cel mai bine să se utilizeze https și datorită ușurinței și disponibilității SSL-urilor gratuite datorită Let’s Encrypt, vom presupune că SSL este activat pentru utilizator.
#!/bin/bash
exec 2>/usr/local/directadmin/customscripts.error.log
#set up DB variables
dbpass=$(openssl rand -hex 6) > /dev/null
ext=$(openssl rand -hex 2) > /dev/null
dbuser="wp${ext}" # do not include the username_ for dataskq here as DA adds this
wpconfigdbuser="${username}_wp${ext}"
wpadminpass=$(openssl rand -hex 6) > /dev/null
# install wp
if [ -f /home/$username/domains/$domain/public_html/$subdomain/index.php ]; then
echo "WARNING: There appears to be an index file already located in this directory, which indicates that an installation is already present! Empty the directory before running the script again."
exit
else
#Disable DAs index.html file
if [ -f /home/$username/domains/$domain/public_html/$subdomain/index.html ]; then
mv /home/$username/domains/$domain/public_html/$subdomain/index.html{,.bak}
fi
#Create DB
/usr/bin/mysqladmin -uda_admin -p$(cat /usr/local/directadmin/conf/mysql.conf | grep pass | cut -d\= -f2 ) create ${wpconfigdbuser};
echo "CREATE USER ${wpconfigdbuser} IDENTIFIED BY '${dbpass}';" | mysql -uda_admin -p$(cat /usr/local/directadmin/conf/mysql.conf | grep pass | cut -d\= -f2 );
echo "GRANT ALL PRIVILEGES ON ${wpconfigdbuser}.* TO ${wpconfigdbuser} IDENTIFIED BY '${dbpass}';" | mysql -uda_admin -p$(cat /usr/local/directadmin/conf/mysql.conf | grep pass | cut -d\= -f2);
#Download WP
cd /home/$username/domains/$domain/public_html/$subdomain/
su -c "/usr/local/bin/wp core download" $username
#set database details in the config file
su -c "/usr/local/bin/wp config create --dbname=$wpconfigdbuser --dbuser=$wpconfigdbuser --dbpass=$dbpass --dbhost=localhost" $username
su -c "/usr/local/bin/wp core install --url=https://$subdomain.$domain/ --admin_user=admin --admin_password=$wpadminpass --title= --admin_email=$username@$domain " $username
su -c "/usr/local/bin/wp rewrite structure '/%postname%/'" $username
printf "\n\nADMIN LOGIN CREDENTIALS:\nURL:https://$subdomain.$domain/wp-admin/\nUSERNAME:admin\nPASSWORD:$wpadminpass\n\n"
#Create .htaccess
cat << EOF > /home/$username/domains/$domain/public_html/$subdomain/.htaccess
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
EOF
chown $username. /home/$username/domains/$domain/public_html/$subdomain/.htaccess
fi
Descărcați scriptul în /usr/local/directadmin/scripts/custom/ și asigurați-vă că este denumit în mod corespunzător ‘subdomain_create_post.sh’, apoi faceți următoarele:
chmod 700 /usr/local/directadmin/scripts/custom/subdomain_create_post.sh
chown diradmin.diradmin /usr/local/directadmin/scripts/custom/subdomain_create_post.sh
Apoi puteti testa!
Hook-uri disponibile
Hook-urile sunt adaugate in mod constant la DirectAdmin. Cea mai buna modalitate de a verifica hook-urile de care aveti nevoie este verificand sistemul de versiuni al DirectAdmin.
Pentru a găsi exemple, puteti consulta numeroasele articole de help care utilizeaza hook-uri.
Daca intampinati probleme in aplicarea instructiunilor de mai sus va rugam sa ne contactati. HostX ofera cele mai rapide servere VPS KVM si va poate oferi asistenta specializata in administrarea DirectAdmin.