123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- # Licensed to the Apache Software Foundation (ASF) under one or more
- # contributor license agreements. See the NOTICE file distributed with
- # this work for additional information regarding copyright ownership.
- # The ASF licenses this file to You under the Apache License, Version 2.0
- # (the "License"); you may not use this file except in compliance with
- # the License. You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #!/bin/bash
- # current path
- esc_basepath=$(cd `dirname $0`; pwd)
- menu(){
- cat <<END
- =================================================
- 1.CentOS6 Installation
- 2.CentOS7 Installation
- 3.Ubuntu Installation
- 4.Exit
- =================================================
- END
- }
- # create a file and configure nginx
- dolphinschedulerConf(){
- E_host='$host'
- E_remote_addr='$remote_addr'
- E_proxy_add_x_forwarded_for='$proxy_add_x_forwarded_for'
- E_http_upgrade='$http_upgrade'
- echo "
- server {
- listen $1;# access port
- server_name localhost;
- #charset koi8-r;
- #access_log /var/log/nginx/host.access.log main;
- location / {
- root ${esc_basepath}/dist; # static file directory
- index index.html index.html;
- }
- location /dolphinscheduler {
- proxy_pass $2; # interface address
- proxy_set_header Host $E_host;
- proxy_set_header X-Real-IP $E_remote_addr;
- proxy_set_header x_real_ipP $E_remote_addr;
- proxy_set_header remote_addr $E_remote_addr;
- proxy_set_header X-Forwarded-For $E_proxy_add_x_forwarded_for;
- proxy_http_version 1.1;
- proxy_connect_timeout 300s;
- proxy_read_timeout 300s;
- proxy_send_timeout 300s;
- proxy_set_header Upgrade $E_http_upgrade;
- proxy_set_header Connection "upgrade";
- }
- #error_page 404 /404.html;
- # redirect server error pages to the static page /50x.html
- #
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root /usr/share/nginx/html;
- }
- }
- " >> /etc/nginx/conf.d/dolphinscheduler.conf
- }
- ubuntu(){
- # update source
- apt-get update
- # install nginx
- apt-get install -y nginx
- # config nginx
- dolphinschedulerConf $1 $2
- # startup nginx
- /etc/init.d/nginx start
- sleep 1
- if [ $? -ne 0 ];then
- /etc/init.d/nginx start
- fi
- nginx -s reload
- }
- centos7(){
- rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
- yum install -y nginx
- # config nginx
- dolphinschedulerConf $1 $2
- # solve 0.0.0.0:8888 problem
- yum -y install policycoreutils-python
- semanage port -a -t http_port_t -p tcp $esc_proxy
- # open front access port
- firewall-cmd --zone=public --add-port=$esc_proxy/tcp --permanent
- # startup nginx
- systemctl start nginx
- sleep 1
- if [ $? -ne 0 ];then
- systemctl start nginx
- fi
- nginx -s reload
- # set SELinux parameters
- sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
- # temporary effect
- setenforce 0
- }
- centos6(){
- rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
- # install nginx
- yum install nginx -y
- # config nginx
- dolphinschedulerConf $1 $2
- # startup nginx
- /etc/init.d/nginx start
- sleep 1
- if [ $? -ne 0 ];then
- /etc/init.d/nginx start
- fi
- nginx -s reload
- # set SELinux parameters
- sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
- # temporary effect
- setenforce 0
- }
- function main(){
- echo "Welcome to thedolphinscheduler front-end deployment script, which is currently only supported by front-end deployment scripts : CentOS and Ubuntu"
- echo "Please execute in the dolphinscheduler-ui directory"
- #To be compatible with MacOS and Linux
- if [[ "$OSTYPE" == "darwin"* ]]; then
- # Mac OSX
- echo "Easy Scheduler ui install not support Mac OSX operating system"
- exit 1
- elif [[ "$OSTYPE" == "linux-gnu" ]]; then
- # linux
- echo "linux"
- elif [[ "$OSTYPE" == "cygwin" ]]; then
- # POSIX compatibility layer and Linux environment emulation for Windows
- echo "Easy Scheduler ui not support Windows operating system"
- exit 1
- elif [[ "$OSTYPE" == "msys" ]]; then
- # Lightweight shell and GNU utilities compiled for Windows (part of MinGW)
- echo "Easy Scheduler ui not support Windows operating system"
- exit 1
- elif [[ "$OSTYPE" == "win32" ]]; then
- echo "Easy Scheduler ui not support Windows operating system"
- exit 1
- elif [[ "$OSTYPE" == "freebsd"* ]]; then
- # ...
- echo "freebsd"
- else
- # Unknown.
- echo "Operating system unknown, please tell us(submit issue) for better service"
- exit 1
- fi
- # config front-end access ports
- read -p "Please enter the nginx proxy port, do not enter, the default is 8888 :" esc_proxy_port
- if [ -z "${esc_proxy_port}" ];then
- esc_proxy_port="8888"
- fi
- read -p "Please enter the api server proxy ip, you must enter, for example: 192.168.xx.xx :" esc_api_server_ip
- if [ -z "${esc_api_server_ip}" ];then
- echo "api server proxy ip can not be empty."
- exit 1
- fi
- read -p "Please enter the api server proxy port, do not enter, the default is 12345:" esc_api_server_port
- if [ -z "${esc_api_server_port}" ];then
- esc_api_server_port="12345"
- fi
- # api server backend address
- esc_api_server="http://$esc_api_server_ip:$esc_api_server_port"
- # local ip address
- esc_ipaddr=$(ip a | grep inet | grep -v inet6 | grep -v 127 | sed 's/^[ \t]*//g' | cut -d ' ' -f2 | head -n 1 | awk -F '/' '{print $1}')
- # Prompt message
- menu
- read -p "Please enter the installation number(1|2|3|4):" num
- case $num in
- 1)
- centos6 ${esc_proxy_port} ${esc_api_server}
- ;;
- 2)
- centos7 ${esc_proxy_port} ${esc_api_server}
- ;;
- 3)
- ubuntu ${esc_proxy_port} ${esc_api_server}
- ;;
- 4)
- echo $"Usage :sh $0"
- exit 1
- ;;
- *)
- echo $"Usage :sh $0"
- exit 1
- esac
- echo "Please visit the browser:http://${esc_ipaddr}:${esc_proxy_port}"
- }
- main
|