Advertisement
Guest User

Untitled

a guest
Apr 1st, 2016
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 9.10 KB | None | 0 0
  1. #!/bin/bash
  2. mage2install()
  3. {
  4.  
  5. if [ $(echo mysql --version | grep 5.6 | wc -l)  == 0 ]; then
  6.         echo "Insufficient MySQL Version"
  7.         exit 1
  8. fi
  9.  
  10. if [ $(stat /etc/php-fpm.d/ | wc -l) == 0 ]; then
  11.         echo "Non php-fpm server!"
  12.         exit 1
  13. if
  14.  
  15.  
  16. #help dialog
  17. HELP='mage2_install \n
  18. Usage: \n
  19. mage2_install [opts] PATH : Install with default values. \n
  20. Supported Flags -- \n
  21. -n "..." Admin username (default: admin) \n
  22. -p "..." Admin password (default: random len12) \n
  23. -d "..." Database name (default: mage2) \n
  24. -o "..." Database user name (default: mage2) \n
  25. -P "..." Database user pass (default: random 12) \n
  26. -b "..." Base URL (grabbed from PWD) \n
  27. -B "..." Backend URL (default random 6_admin) \n
  28. -F "..." Admin user first name (default: SW Email) \n
  29. -L "..." Admin user last name (default: NULL) \n
  30. -E "..." Admin user email (default: grabbed from SW) \n ';
  31.  
  32. #check for help flag
  33. if [ getopts h storage ]; then
  34.         echo $HELP;
  35. fi
  36.  
  37. #parse flags
  38. usr=pass=dbn=dbu=dbp=burl=aurl=fn=ln=email=0;
  39. while getopts "n:p:d:o:b:B:F:L:E:" storage; do
  40.         case "$storage" in
  41.                 "n")
  42.                         name=1
  43.                         ADMIN_USR=$OPTARG
  44.                         ;;
  45.                 "p")
  46.                         pass=1
  47.                         ADMIN_PASS=$OPTARG
  48.                         ;;
  49.                 "d")
  50.                         dbn=1
  51.                         DB_NAME=$OPTARG
  52.                         ;;
  53.                 "o")
  54.                         dbu=1
  55.                         DB_USR=$OPTARG
  56.                         ;;
  57.                 "P")
  58.                         dbp=1
  59.                         DB_PASS=$OPTARG
  60.                         ;;
  61.                 "b")
  62.                         burl=1
  63.                         BASE_URL=$OPTARG
  64.                         ;;
  65.                 "B")
  66.                         aurl=1
  67.                         ADMIN_URL=$OPTARG
  68.                         ;;
  69.                 "F")
  70.                         fname=1
  71.                         FNAME=$OPTARG
  72.                         ;;
  73.                 "L")
  74.                         lname=1
  75.                         LNAME=$OPTARG
  76.                         ;;
  77.                 "E")
  78.                         email=1
  79.                         EMAIL=$OPTARG
  80.                         ;;
  81.                 *)
  82.                         exit -1
  83.         esac
  84. done
  85.  
  86. #check if user can access dir...
  87. UNIXUSR=` echo $PWD | awk -F"/chroot/home/|/home/" '{ print $2 }' | awk -F"/" '{ print $1 }' `
  88. if [ `whichphp $UNIXUSR | grep -E "55|56" | wc -l` == 0 ]; then
  89.         echo "Invalid PHP version!"
  90.         exit 1
  91. fi
  92.  
  93. #has to be 55 or 56...
  94. if [ `whichphp $UNIXUSR | grep "55"` != 0 ]; then
  95.         phpv=php55
  96. else
  97.         phpv=php56
  98. fi
  99.  
  100. sw_email=`sudo -u $UNIXUSR siteworx -u --controller Overview --action listAccountDetails | grep email | awk '{print $2}'`
  101. primary=`sudo -u $UNIXUSR siteworx -u --controller Overview --action listAccountDetails | grep master | awk '{print $2}'`
  102.  
  103. #working directory
  104. work_dir="${@: -1}"
  105. if [ `sudo -u $UNIXUSR touch $work_dir` != 1 ]; then
  106.         echo "Invalid installation directory!"
  107.         exit 1
  108. fi
  109.  
  110. #password
  111. if [ $pass==0 ]; then
  112.         ADMIN_PWD=`mkpasswd -l 12 -C 4 -c 2 -d 4 -s 0`
  113. fi
  114.  
  115. #admin user
  116. if [ $usr==0 ]; then
  117.         ADMIN_USR="admin"
  118. fi
  119.  
  120. #base url
  121. if [ $burl==0 ]; then
  122.         tempurl=`echo $PWD | awk -F"/chroot/home/|/home/" '{ print $2 }' | awk -F"/" '{ print $2 }' `
  123.         BASE_URL="http://$tempurl/"
  124. fi
  125.  
  126. #db user, name and user_pass
  127. if [ dbu==0 ]; then
  128.         DB_USR=$UNIXUSR"_mage2"
  129. fi
  130. if [ dbn==0 ]; then
  131.         DB_NAME=$UNIXUSR"_mage2"
  132. fi
  133. if [ dbp==0 ]; then
  134.         DB_PASS=`mkpasswd -l 12 -C 2 -c 2 -d 2 -s 0`
  135. fi
  136.  
  137. #user info
  138. if [ fname==0 ]; then
  139.         FNAME=$sw_email
  140. fi
  141. if [ lname==0 ]; then
  142.         LNAME="NULL"
  143. fi
  144. if [ email==0 ]; then
  145.         EMAIL=$sw_email
  146. fi
  147.  
  148. #backend name
  149. if [ aurl==0 ]; then
  150.         BACKEND=`mkpasswd -l 6 -C 2 -c 2 -d 2 -s 0`"_admin"
  151. fi
  152.  
  153. #make the db
  154. sudo -u "$UNIXUSR" siteworx -u -n --login_domain="$primary" --controller MysqlDb --action add --name="$DB_NAME"
  155.  
  156. #check because interworx returns 0 always :(
  157. ret=`sudo -u "$UNIXUSR" siteworx -u -n --login_domain="$primary" --controller MysqlDB --action list | grep "$DB_NAME" | wc -l`
  158. if [ ret==0 ]; then
  159.         echo "Failed to create database!"
  160.         exit 1
  161. fi
  162.  
  163. #do it again for the user
  164. return=`sudo -u "$UNIXUSR" siteworx -u -n --login_domain="$primary" --controller MysqlUser --action add --name="$DB_NAME" --password="$DB_PASS" --confirm_password="$DB_PASS" `
  165. ret=`sudo -u "$UNIXUSR" siteworx -u -n --login_domain="$primary" --controller MysqlUser --action list | grep "$DB_USR" | wc -l`
  166. if [ ret==0 ]; then
  167.         echo "Failed to add db user!"
  168.         exit 1
  169. fi
  170.  
  171. #permissions
  172. sudo -u $UNIXUSR -u -n --login_domain=$primary --controller MysqlPerms --action add --name $DB_NAME --user $DB_USR
  173. ret=`sudo -u "$UNIXUSR" siteworx -u -n --login_domain="$primary" --controller MysqlPerms --action queryDatabaseUserPerms --name "$DB_NAME" | grep "$DB_USR" | wc -l`
  174. if[ ret==0 ]; then
  175.         echo "Failed to assign user permissions!"
  176.         exit 1
  177. fi
  178.  
  179. echo -e "Installation details -- \n
  180. Working Directory: $work_dir \n
  181. Frontend URL: $BASE_URL \n
  182. Backend URL: $ADMIN_URL \n
  183. Backend User: $ADMIN_USR \n
  184. Backend Password: $ADMIN_PASS \n
  185. Database: $DB_NAME \n
  186. DB User: $DB_USER \n
  187. DB Pass: $DB_PASS \n
  188. Version: Latest"
  189. echo "Proceed with installation? [Y/n]"
  190. read user_in
  191.  
  192. if [ "$user_in" != "y" ] && [ "$user_in" != "Y" ] && ![ -z "$user_in" ]; then
  193.         echo "Terminating install process. Database information may have been created and needs to removed before attempting again."
  194.         exit 1
  195. fi
  196.  
  197. if [ "$phpv"=="php55" ]; then
  198.         /opt/nexcess/php55u/root/usr/bin/php -d memory_limit=1024M bin/magento setup:install \
  199.         --base-url=$BASE_URL \
  200.         --db-host=127.0.0.1 \
  201.         --db-name=$DB_NAME \
  202.         --db-user=$DB_USR \
  203.         --db-password=$DB_PWD \
  204.         --admin-firstname=$FNAME \
  205.         --admin-lastname=$LNAME \
  206.         --admin-email=$EMAIL \
  207.         --admin-user=$ADMIN_USR \
  208.         --admin-password=$ADMIN_PWD \
  209.         --use-rewrites=1 \
  210.         --language=en_US \
  211.         --currency=USD \
  212.         --timezone=America/New_York \
  213.         --backend-front-name=$ADMIN_URL ; \
  214. else
  215.         /opt/nexcess/php56u/root/usr/bin/php -d memory_limit=1024M bin/magento setup:install \
  216.         --base-url=$BASE_URL \
  217.         --db-host=127.0.0.1 \
  218.         --db-name=$DB_NAME \
  219.         --db-user=$DB_USR \
  220.         --db-password=$DB_PWD \
  221.         --admin-firstname=$FNAME \
  222.         --admin-lastname=$LNAME \
  223.         --admin-email=$EMAIL \
  224.         --admin-user=$ADMIN_USR \
  225.         --admin-password=$ADMIN_PWD \
  226.         --use-rewrites=1 \
  227.         --language=en_US \
  228.         --currency=USD \
  229.         --timezone=America/New_York \
  230.         --backend-front-name=$ADMIN_URL ; \
  231. fi
  232.  
  233. echo "Applying permissions fix..."
  234. sed -i 's/0770/0775/' $work_dir"vendor/magento/framework/Filesystem/DriverInterface.php"
  235.  
  236. echo "Installation completed!"
  237. echo "Frontend: $BASE_URL"
  238. echo "Backend: $BASE_URL$BACKEND"
  239. echo "User: $ADMIN_USR"
  240. echo "Password: $ADMIN_PWD"
  241.  
  242. exit 0;
  243.  
  244. }
  245.  
  246. #corlando's whichphp script
  247. whichphp ()
  248. {
  249.     phpregex="php[0-9][0-9]";
  250.     if [[ -z "$1" ]]; then
  251.         printf "No argument given; 1st argument must be a shell user\n";
  252.     else
  253.         if ! id -u "$1" > /dev/null 2>&1; then
  254.             printf "User $1 doesn't exist.\n";
  255.         else
  256.             shelluser="$1";
  257.             if [[ ! -e "/var/spool/cron/${shelluser}" ]]; then
  258.                 printf "%s - %s\n" "cron: php53" "No crontab found.";
  259.             else
  260.                 if ! grep -qoP "$phpregex" "/var/spool/cron/${shelluser}"; then
  261.                     printf "%s - %s\n" "cron: php53" "No php entry found in crontab.";
  262.                 else
  263.                     phpcronversion=$(grep -oP "$phpregex" "/var/spool/cron/${shelluser}" | head -n1);
  264.                     printf "%s %s\n" "cron:" "$phpcronversion";
  265.                 fi;
  266.             fi;
  267.             if [[ ! -e "/home/${shelluser}/.bashrc" ]]; then
  268.                 printf "%s - %s\n" "cli: php53" "No bashrc found.";
  269.             else
  270.                 if ! grep -qoP "$phpregex" "/home/${shelluser}/.bashrc"; then
  271.                     printf "%s - %s\n" "cli: php53" "No PHP entry in bashrc found.";
  272.                 else
  273.                     phpcliversion=$(grep -oP "$phpregex" "/home/${shelluser}/.bashrc");
  274.                     printf "%s %s\n" "cli:" "$phpcliversion";
  275.                 fi;
  276.             fi;
  277.             for i in /opt/nexcess/php*u/root/etc/php-fpm.d/${shelluser}.conf;
  278.             do
  279.                 if [[ -e $i ]] && [[ -s $i ]] && grep -qvP "^;" $i; then
  280.                     phpwebversion=$(echo "$i" | grep -oP "$phpregex");
  281.                     printf "%s %s\n" "web:" "$phpwebversion";
  282.                 else
  283.                     continue;
  284.                 fi;
  285.             done;
  286.             if [[ -z "$phpwebversion" ]]; then
  287.                 printf "%s - %s\n" "web: php53" "No fpm pool files in /opt.";
  288.             fi;
  289.         fi;
  290.     fi;
  291. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement