Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env bash
- # required package:
- # nginx, uwsgi, python
- SELF_PATH=`cd $(dirname $0); pwd -P;`
- read -e -p "Enter IP address of your config server / 请输入您服务器的 IP 地址:" \
- -i "47.95.227.3" SERVER_IP
- read -e -p "Enter domain name of your config server / 请输入指向您服务器的域名:" \
- -i "pigeonshed.shesl.top" DOMAIN_NAME
- read -e -p "What is the name of your project / 您希望您项目的名称叫什么(please do not leave blank):" \
- -i "PigeonShed" PROJECT_NAME
- read -e -p "What is your settings directory name or django project name / Django 设置文件所在的文件夹:" \
- -i "PigeonShed" DJANGO_PROJECT_NAME
- read -e -p "What is your python virtualenv directory / 您 python 的虚拟环境在哪个地址:" \
- -i "${HOME}/.virtualenvs/" WORKON_HOME
- read -e -p "Getting a new virtualenv / 是否需要新建一个 python 虚拟环境?[Y/others]" \
- -i "N" VIRTUALENV_CHOICE
- read -e -p "Config your ip and domain name into django-settings / 是否将 IP 和域名写入 Django 的设置中?[Y/others]" \
- -i "Y" DJANGO_SETTING_CHOICE
- read -e -p "Config your nginx and reload / 是否重新将配置写入 nginx 配置文件并重启 nginx?[Y/others]" \
- -i "Y" NGINX_SETTING_CHOICE
- read -e -p "Config a new uwsgi inite file / 是否需要新建一个 uwsgi 的初始化 ini 文件?[Y/others]" \
- -i "Y" UWSGI_SETTING_CHOICE
- read -e -p "Need shell scripts running and stopping uwsgi / 是否需要新建启动和停止 uwsgi 的脚本?[Y/others]" \
- -i "Y" UWSGI_SCRIPT_CHOICE
- source /usr/bin/virtualenvwrapper.sh
- case ${VIRTUALENV_CHOICE} in
- y|Y)
- mkvirtualenv ${PROJECT_NAME}
- pip install -r ./requirements.txt
- ;;
- *) workon ${PROJECT_NAME} ;;
- esac
- cat << _EOF_ > tmp
- upstream django-${PROJECT_NAME} {
- server unix://${SELF_PATH}/${PROJECT_NAME}.sock; # for a file socket
- }
- server {
- listen 80;
- server_name ${SERVER_IP} ${DOMAIN_NAME};
- charset utf-8;
- client_max_body_size 75M;
- root ${SELF_PATH};
- index index.html index.htm index.nginx-debian.html;
- location /media {
- alias ${SELF_PATH}/media;
- }
- location /static {
- alias ${SELF_PATH}/static;
- }
- location / {
- uwsgi_pass django-${PROJECT_NAME};
- include ${SELF_PATH}/uwsgi_params;
- }
- error_log /var/log/nginx/error.log;
- access_log /var/log/nginx/access.log;
- }
- _EOF_
- case ${NGINX_SETTING_CHOICE} in
- y|Y)
- sudo mv tmp /etc/nginx/sites-available/${PROJECT_NAME}.conf
- sudo ln -sf /etc/nginx/sites-available/${PROJECT_NAME}.conf /etc/nginx/sites-enabled/
- sudo systemctl restart nginx
- ;;
- *) echo "nginx not config." ;;
- esac
- case ${DJANGO_SETTING_CHOICE} in
- y|Y)
- sed "s/ALLOWED_HOSTS = .*/ALLOWED_HOSTS = ['${DOMAIN_NAME}', '${SERVER_IP}']/g" \
- ./${DJANGO_PROJECT_NAME}/settings.py > tmp
- mv tmp ./${DJANGO_PROJECT_NAME}/settings.py
- ;;
- *) echo "Leave ALLOWED_HOSTS." ;;
- esac
- cat << _EOF_ > tmp
- # uwsig_${PROJECT_NAME,,}.ini file
- [uwsgi]
- chdir = %d
- module = ${DJANGO_PROJECT_NAME}.wsgi
- virtualenv = ${WORKON_HOME}/${PROJECT_NAME}
- # process-related settings
- master = true
- processes = 10
- socket = %d${PROJECT_NAME,,}.sock
- chmod-socket = 665
- # clear environment on exit
- vacuum = true
- uid = www-data
- gid = www-data
- pidfile = %dprocess_${PROJECT_NAME,,}.pid
- plugins-dir = /usr/lib/uwsgi/plugins/
- plugins = python36
- _EOF_
- case ${UWSGI_SETTING_CHOICE} in
- y|Y)
- mv tmp ./uwsgi_${PROJECT_NAME,,}.ini
- ;;
- *) echo "You haven't create uwsgi ini file.";;
- esac
- cat << _EOF_ > tmp
- #!/usr/bin/env bash
- cd \`dirname \$0\`
- export WORKON_HOME=${WORKON_HOME}
- source /usr/bin/virtualenvwrapper.sh
- workon ${PROJECT_NAME}
- cat <(echo "yes") | python ./manage.py collectstatic
- uwsgi --ini ./uwsgi_${PROJECT_NAME,,}.ini &
- sudo chown www-data:www-data ${PROJECT_NAME,,}.sock
- _EOF_
- case ${UWSGI_SCRIPT_CHOICE} in
- y|Y)
- mv tmp ./run_uwsgi_${PROJECT_NAME,,}.sh
- chmod +x ./run_uwsgi_${PROJECT_NAME,,}.sh
- ;;
- *) echo "You don't create run uwsgi script." ;;
- esac
- cat << _EOF_ > tmp
- #!/usr/bin/env bash
- cd \`dirname \$0\`
- if [[ -f ./process_${PROJECT_NAME,,}.pid ]]; then
- uwsgi --stop ./process_${PROJECT_NAME,,}.pid
- else
- read -e -p "Pid file not found. Force kill all uwsgi process?[Y/others]" -i "Y" CHOICE
- case \${CHOICE} in
- y|Y) sudo pkill -f uwsgi -9 ;;
- *) echo "You don't kill any process." ;;
- esac
- fi
- _EOF_
- case ${UWSGI_SCRIPT_CHOICE} in
- y|Y)
- mv tmp ./stop_uwsgi_${PROJECT_NAME,,}.sh
- chmod +x ./stop_uwsgi_${PROJECT_NAME,,}.sh
- ;;
- *) echo "You don't create stop script." && rm tmp;;
- esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement