diff --git a/docs/Dockerfile/Dockerfile b/docs/Dockerfile/Dockerfile index ff8c39a..fc93241 100644 --- a/docs/Dockerfile/Dockerfile +++ b/docs/Dockerfile/Dockerfile @@ -6,7 +6,7 @@ FROM python:3.6.10-alpine3.11 RUN echo -e "http://mirrors.aliyun.com/alpine/v3.11/main\nhttp://mirrors.aliyun.com/alpine/v3.11/community" > /etc/apk/repositories RUN apk update && apk add --no-cache nginx mariadb nodejs-npm git build-base openldap-dev supervisor redis bash -RUN apk add --no-cache --virtual .build-deps openssl-dev gcc musl-dev python3-dev libffi-dev openssl-dev make \ +RUN apk add --no-cache --virtual .build-deps openssl-dev gcc musl-dev python3-dev libffi-dev openssh-client make \ && mkdir /etc/supervisor.d diff --git a/docs/install.sh b/docs/install.sh new file mode 100644 index 0000000..3555c6b --- /dev/null +++ b/docs/install.sh @@ -0,0 +1,191 @@ +#!/bin/bash +# Copyright: (c) OpenSpug Organization. https://github.com/openspug/spug +# Copyright: (c) +# Released under the MIT 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 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..." + curl -o /tmp/spug_latest.tar.gz https://spug.dev/installer/spug_latest.tar.gz + mkdir -p /data + cd /data + tar xf /tmp/spug_latest.tar.gz + cd spug + python3 -m venv venv + source venv/bin/activate + ln -s /data/spug/venv /data/spug/spug_api/venv + mkdir repos + ln -s /data/spug/repos /data/spug/spug_api/repos + cd spug_api + + 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/; + + 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"