django-sspanel前端搭建-最新

2018年7月9日

  1. 修复了当面付可能漏单的BUG(我用不到)
  2. 添加清理僵尸用户功能

    cd /www/wwwroot/www.sspanel.com/django-sspanel/commands
    python clear_zombie_user.py

2018年6月17日:

  1. 前端sites.py增加了是否开启注册的开关
    ALLOW_REGISET = True
  2. 后端增加单端口多用户设置

2018年6月1日:

  1. 增加单端口多用户,去除91pay接口

注意:前后端均为master分支。

支付宝模块开通需要签约,签约资料需要个体工商户执照等信息,所以没写支付模块。

环境:CentOS 7
部署方式:Nginx > uwsgi > Django
前置组件:Nginx & Mysql Pyenv Python3 Uwsgi

先设置时区

timedatectl set-timezone Asia/Shanghai

宝塔LNMP及创建站点

Nginx & Mysql是必须的,为了方便也装了PHPphpmyadmin

安装宝塔面板

参照:宝塔官网(简单好用的Linux/Windows服务器管理面板)

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh

完成后输出管理页面地址、端口以及账户、密码。

宝塔管理员帐号密码

安装lnmp

浏览器打开宝塔面板,首次登陆就会推荐安装LANMP,选LNMP。

lnmp

创建站点

宝塔面板-网站-添加站点(可以同时添加数据库)

站点名称 www.sspanel.com
根目录 /www/wwwroot/www.sspanel.com
数据库名 sspanel
数据库用户名 sspanel
数据库密码 sspanel

站点信息

添加域名及申请SSL(添不添加随你)

宝塔面板-网站-设置-域名管理 添加域名 sspanel.com
宝塔面板-网站-设置-SSL-Let’s Encrypt 申请 SSL

安装pyenv

项目地址:https://github.com/pyenv/pyenv

安装Git

yum -y install git

安装pyenv

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

添加命令行环境变量

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile

增加pyenv initSHELL

echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

重启令其生效

exec "$SHELL"
source ~/.bash_profile

安装 Python3

安装Python所需的相关依赖

yum -y install gcc
yum -y install make
yum -y install zlib zlib-devel
yum -y install readline readline-devel readline-static
yum -y install openssl openssl-devel openssl-static
yum -y install sqlite-devel
yum -y install bzip2-devel bzip2-libs

安装Python3

pyenv install 3.6.1

安装好后,输入如下命令查看相关信息

pyenv versions

回显结果如图字样说明安装成功

pyenv回显结果

创建虚拟运行环境

安装 virtualenv

git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
exec "$SHELL"

创建虚拟运行环境

pyenv virtualenv 3.6.1 venv-sspanel

下载最新版django-sspanel

cd /www/wwwroot/www.sspanel.com
git clone -b master https://github.com/Ehco1996/django-sspanel.git

因为目录结构的问题,更改下网站目录设置
宝塔面板-网站-设置-网站目录
在网站目录后加入/django-sspanel(如图所示)

网站目录

根目录的环境设置为virtualenv

cd django-sspanel

此时绝对路径:/www/wwwroot/www.sspanel.com/django-sspanel

pyenv local venv-sspanel

安装项目所需的第三方包

pip install -r requirements.txt

修改配置文件

宝塔中找到进行编辑,都有中文注释

配置文件目录


/www/wwwroot/www.sspanel.com/django-sspanel/configs

配置文件结构

➜ tree
.
├── __init__.py
├── default
│   ├── __init__.py
│   ├── cron.py # 设置计划任务
│   ├── db.py   # 设置数据库
│   ├── email.py # 设置邮箱
│   └── sites.py # 设置杂七杂八的东西
├── development.py  # 需要设置数据库密码
├── mysqld
│   └── mysqld_charset.cnf
├── nginx
│   └── nginx.example.conf
└── production.py # 需要设置数据库密码

一项一项来:

数据库 db.py

# mysql 设置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '数据库名',
        'USER': '用户名',
        'PASSWORD': '密码',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'OPTIONS': {
            'autocommit': True,
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
            'charset': 'utf8mb4',
        },
    }
}

邮箱 email.py

# 是否开启邮件功能
USE_SMTP = True

# 是否开启ssl/tls
EMAIL_USE_TLS = False
EMAIL_USE_SSL = True   # 我用Gmail

# 我使用gmail邮箱作为smtp服务器
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 465
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = '密码'
DEFAULT_FROM_EMAIL = 'Ehco<[email protected]>'

站点设置 sites.py(变动较大)

# 网站密钥

SECRET_KEY = '秘钥喽随便设置'

# 默认的theme
# 可选列表在 apps/constants.py 里的THEME_CHOICES里
DEFAULT_THEME = 'superhero'

# 域名设置
ALLOWED_HOSTS = [
    'www.sspanel.com',
    'sspanel.com',
]

# SS面板设置:
MB = 1024 * 1024
GB = 1024 * 1024 * 1024
DEFAULT_TRAFFIC = 5 * GB
START_PORT = 1024

# 默认加密混淆协议
DEFAULT_METHOD = 'none'
DEFAULT_PROTOCOL = 'auth_chain_a'
DEFAULT_OBFS = 'http_simple'

# 签到流量设置
MIN_CHECKIN_TRAFFIC = 10 * MB
MAX_CHECKIN_TRAFFIC = 200 * MB

# 是否启用支付宝系统
USE_ALIPAY = True
# 支付订单提示信息 修改请保留 {} 用于动态生成金额
ALIPAY_TRADE_INFO = '谜之屋的{}元充值码'

# 网站title
TITLE = '谜之屋'
SUBTITLE = '秘密的小屋test'

# 用户邀请返利比例
INVITE_PERCENT = 0.2
# 用户能生成的邀请码数量
INVITE_NUM = 5

# 网站邀请界面提示语
INVITEINFO = '邀请码实时更新,如果用完了请关注公众号findyourownway获取'

# 网站域名设置(请正确填写,不然订阅功能会失效:
HOST = 'https://www.sspanel.com/'   # 注意这里http还是https

# 部分API接口TOKEN
TOKEN = 'test' #随便设置,与后端userapiconfig.py一致

production.py 设置数据库密码

import os

from configs.default import *

DEBUG = False

DATABASES['default'].update(
    {'PASSWORD': os.getenv('MYSQL_PASSWORD', '替换成数据库密码'),
     'HOST': os.getenv('MYSQL_HOST', '127.0.0.1')
     })


EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

创建数据列表

python manage.py migrate

创建数据表

测试项目是否运行

python manage.py runserver

测试项目是否运行

按键盘组合键Ctrl+C结束运行

收集静态文件

python manage.py collectstatic

创建管理员

python manage.py createsuperuser

创建管理员

伪静态设置

宝塔面板-网站-设置-伪静态
添加如下规则

location /media {
alias /www/wwwroot/www.sspanel.com/django-sspanel/media; 
}
location /static
{
alias /www/wwwroot/www.sspanel.com/django-sspanel/static; 
expires 12h;
}

location /
{
include uwsgi_params;
uwsgi_pass 127.0.0.1:8080;
}

伪静态

增加定时任务

python manage.py crontab add

运行项目

uwsgi uwsgi.ini

输出

uwsgi输出

CTRL+C终止
转为后台运行

yum -y install screen
screen -dmS uwsgi uwsgi uwsgi.ini

说明:后面有关于screen用法。
OK,尝试访问你的域名吧!

绑定管理员

管理员账号登录之后,先得去数据后台绑定一下(这也是安装步骤里面的一部分,只有管理员账号需要做这个设置,普通用户通过前台注册是自动绑定的。但请注意管理员账号一定要自己这样手动绑定一次,不然普通用户注册后都是没绑定的。)

浏览器打开你的网站/admin

例如: https://www.sspanel.com/admin

管理员帐号登陆

绑定管理员

ss账户-添加

绑定管理员

User:点击下拉选择管理员账号sspanel
设置一下端口,保存就可以了

绑定管理员

至此 前端配置完毕,重新打开站点进入后看到如下界面

django-sspanel

关于screen用法

以本文screen -dmS uwsgi uwsgi uwsgi.ini为例

screen -dmS  用来创建一个处于断开模式的会话,第一个uwsgi为session name。
screen -r uwsgi 可以恢复指定的会话,忘记了可以用screen -ls来查看。
Ctrl+A+D 暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。

详细用法见:linux screen 命令详解

参考

django-sspanel作者项目