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
Nginx & Mysql
是必须的,为了方便也装了PHP
及phpmyadmin
参照:宝塔官网(简单好用的Linux/Windows服务器管理面板)
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh
完成后输出管理页面地址、端口以及账户、密码。
浏览器打开宝塔面板,首次登陆就会推荐安装LANMP,选LNMP。
宝塔面板-网站-添加站点(可以同时添加数据库)
站点名称 www.sspanel.com
根目录 /www/wwwroot/www.sspanel.com
数据库名 sspanel
数据库用户名 sspanel
数据库密码 sspanel
宝塔面板-网站-设置-域名管理 添加域名 sspanel.com
宝塔面板-网站-设置-SSL-Let’s Encrypt 申请 SSL
项目地址:https://github.com/pyenv/pyenv
yum -y install git
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 init
到SHELL
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
重启令其生效
exec "$SHELL"
source ~/.bash_profile
安装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
回显结果如图字样说明安装成功
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
cd /www/wwwroot/www.sspanel.com
git clone -b master https://github.com/Ehco1996/django-sspanel.git
因为目录结构的问题,更改下网站目录设置
宝塔面板-网站-设置-网站目录
在网站目录后加入/django-sspanel
(如图所示)
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 # 需要设置数据库密码
一项一项来:
没改
# 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',
},
}
}
# 是否开启邮件功能
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>'
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()
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'
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.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
输出
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导入的,不用改。
其他看着改吧
至此 前端配置完毕,重新打开站点进入后看到如下界面
以本文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后端搭建