Advertisement
Guest User

Untitled

a guest
Apr 1st, 2016
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.58 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. return 1
  8. fi
  9.  
  10. if [ $(stat /etc/php-fpm.d/ | wc -l) == 0 ]; then
  11. echo "Non php-fpm server!"
  12. return 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. return -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. return 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. return 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. return 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. return 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. return 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. return 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. return 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