Advertisement
Guest User

Untitled

a guest
Apr 1st, 2016
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 9.57 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. fi
  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.                 "s")
  66.                         sample=1
  67.                         ;;
  68.                 "B")
  69.                         aurl=1
  70.                         ADMIN_URL=$OPTARG
  71.                         ;;
  72.                 "F")
  73.                         fname=1
  74.                         FNAME=$OPTARG
  75.                         ;;
  76.                 "L")
  77.                         lname=1
  78.                         LNAME=$OPTARG
  79.                         ;;
  80.                 "E")
  81.                         email=1
  82.                         EMAIL=$OPTARG
  83.                         ;;
  84.                 *)
  85.                         exit -1
  86.         esac
  87. done
  88.  
  89. #check if user can access dir...
  90. UNIXUSR=` echo $PWD | awk -F"/chroot/home/|/home/" '{ print $2 }' | awk -F"/" '{ print $1 }' `
  91. if [ `whichphp $UNIXUSR | grep -E "55|56" | wc -l` == 0 ]; then
  92.         echo "Invalid PHP version!"
  93.         exit 1
  94. fi
  95.  
  96. #has to be 55 or 56...
  97. if [ `whichphp $UNIXUSR | grep "55"` != 0 ]; then
  98.         phpv=php55
  99. else
  100.         phpv=php56
  101. fi
  102.  
  103. sw_email=`sudo -u $UNIXUSR siteworx -u --controller Overview --action listAccountDetails | grep email | awk '{print $2}'`
  104. primary=`sudo -u $UNIXUSR siteworx -u --controller Overview --action listAccountDetails | grep master | awk '{print $2}'`
  105.  
  106. #working directory
  107. work_dir="${@: -1}"
  108. if [ `sudo -u $UNIXUSR touch $work_dir` != 1 ]; then
  109.         echo "Invalid installation directory!"
  110.         exit 1
  111. fi
  112.  
  113. #password
  114. if [ $pass==0 ]; then
  115.         ADMIN_PWD=`mkpasswd -l 12 -C 4 -c 2 -d 4 -s 0`
  116. fi
  117.  
  118. #admin user
  119. if [ $usr==0 ]; then
  120.         ADMIN_USR="admin"
  121. fi
  122.  
  123. #base url
  124. if [ $burl==0 ]; then
  125.         tempurl=`echo $PWD | awk -F"/chroot/home/|/home/" '{ print $2 }' | awk -F"/" '{ print $2 }' `
  126.         BASE_URL="http://$tempurl/"
  127. fi
  128.  
  129. #db user, name and user_pass
  130. if [ dbu==0 ]; then
  131.         DB_USR=$UNIXUSR"_mage2"
  132. fi
  133. if [ dbn==0 ]; then
  134.         DB_NAME=$UNIXUSR"_mage2"
  135. fi
  136. if [ dbp==0 ]; then
  137.         DB_PASS=`mkpasswd -l 12 -C 2 -c 2 -d 2 -s 0`
  138. fi
  139.  
  140. #user info
  141. if [ fname==0 ]; then
  142.         FNAME=$sw_email
  143. fi
  144. if [ lname==0 ]; then
  145.         LNAME="NULL"
  146. fi
  147. if [ email==0 ]; then
  148.         EMAIL=$sw_email
  149. fi
  150.  
  151. #backend name
  152. if [ aurl==0 ]; then
  153.         BACKEND=`mkpasswd -l 6 -C 2 -c 2 -d 2 -s 0`"_admin"
  154. fi
  155.  
  156. #make the db
  157. sudo -u "$UNIXUSR" siteworx -u -n --login_domain="$primary" --controller MysqlDb --action add --name="$DB_NAME"
  158.  
  159. #check because interworx returns 0 always :(
  160. ret=`sudo -u "$UNIXUSR" siteworx -u -n --login_domain="$primary" --controller MysqlDB --action list | grep "$DB_NAME" | wc -l`
  161. if [ ret==0 ]; then
  162.         echo "Failed to create database!"
  163.         exit 1
  164. fi
  165.  
  166. #do it again for the user
  167. return=`sudo -u "$UNIXUSR" siteworx -u -n --login_domain="$primary" --controller MysqlUser --action add --name="$DB_NAME" --password="$DB_PASS" --confirm_password="$DB_PASS" `
  168. ret=`sudo -u "$UNIXUSR" siteworx -u -n --login_domain="$primary" --controller MysqlUser --action list | grep "$DB_USR" | wc -l`
  169. if [ ret==0 ]; then
  170.         echo "Failed to add db user!"
  171.         exit 1
  172. fi
  173.  
  174. #permissions
  175. sudo -u $UNIXUSR -u -n --login_domain=$primary --controller MysqlPerms --action add --name $DB_NAME --user $DB_USR
  176. ret=`sudo -u "$UNIXUSR" siteworx -u -n --login_domain="$primary" --controller MysqlPerms --action queryDatabaseUserPerms --name "$DB_NAME" | grep "$DB_USR" | wc -l`
  177. if [ ret==0 ]; then
  178.         echo "Failed to assign user permissions!"
  179.         exit 1
  180. fi
  181.  
  182. echo -e "Installation details -- \n
  183. Working Directory: $work_dir \n
  184. Frontend URL: $BASE_URL \n
  185. Backend URL: $ADMIN_URL \n
  186. Backend User: $ADMIN_USR \n
  187. Backend Password: $ADMIN_PASS \n
  188. Database: $DB_NAME \n
  189. DB User: $DB_USER \n
  190. DB Pass: $DB_PASS \n
  191. Version: Latest"
  192. echo "Proceed with installation? [Y/n]"
  193. read user_in
  194.  
  195. if [ "$user_in" != "y" ] && [ "$user_in" != "Y" ] && ![ -z "$user_in" ]; then
  196.         echo "Terminating install process. Database information may have been created and needs to removed before attempting again."
  197.         exit 1
  198. fi
  199.  
  200. echo "Downloading Magento installation package..."
  201. if [ sample==1 ]; then
  202.     wget http://pubfiles.nexcess.net/magento/ce-packages/magento2-latest-with-samples.tar.gz -o "$work_dir/magento2.tar.gz"
  203. else
  204.     curl http://pubfiles.nexcess.net/magento/ce-packages/magento2-latest.tar.gz -o "$work_dir/magento2.tar.gz"
  205. fi
  206. tar zxf "$work_dir/magento2.tar.gz"
  207. echo "Finished acquiring installation package."
  208. echo "Running installer now."
  209.  
  210. if [ "$phpv"=="php55" ]; then
  211.         /opt/nexcess/php55u/root/usr/bin/php -d memory_limit=1024M bin/magento setup:install \
  212.         --base-url=$BASE_URL \
  213.         --db-host=127.0.0.1 \
  214.         --db-name=$DB_NAME \
  215.         --db-user=$DB_USR \
  216.         --db-password=$DB_PWD \
  217.         --admin-firstname=$FNAME \
  218.         --admin-lastname=$LNAME \
  219.         --admin-email=$EMAIL \
  220.         --admin-user=$ADMIN_USR \
  221.         --admin-password=$ADMIN_PWD \
  222.         --use-rewrites=1 \
  223.         --language=en_US \
  224.         --currency=USD \
  225.         --timezone=America/New_York \
  226.         --backend-front-name=$ADMIN_URL ; \
  227. else
  228.         /opt/nexcess/php56u/root/usr/bin/php -d memory_limit=1024M bin/magento setup:install \
  229.         --base-url=$BASE_URL \
  230.         --db-host=127.0.0.1 \
  231.         --db-name=$DB_NAME \
  232.         --db-user=$DB_USR \
  233.         --db-password=$DB_PWD \
  234.         --admin-firstname=$FNAME \
  235.         --admin-lastname=$LNAME \
  236.         --admin-email=$EMAIL \
  237.         --admin-user=$ADMIN_USR \
  238.         --admin-password=$ADMIN_PWD \
  239.         --use-rewrites=1 \
  240.         --language=en_US \
  241.         --currency=USD \
  242.         --timezone=America/New_York \
  243.         --backend-front-name=$ADMIN_URL ; \
  244. fi
  245.  
  246. echo "Applying permissions fix..."
  247. sed -i 's/0770/0775/' $work_dir"vendor/magento/framework/Filesystem/DriverInterface.php"
  248.  
  249. echo "Installation completed!"
  250. echo "Frontend: $BASE_URL"
  251. echo "Backend: $BASE_URL$BACKEND"
  252. echo "User: $ADMIN_USR"
  253. echo "Password: $ADMIN_PWD"
  254.  
  255. exit 0;
  256.  
  257. }
  258.  
  259.  
  260. #corlando's whichphp script
  261. whichphp ()
  262. {
  263.     phpregex="php[0-9][0-9]";
  264.     if [[ -z "$1" ]]; then
  265.         printf "No argument given; 1st argument must be a shell user\n";
  266.     else
  267.         if ! id -u "$1" > /dev/null 2>&1; then
  268.             printf "User $1 doesn't exist.\n";
  269.         else
  270.             shelluser="$1";
  271.             if [[ ! -e "/var/spool/cron/${shelluser}" ]]; then
  272.                 printf "%s - %s\n" "cron: php53" "No crontab found.";
  273.             else
  274.                 if ! grep -qoP "$phpregex" "/var/spool/cron/${shelluser}"; then
  275.                     printf "%s - %s\n" "cron: php53" "No php entry found in crontab.";
  276.                 else
  277.                     phpcronversion=$(grep -oP "$phpregex" "/var/spool/cron/${shelluser}" | head -n1);
  278.                     printf "%s %s\n" "cron:" "$phpcronversion";
  279.                 fi;
  280.             fi;
  281.             if [[ ! -e "/home/${shelluser}/.bashrc" ]]; then
  282.                 printf "%s - %s\n" "cli: php53" "No bashrc found.";
  283.             else
  284.                 if ! grep -qoP "$phpregex" "/home/${shelluser}/.bashrc"; then
  285.                     printf "%s - %s\n" "cli: php53" "No PHP entry in bashrc found.";
  286.                 else
  287.                     phpcliversion=$(grep -oP "$phpregex" "/home/${shelluser}/.bashrc");
  288.                     printf "%s %s\n" "cli:" "$phpcliversion";
  289.                 fi;
  290.             fi;
  291.             for i in /opt/nexcess/php*u/root/etc/php-fpm.d/${shelluser}.conf;
  292.             do
  293.                 if [[ -e $i ]] && [[ -s $i ]] && grep -qvP "^;" $i; then
  294.                     phpwebversion=$(echo "$i" | grep -oP "$phpregex");
  295.                     printf "%s %s\n" "web:" "$phpwebversion";
  296.                 else
  297.                     continue;
  298.                 fi;
  299.             done;
  300.             if [[ -z "$phpwebversion" ]]; then
  301.                 printf "%s - %s\n" "web: php53" "No fpm pool files in /opt.";
  302.             fi;
  303.         fi;
  304.     fi;
  305. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement