系统启动脚本

  1 #!/bin/bash
  2 
  3 # 系统更新
  4 system_update() {
  5     echo '正在更新系统...'
  6     apt update -y
  7     apt upgrade -y
  8     echo -e '系统更新完毕.\n'
  9 }
 10 
 11 
 12 # 安装系统软件
 13 install_software() {
 14     echo '正在安装系统组件...'
 15     BASIC='man gcc make sudo lsof ssh openssl tree vim language-pack-zh-hans'
 16     EXT='dnsutils iputils-ping net-tools psmisc sysstat'
 17     NETWORK='curl telnet traceroute wget'
 18     LIBS='libbz2-dev libpcre3 libpcre3-dev libreadline-dev libsqlite3-dev libssl-dev zlib1g-dev'
 19     SOFTWARE='mysql-server zip p7zip apache2-utils sendmail'
 20     apt install -y $BASIC $EXT $NETWORK $LIBS $SOFTWARE
 21 
 22     echo '正在清理临时文件'
 23     apt autoremove
 24     apt autoclean
 25 
 26     echo '正在设置中文环境'
 27     locale-gen zh_CN.UTF-8
 28     export LC_ALL='zh_CN.utf8'
 29     echo "export LC_ALL='zh_CN.utf8'" >> /etc/bash.bashrc
 30 
 31     echo '正在启动邮件服务'
 32     service sendmail start
 33 
 34     echo -e '系统组件安装完毕.\n'
 35 }
 36 
 37 
 38 # 安装 Nginx
 39 install_nginx() {
 40     echo '正在安装 Nginx...'
 41     if ! which nginx > /dev/null
 42     then
 43         wget -P /tmp 'http://nginx.org/download/nginx-1.14.1.tar.gz'
 44         tar -xzf /tmp/nginx-1.14.1.tar.gz -C /tmp
 45         cd /tmp/nginx-1.14.1
 46         ./configure
 47         make && make install
 48         cd -
 49         rm -rf /tmp/nginx*
 50         ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
 51         echo -e 'Nginx 安装完毕.\n'
 52     else
 53         echo -e 'Nginx 已存在.\n'
 54     fi
 55 }
 56 
 57 
 58 # 安装 Redis
 59 install_redis() {
 60     echo '正在安装 Redis'
 61     if ! which redis-server > /dev/null
 62     then
 63         wget -P /tmp/ 'http://download.redis.io/releases/redis-5.0.0.tar.gz'
 64         tar -xzf /tmp/redis-5.0.0.tar.gz -C /tmp
 65         cd /tmp/redis-5.0.0
 66         make && make install
 67         cd -
 68         rm -rf /tmp/redis*
 69         echo -e 'Redis 安装完毕.\n'
 70     else
 71         echo -e 'Redis 已存在\n'
 72     fi
 73 }
 74 
 75 
 76 # 安装 pyenv
 77 install_pyenv() {
 78     echo '正在安装 pyenv...'
 79     if ! which pyenv > /dev/null
 80     then
 81         curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
 82         export PATH="$HOME/.pyenv/bin:$PATH"
 83         eval "$(pyenv init -)"
 84         eval "$(pyenv virtualenv-init -)"
 85         echo -e 'pyenv 安装完毕.\n'
 86     else
 87         echo -e 'pyenv 已存在\n'
 88     fi
 89     pyenv update
 90 }
 91 
 92 
 93 # 将 pyenv 配置写入 bashrc
 94 set_pyenv_conf() {
 95 echo '正在配置 pyenv...'
 96 cat >> $HOME/.bashrc << EOF
 97 
 98 # PyenvConfig
 99 export PATH="\$HOME/.pyenv/bin:\$PATH"
100 eval "\$(pyenv init -)"
101 eval "\$(pyenv virtualenv-init -)"
102 EOF
103 
104 source $HOME/.bashrc
105 echo -e 'pyenv 配置完毕.\n'
106 }
107 
108 
109 # 编译安装 Python 3.6.7
110 install_python() {
111     echo '正在安装 Python 3.6'
112     if ! pyenv versions|grep 3.6.7 > /dev/null;
113     then
114         pyenv install -v 3.6.7
115         echo -e 'Python 3.6.7 安装完毕.\n'
116     else
117         echo 'Python 3.6.7 已存在'
118     fi
119     pyenv global 3.6.7
120 }
121 
122 
123 # 项目环境初始化
124 project_init() {
125     echo '正在设置项目环境...'
126     proj='/opt/swiper/'
127     mkdir -p $proj/{data,logs}
128 
129     echo '正在创建 python 运行环境...'
130     if [ ! -d $proj/.venv ]; then
131         python -m venv $proj/.venv
132     fi
133     source $proj/.venv/bin/activate
134     pip install -U pip
135     if [ -f $proj/requirements.txt ]; then
136         pip install -r $proj/requirements.txt
137     fi
138     deactivate
139 
140     echo -e '项目环境设置完毕.\n'
141 }
142 
143 install_all() {
144     system_update
145     install_software
146     install_nginx
147     install_redis
148     install_pyenv
149     set_pyenv_conf
150     install_python
151     project_init
152 }
153 
154 
155 cat << EOF
156 请输入要执行的操作的编号: [1-9]
157 ===============================
158 【 1 】 系统更新
159 【 2 】 安装系统组件
160 【 3 】 安装 Nginx
161 【 4 】 安装 Redis
162 【 5 】 安装 Pyenv
163 【 6 】 写入 pyenv 配置
164 【 7 】 安装 Python
165 【 8 】 项目运行环境初始化
166 【 9 】 全部执行
167 【 Q 】 退出
168 ===============================
169 EOF
170 
171 # 获取要执行的操作编号
172 if [[ -n $1 ]]; then
173     OPT_NUM=$1
174     echo "执行操作: $1"
175 else
176     read -p "请选择: " OPT_NUM
177 fi
178 
179 case $OPT_NUM in
180     1) system_update;;
181     2) install_software;;
182     3) install_nginx;;
183     4) install_redis;;
184     5) install_pyenv;;
185     6) set_pyenv_conf;;
186     7) install_python;;
187     8) project_init;;
188     9) install_all;;
189     *) exit;;
190 esac

 

posted @ 2020-06-10 14:53  JustInTime  阅读(165)  评论(0)    收藏  举报