django-sspanel前端搭建

2018年6月1日更新:
这次更新内容主要增加了单端口多用户
对比一下旧教程,主要是前端配置文件有些变动,这版教程不改了,开新教程
前端新教程 django-sspanel前端搭建-201806
后端新教程 django-sspanel后端搭建-201806
博主的站点欢迎围观:augustdoit小站  

2018年5月8日更新:
面板作者更新很勤快,博主重新搭建了一次,这里也更新一下.     
支付宝模块开通需要签约,签约资料需要个体工商户执照等信息,所以没写支付模块。

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

参照
项目说明及预览图:django-sspanel
前端部署:面板部署
后端部署:节点部署

补充:先设置时区

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 # 需要设置数据库密码

一项一项来:

计划任务 cron.py


没改

数据库 db.py

# mysql 设置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'sspanel',   //数据库名
        'USER': 'sspanel',   //用户名
        'PASSWORD': 'xx',    //密码
        'HOST': '',
        '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

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

站点设置 sites.py

import base64


# 网站密钥
SECRET_KEY = '秘钥喽'

# 域名设置
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 = False
# 支付订单提示信息 修改请保留 {} 用于动态生成金额
ALIPAY_TRADE_INFO = 'augustdoit小站的{}元充值码'

# 91PAY 、ALIPAY只能开启一项
# 需要授权请联系:QQ群 634651237
USE_91PAY = False
# 自己的支付宝账号
ALIPAY_NUM = 'xx'

# 网站title
TITLE = 'sspanel'
SUBTITLE = 'sspanel'

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

# 网站邀请界面提示语
INVITEINFO = '仅站长测试用,不对外提供服务'

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

# 管理员账号
USERNAME = 'sspanel'
# 管理员ss端口
PORT = 10000
# 管理员私有token,用于后端接口调用
TOKEN = base64.b64encode(
    bytes('{}+{}'.format(USERNAME, PORT), 'utf8')).decode()

development.py 设置数据库密码

import os

from configs.default import *

# DEBUG设置
DEBUG = True

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

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

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

创建管理员

uwsgi配置

宝塔面板-编辑站点根目录内的uwsgi.ini文件

[uwsgi]
# config
chdir= /www/wwwroot/www.sspanel.com/django-sspanel/  //注意这里哦
plungins = python
socket = 127.0.0.1:8080     //注意这里哦,web改为127.0.0.1
module = apps.wsgi:application
pidfile = /tmp/django-sspanel.pid
master = True
vacuum = True
processes = 2
threads = 2
max-requests=10000

伪静态设置

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

location /media {
alias /www/wwwroot/www.sspanel.com/django-sspanel/media; 
}
location /static
{
alias /www/wwwroot/www.sspanel.com/django-sspanel/static; #静态文件地址,js/css
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

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

管理员帐号登陆

绑定管理员

ss账户-添加

绑定管理员

User:点击下拉选择管理员账号sspanel
端口:10000 注意这个管理员端口,要与之前 站点设置 sites.py一致,后端设置时也需要一致。
加密类型、协议、混淆都是从sites.py导入的,不用改。
其他看着改吧

绑定管理员

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

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后端搭建: django-sspanel后端搭建

其他参考

ShadowsocksR 推荐协议混淆设置
支付宝当面付插件配置
如何正确的debug
更新日志