Commit 2e123b647d4c86c6d5f0c996da6f40ded4832067

Authored by 小小鲁班
Committed by GitHub
1 parent b140e67b

feat(install): add one click install script for Ubuntu18.04

<en> add one click install script for Ubuntu18.04 
<zh> 添加 Ubuntu 18.04 一键安装脚本,方便用户在本地快速进行 dev 开发

docker pull ubuntu
docker run -it -p 1234:80 -p 1235:1337  -v `pwd`:/app ubuntu
wget -qO- https://raw.githubusercontent.com/ly525/luban-h5/dev/deploy/ubuntu-install.sh | bash
Showing 1 changed file with 357 additions and 0 deletions
deploy/ubuntu-install.sh 0 → 100644
  1 +#/usr/bin/env
  2 +
  3 +######################################################
  4 +# [鲁班H5] Ubuntu18.04 一键安装脚本
  5 +######################################################
  6 +
  7 +
  8 +######################################################
  9 +# [本地一键安装步骤]
  10 +# docker pull ubuntu
  11 +# docker run -it -p 1234:80 -p 1235:1337 -v `pwd`:/app ubuntu
  12 +# wget -qO- https://raw.githubusercontent.com/ly525/luban-h5/dev/deploy/ubuntu-install.sh | bash
  13 +######################################################
  14 +
  15 +######################################################
  16 +# [安装完成之后]
  17 +# 1. 鲁班后台
  18 +# 1.1 宿主机访问 [鲁班后台]:localhost:1234/admin,自定义配置账号密码,登录即可
  19 +# 1.2 配置相关权限,文档参见:https://ly525.github.io/luban-h5/zh/getting-started/quick-start.html#%E5%90%8E%E7%AB%AF%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA
  20 +
  21 +# 2. 鲁班前端
  22 +# 2.1 宿主机访问 「鲁班前端」:localhost:1234/main, 即可看到鲁班的前端了
  23 +######################################################
  24 +
  25 +######################################################
  26 +# [问题反馈]
  27 +
  28 +# GitHub:https://github.com/ly525/luban-h5
  29 +######################################################
  30 +
  31 +
  32 +#
  33 +#
  34 +
  35 +## Variables
  36 +#
  37 +
  38 +GREEN="\033[0;32m"
  39 +YELLOW="\033[0;33m"
  40 +RED="\033[0;31m"
  41 +NEUTRAL="\033[0m"
  42 +NGINX_CONFIG_DIR='/etc/nginx/'
  43 +
  44 +
  45 +#
  46 +## Displaying functions
  47 +#
  48 +
  49 +function already {
  50 + echo -e "${YELLOW}[-]$1 is already installed${NEUTRAL}"
  51 +}
  52 +
  53 +function installing {
  54 + echo -e "${GREEN}[~]Installing $1...${NEUTRAL}"
  55 +}
  56 +
  57 +function success {
  58 + echo -e "${GREEN}[+]$1 successfully installed${NEUTRAL}"
  59 +}
  60 +
  61 +function exitBanner {
  62 + echo "#"
  63 + echo "# Node.js, Strapi, PM2, MongoDB and nginx are now installed"
  64 + echo "#"
  65 +}
  66 +
  67 +function base_install {
  68 + RUN $1 &>/dev/null
  69 + if [ $? == "1" ]; then
  70 + already wget
  71 + else
  72 + installing $1
  73 + apt-get install -y $1
  74 + success $1
  75 + fi
  76 +}
  77 +
  78 +function set_apt_mirror {
  79 + # 准备工作:
  80 + # 1. 更换 ubuntu 镜像
  81 + #
  82 + # 查看 ubuntu 版本: cat /etc/issue
  83 + # 替换为清华大学镜像:https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/
  84 + # 或替换为中科大镜像:https://lug.ustc.edu.cn/wiki/mirrors/help/ubuntu
  85 + # sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
  86 + # sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
  87 + #
  88 + sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
  89 + apt update
  90 +
  91 +}
  92 +
  93 +#
  94 +## Logic
  95 +#
  96 +
  97 +# function install_wget {
  98 +# wget &>/dev/null
  99 +# if [ $? == "1" ]; then
  100 +# already wget
  101 +# else
  102 +# installing wget
  103 +# apt-get update
  104 +# apt-get install -y wget
  105 +# success wget
  106 +# fi
  107 +# }
  108 +
  109 +function install_nvm {
  110 + if [ -a $HOME/.nvm ]; then
  111 + already nvm
  112 + else
  113 + installing nvm
  114 + # -q, --quiet 安静模式(无信息输出)
  115 + # -O, --output-document=FILE 将文档写入 FILE
  116 + wget -qO- https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
  117 + export NVM_DIR=$HOME/.nvm;
  118 + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  119 + [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
  120 + # source $HOME/.nvm/nvm.sh;
  121 + # . ~/.nvm/nvm.sh;
  122 + # source ~/.bashrc
  123 + nvm --version
  124 + success nvm
  125 + fi
  126 +}
  127 +
  128 +function install_node {
  129 + node -v &>/dev/null
  130 + if [ $? == "0" ]; then
  131 + already node
  132 + else
  133 + installing node
  134 + # source $HOME/.nvm/nvm.sh;
  135 + export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node/;
  136 + # gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
  137 + export NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node/;
  138 + nvm install stable
  139 + nvm use stable
  140 + nvm alias default stable
  141 + success node
  142 + fi
  143 +}
  144 +
  145 +function install_yarn {
  146 + yarn -v &>/dev/null
  147 + if [ $? == "0" ]; then
  148 + already yarn
  149 + else
  150 + installing yarn
  151 + apt install gnupg -y
  152 + apt install gnupg1 -y
  153 + apt install gnupg2 -y
  154 + curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
  155 + echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
  156 + # https://yarnpkg.com/en/docs/install#debian-stable
  157 + apt-get remove -y cmdtest
  158 + apt-get update
  159 + apt-get install -y yarn
  160 + success yarn
  161 + fi
  162 +}
  163 +
  164 +function set_npm_mirror {
  165 + if [ -a $HOME/.npmrc ]; then
  166 + already set_npm_mirror
  167 + else
  168 + installing set_npm_mirror
  169 + wget -qO- https://raw.githubusercontent.com/ly525/luban-h5/dev/deploy/mirror.sh | bash
  170 + success set_npm_mirror
  171 + fi
  172 +}
  173 +
  174 +
  175 +
  176 +function install_strapi {
  177 + strapi &>/dev/null
  178 + if [ $? == "0" ]; then
  179 + already Strapi
  180 + else
  181 + installing Strapi
  182 + # 这里将mac怀疑安全性的包采取信任
  183 + # https://github.com/strapi/strapi/issues/2787
  184 + npm install --unsafe-perm=true --allow-root -g strapi@alpha
  185 + # . ~/.nvm/nvm.sh
  186 + # source $HOME/.nvm/nvm.sh;
  187 + strapi -v
  188 + success Strapi
  189 + fi
  190 +}
  191 +
  192 +function install_pm2 {
  193 + pm2 &>/dev/null
  194 + if [ $? == "1" ]; then
  195 + already PM2
  196 + else
  197 + installing PM2
  198 + npm install -g pm2@latest
  199 + . ~/.nvm/nvm.sh
  200 + pm2 update
  201 + success PM2
  202 + fi
  203 +}
  204 +
  205 +function install_nginx {
  206 + nginx &>/dev/null
  207 + if [ $? == "1" ]; then
  208 + already nginx
  209 + else
  210 + installing nginx
  211 + apt-get update
  212 + apt-get install -y nginx
  213 +
  214 + # Relpace nginx config file
  215 + sed -i 's/www-data/root/g' /etc/nginx/nginx.conf
  216 + cat > /etc/nginx/sites-available/default <<EOF
  217 +##
  218 +# You should look at the following URL's in order to grasp a solid understanding
  219 +# of Nginx configuration files in order to fully unleash the power of Nginx.
  220 +# http://wiki.nginx.org/Pitfalls
  221 +# http://wiki.nginx.org/QuickStart
  222 +# http://wiki.nginx.org/Configuration
  223 +#
  224 +# Generally, you will want to move this file somewhere, and start with a clean
  225 +# file but keep this around for reference. Or just disable in sites-enabled.
  226 +#
  227 +# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
  228 +##
  229 +
  230 +
  231 +# ----- luban nginx config start
  232 +server {
  233 +
  234 + listen 80 default_server;
  235 + listen [::]:80 default_server;
  236 + server_name _;
  237 +
  238 + client_body_buffer_size 4096M;
  239 + client_max_body_size 4096M;
  240 + proxy_buffer_size 128M;
  241 + proxy_buffers 32 128M;
  242 + proxy_busy_buffers_size 128M;
  243 +
  244 + gzip on;
  245 + gzip_min_length 1k;
  246 + gzip_buffers 4 16k;
  247 + gzip_disable "MSIE [1-6]\.";
  248 + gzip_comp_level 3;
  249 + gzip_types image/png application/json text/plain application/x-javascript text/css application/xml text/javascript application/javascript;
  250 +
  251 + location ~ ^/(upload|content-manager|users-permissions|works|admin|psd-files|workforms|third-libs|engine-assets) {
  252 +
  253 + proxy_set_header Host \$host;
  254 + proxy_set_header X-Real-IP \$remote_addr;
  255 + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
  256 + proxy_pass http://localhost:1337;
  257 + }
  258 +
  259 + # location /index {
  260 + # root /home/centos/codebase/luban/luban-h5-dist/front-end/;
  261 + # #try_files \$uri \$uri/ /index.html;
  262 + # }
  263 + # location / {
  264 +
  265 + # root /home/centos/codebase/luban/luban-h5-dist/landing-page/;
  266 + # #try_files \$uri \$uri/ /index.html;
  267 + # }
  268 +
  269 +
  270 + location ^~ /main {
  271 + alias /root/luban-h5/front-end/h5/dist/;
  272 + # index index.html;
  273 + #try_files \$uri \$uri/ /index.html;
  274 + }
  275 +
  276 +}
  277 +
  278 +# ----- luban nginx config end
  279 +EOF
  280 + service nginx restart
  281 + success nginx
  282 + fi
  283 +}
  284 +
  285 +function install_mongodb {
  286 + mongo &>/dev/null
  287 + if [ $? == "1" ]; then
  288 + already MongoDB
  289 + else
  290 + installing MongoDB
  291 + apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
  292 + echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.4.list
  293 + apt-get update
  294 + apt-get install -y mongodb-org
  295 + service mongod start
  296 + success MongoDB
  297 + fi
  298 +}
  299 +
  300 +
  301 +function install_luban-h5 {
  302 + if [ -a $HOME/luban-h5 ]; then
  303 + already luban-h5
  304 + else
  305 + installing luban-h5
  306 + cd ~/
  307 + git clone https://github.com/ly525/luban-h5
  308 +
  309 + # 鲁班前端
  310 + cd luban-h5/front-end/h5 && yarn && yarn build && yarn engine:build
  311 +
  312 + cd -
  313 +
  314 + # 鲁班后端
  315 + cd luban-h5/back-end/h5-api/
  316 + yarn
  317 + yarn build # build strapi admin
  318 + pm2 start server.js
  319 + pwd
  320 + success luban-h5
  321 + fi
  322 +}
  323 +
  324 +#
  325 +## Main
  326 +#
  327 +
  328 +set_apt_mirror
  329 +
  330 +
  331 +base_install vim
  332 +base_install wget
  333 +base_install curl
  334 +base_install git
  335 +base_install make
  336 +base_install gcc
  337 +base_install python
  338 +## for `yarn add sqlite3`
  339 +## https://packages.ubuntu.com/xenial/build-essential
  340 +## https://linuxconfig.org/how-to-install-g-the-c-compiler-on-ubuntu-18-04-bionic-beaver-linux
  341 +base_install build-essential
  342 +
  343 +
  344 +install_nvm
  345 +install_node
  346 +install_yarn
  347 +set_npm_mirror
  348 +install_strapi
  349 +install_pm2
  350 +install_nginx
  351 +install_luban-h5
  352 +exitBanner
  353 +
  354 +echo
  355 +echo -e "${GREEN}[+]Done.${NEUTRAL}"
  356 +
  357 +exec $SHELL -l
... ...