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