123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- #!/bin/bash
- # Copyright: (c) OpenSpug Organization. https://github.com/openspug/spug
- # Copyright: (c) <spug.dev@gmail.com>
- # Released under the AGPL-3.0 License.
- set -e
- function spuy_banner() {
- echo " ";
- echo " #### ##### # # #### ";
- echo "# # # # # # #";
- echo " #### # # # # # ";
- echo " # ##### # # # ###";
- echo "# # # # # # #";
- echo " #### # #### #### ";
- echo " ";
- }
- function init_system_lib() {
- source /etc/os-release
- case $ID in
- centos|fedora|rhel)
- echo "开始安装/更新可能缺少的依赖: git mariadb-server mariadb-devel python3-devel gcc openldap-devel redis nginx supervisor python36"
- yum install -y epel-release
- yum install -y git mariadb-server mariadb-devel python3-devel gcc openldap-devel redis nginx supervisor python36
- sed -i 's/ default_server//g' /etc/nginx/nginx.conf
- MYSQL_CONF=/etc/my.cnf.d/spug.cnf
- SUPERVISOR_CONF=/etc/supervisord.d/spug.ini
- REDIS_SRV=redis
- SUPERVISOR_SRV=supervisord
- ;;
- debian|ubuntu|devuan)
- echo "开始安装/更新可能缺少的依赖: git mariadb-server libmariadbd-dev python3-venv libsasl2-dev libldap2-dev redis-server nginx supervisor"
- apt update
- apt install -y git mariadb-server libmariadbd-dev python3-dev python3-venv libsasl2-dev libldap2-dev redis-server nginx supervisor
- rm -f /etc/nginx/sites-enabled/default
- MYSQL_CONF=/etc/mysql/conf.d/spug.cnf
- SUPERVISOR_CONF=/etc/supervisor/conf.d/spug.conf
- REDIS_SRV=redis-server
- SUPERVISOR_SRV=supervisor
- ;;
- *)
- exit 1
- ;;
- esac
- }
- function install_spug() {
- echo "开始安装Spug..."
- mkdir -p /data
- cd /data
- git clone --depth=1 https://gitee.com/openspug/spug.git
- curl -o /tmp/web_latest.tar.gz https://spug.dev/installer/web_latest.tar.gz
- tar xf /tmp/web_latest.tar.gz -C spug/spug_web/
- cd spug/spug_api
- python3 -m venv venv
- source venv/bin/activate
- pip install wheel -i https://pypi.doubanio.com/simple/
- pip install gunicorn mysqlclient -i https://pypi.doubanio.com/simple/
- pip install -r requirements.txt -i https://pypi.doubanio.com/simple/
- }
- function setup_conf() {
- echo "开始配置Spug配置..."
- # mysql conf
- cat << EOF > $MYSQL_CONF
- [mysqld]
- bind-address=127.0.0.1
- EOF
- # spug conf
- cat << EOF > spug/overrides.py
- DEBUG = False
- ALLOWED_HOSTS = ['127.0.0.1']
- DATABASES = {
- 'default': {
- 'ATOMIC_REQUESTS': True,
- 'ENGINE': 'django.db.backends.mysql',
- 'NAME': 'spug',
- 'USER': 'spug',
- 'PASSWORD': 'spug.dev',
- 'HOST': '127.0.0.1',
- 'OPTIONS': {
- 'charset': 'utf8mb4',
- 'sql_mode': 'STRICT_TRANS_TABLES',
- }
- }
- }
- EOF
- cat << EOF > $SUPERVISOR_CONF
- [program:spug-api]
- command = bash /data/spug/spug_api/tools/start-api.sh
- autostart = true
- stdout_logfile = /data/spug/spug_api/logs/api.log
- redirect_stderr = true
- [program:spug-ws]
- command = bash /data/spug/spug_api/tools/start-ws.sh
- autostart = true
- stdout_logfile = /data/spug/spug_api/logs/ws.log
- redirect_stderr = true
- [program:spug-worker]
- command = bash /data/spug/spug_api/tools/start-worker.sh
- autostart = true
- stdout_logfile = /data/spug/spug_api/logs/worker.log
- redirect_stderr = true
- [program:spug-monitor]
- command = bash /data/spug/spug_api/tools/start-monitor.sh
- autostart = true
- stdout_logfile = /data/spug/spug_api/logs/monitor.log
- redirect_stderr = true
- [program:spug-scheduler]
- command = bash /data/spug/spug_api/tools/start-scheduler.sh
- autostart = true
- stdout_logfile = /data/spug/spug_api/logs/scheduler.log
- redirect_stderr = true
- EOF
- cat << EOF > /etc/nginx/conf.d/spug.conf
- server {
- listen 80 default_server;
- root /data/spug/spug_web/build/;
- location ^~ /api/ {
- rewrite ^/api(.*) \$1 break;
- proxy_pass http://127.0.0.1:9001;
- proxy_redirect off;
- proxy_set_header X-Real-IP \$remote_addr;
- }
- location ^~ /api/ws/ {
- rewrite ^/api(.*) \$1 break;
- proxy_pass http://127.0.0.1:9002;
- proxy_http_version 1.1;
- proxy_set_header Upgrade \$http_upgrade;
- proxy_set_header Connection "Upgrade";
- proxy_set_header X-Real-IP \$remote_addr;
- }
- error_page 404 /index.html;
- }
- EOF
- systemctl start mariadb
- systemctl enable mariadb
- mysql -e "create database spug default character set utf8mb4 collate utf8mb4_unicode_ci;"
- mysql -e "grant all on spug.* to spug@127.0.0.1 identified by 'spug.dev'"
- mysql -e "flush privileges"
- python manage.py initdb
- python manage.py useradd -u admin -p spug.dev -s -n 管理员
- systemctl enable nginx
- systemctl enable $REDIS_SRV
- systemctl enable $SUPERVISOR_SRV
- systemctl restart nginx
- systemctl start $REDIS_SRV
- systemctl restart $SUPERVISOR_SRV
- }
- spuy_banner
- init_system_lib
- install_spug
- setup_conf
- echo -e "\n\n\033[33m安全警告:默认的数据库和Redis服务并不安全,请确保其仅监听在127.0.0.1,推荐参考官网文档自行加固安全配置!\033[0m"
- echo -e "\033[32m安装成功!\033[0m"
- echo "默认管理员账户:admin 密码:spug.dev"
- echo "默认数据库用户:spug 密码:spug.dev"
|