2019-10-12 17:13:11 +08:00
# 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.
2019-04-08 15:48:10 +08:00
#!/bin/bash
2019-09-18 18:01:34 +08:00
# current path
2019-04-18 15:09:02 +08:00
esc_basepath = $( cd ` dirname $0 ` ; pwd )
2019-05-21 19:17:36 +08:00
menu( ) {
cat <<END
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
2019-09-18 18:01:34 +08:00
1.CentOS6 Installation
2.CentOS7 Installation
3.Ubuntu Installation
4.Exit
2019-05-21 19:17:36 +08:00
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
END
}
2019-04-08 15:48:10 +08:00
2019-09-18 18:01:34 +08:00
# create a file and configure nginx
dolphinschedulerConf( ) {
2019-04-08 15:48:10 +08:00
2019-04-10 17:17:02 +08:00
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 {
2019-09-18 18:01:34 +08:00
listen $1 ; # access port
2019-04-10 17:17:02 +08:00
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
2019-09-18 18:01:34 +08:00
root ${ esc_basepath } /dist; # static file directory
2019-04-10 17:17:02 +08:00
index index.html index.html;
}
2019-09-29 15:11:10 +08:00
location /dolphinscheduler {
2019-09-18 18:01:34 +08:00
proxy_pass $2 ; # interface address
2019-04-10 17:17:02 +08:00
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;
2019-05-20 15:01:57 +08:00
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
2019-04-10 17:17:02 +08:00
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;
}
}
2019-09-18 18:01:34 +08:00
" >> /etc/nginx/conf.d/dolphinscheduler.conf
2019-04-08 15:48:10 +08:00
}
2019-05-21 19:17:36 +08:00
ubuntu( ) {
2019-09-18 18:01:34 +08:00
# update source
2019-05-21 19:17:36 +08:00
apt-get update
2019-09-18 18:01:34 +08:00
# install nginx
2019-05-21 19:17:36 +08:00
apt-get install -y nginx
2019-09-18 18:01:34 +08:00
# config nginx
dolphinschedulerConf $1 $2
2019-05-21 19:17:36 +08:00
2019-09-18 18:01:34 +08:00
# startup nginx
2019-05-21 19:17:36 +08:00
/etc/init.d/nginx start
sleep 1
if [ $? -ne 0 ] ; then
/etc/init.d/nginx start
fi
nginx -s reload
}
2019-04-08 15:48:10 +08:00
centos7( ) {
2019-05-21 19:17:36 +08:00
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx
2019-04-08 15:48:10 +08:00
2019-09-18 18:01:34 +08:00
# config nginx
dolphinschedulerConf $1 $2
2019-04-08 15:48:10 +08:00
2019-09-18 18:01:34 +08:00
# solve 0.0.0.0:8888 problem
2019-04-10 17:17:02 +08:00
yum -y install policycoreutils-python
semanage port -a -t http_port_t -p tcp $esc_proxy
2019-04-08 15:48:10 +08:00
2019-09-18 18:01:34 +08:00
# open front access port
2019-04-10 17:17:02 +08:00
firewall-cmd --zone= public --add-port= $esc_proxy /tcp --permanent
2019-04-08 15:48:10 +08:00
2019-09-18 18:01:34 +08:00
# startup nginx
2019-04-10 17:17:02 +08:00
systemctl start nginx
2019-05-21 19:17:36 +08:00
sleep 1
if [ $? -ne 0 ] ; then
systemctl start nginx
fi
nginx -s reload
2019-04-08 15:48:10 +08:00
2019-09-18 18:01:34 +08:00
# set SELinux parameters
2019-04-10 17:17:02 +08:00
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
2019-09-18 18:01:34 +08:00
# temporary effect
2019-04-10 17:17:02 +08:00
setenforce 0
2019-04-08 15:48:10 +08:00
}
centos6( ) {
2019-05-21 19:17:36 +08:00
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
2019-04-10 17:17:02 +08:00
# install nginx
yum install nginx -y
2019-09-18 18:01:34 +08:00
# config nginx
dolphinschedulerConf $1 $2
2019-04-10 17:17:02 +08:00
2019-09-18 18:01:34 +08:00
# startup nginx
2019-04-10 17:17:02 +08:00
/etc/init.d/nginx start
2019-05-21 19:17:36 +08:00
sleep 1
if [ $? -ne 0 ] ; then
/etc/init.d/nginx start
fi
nginx -s reload
2019-04-10 17:17:02 +08:00
2019-09-18 18:01:34 +08:00
# set SELinux parameters
2019-04-10 17:17:02 +08:00
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
2019-09-18 18:01:34 +08:00
# temporary effect
2019-04-10 17:17:02 +08:00
setenforce 0
2019-04-08 15:48:10 +08:00
}
2019-05-21 19:17:36 +08:00
function main( ) {
2019-09-18 18:01:34 +08:00
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"
2019-05-21 19:17:36 +08:00
#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
2019-09-18 18:01:34 +08:00
# config front-end access ports
read -p "Please enter the nginx proxy port, do not enter, the default is 8888 :" esc_proxy_port
2019-05-21 19:17:36 +08:00
if [ -z " ${ esc_proxy_port } " ] ; then
esc_proxy_port = "8888"
fi
2019-09-18 18:01:34 +08:00
read -p "Please enter the api server proxy ip, you must enter, for example: 192.168.xx.xx :" esc_api_server_ip
2019-05-21 19:17:36 +08:00
if [ -z " ${ esc_api_server_ip } " ] ; then
2019-09-18 18:01:34 +08:00
echo "api server proxy ip can not be empty."
2019-05-21 19:17:36 +08:00
exit 1
fi
2019-09-18 18:01:34 +08:00
read -p "Please enter the api server proxy port, do not enter, the default is 12345:" esc_api_server_port
2019-05-21 19:17:36 +08:00
if [ -z " ${ esc_api_server_port } " ] ; then
esc_api_server_port = "12345"
fi
2019-09-18 18:01:34 +08:00
# api server backend address
2019-05-21 19:17:36 +08:00
esc_api_server = " http:// $esc_api_server_ip : $esc_api_server_port "
2019-09-18 18:01:34 +08:00
# local ip address
2019-05-21 19:17:36 +08:00
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}' )
2019-09-18 18:01:34 +08:00
# Prompt message
2019-05-21 19:17:36 +08:00
menu
2019-09-18 18:01:34 +08:00
read -p "Please enter the installation number(1|2|3|4): " num
2019-05-21 19:17:36 +08:00
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
2019-09-18 18:01:34 +08:00
echo " Please visit the browser: http:// ${ esc_ipaddr } : ${ esc_proxy_port } "
2019-04-08 15:48:10 +08:00
2019-05-21 19:17:36 +08:00
}
2019-04-08 15:48:10 +08:00
2019-05-21 19:17:36 +08:00
main