轻量级的论坛/社区程序-YourSpace

本文最后更新于:2024年8月2日 晚上

项目概述

本项目基于Python Flask框架编写,数据库采用MariaDB,结构精简,代码无冗余,前端界面简约美观。

项目仓库:https://github.com/Godtokoo666/yourspace

快速开始(以debian系为例)

1.安装相关软件包

1
sudo apt install -y python3 mariadb-server pkg-config libmariadb-dev git

配置MariaDB

初始化数据库

如果您有已建立好的MySQL/MariaDB数据库,请跳至配置数据库连接信息

执行MariaDB的安全脚本

1
sudo mysql_secure_installation

这个脚本会引导你完成以下步骤:

1.设置 root 密码

2.移除匿名用户

3.禁止 root 远程登录

4.删除测试数据库

5.重新加载权限表

建立数据库

进入mysql

1
mysql -u root -p

接下来输入密码或使用unix socket登录

创建数据库YourSpace

1
CREATE DATABASE YourSpace;

创建YourSpace用户并赋予YS库权限(可选)

1
2
3
CREATE USER 'yourspace'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON yourspace.* TO 'yourspace'@'localhost';
FLUSH PRIVILEGES;

2.下载源代码及Python依赖

下载源代码

1.可直接Download

2.也可使用git clone

1
git clone https://github.com/Godtokoo666/yourspace

配置Python虚拟环境

1
2
3
cd yourspace
python3 -m venv venv
source venv/bin/activate

下载Python依赖

1
pip install -r requirements.txt

3.配置数据库连接信息

编辑config.yaml

在SQLALCHEMY_DATABASE_URI:后填入正确的信息

格式:

1
SQLALCHEMY_DATABASE_URI: "mysql://username:password@localhost/yourspace"

4.启动程序

可直接启动run.py运行程序,但不建议,Flask内置的服务器仅推荐调试时使用

可使用WSGI Server gunicorn,requirement.txt已写入gunicorn,若无,请:

1
pip install gunicorn

接下来创建gunicorn配置文件gunicorn_config.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 是否开启debug模式
debug = False
# 访问地址
bind = "127.0.0.1:5000"
# 工作进程数
workers = 2
# 设置协程模式,后续支持
# worker_class="gevent"
# 最大客户端并发数量,默认情况下这个值为1000。此设置将影响gevent和eventlet工作模式
worker_connections=500
# 超时时间
timeout = 600
# 输出日志级别
loglevel = 'info'
# 存放日志路径
pidfile = "log/gunicorn.pid"
# 存放日志路径
accesslog = "log/access.log"
# 存放日志路径
errorlog = "log/error.log"
# gunicorn + apscheduler场景下,解决多worker运行定时任务重复执行的问题
preload_app = True

启动gunicorn

1
gunicorn -c gunicorn_config.py run:app

5.写入进程管理工具(以systemd为例)

在/etc/systemd/system下新建yourspace.service文件,并编辑

填入内容(/path/to/your/app需替换为正确的路径):

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Yourspace Main App
After=network.target

[Service]
WorkingDirectory=/path/to/your/app
ExecStart=/path/to/your/app/venv/bin/gunicorn -c gunicorn_config.py run:app
Restart=always

[Install]
WantedBy=multi-user.target

启动和管理服务

1
2
3
sudo systemctl daemon-reload
sudo systemctl start yourspace
sudo systemctl enable yourspace #启用开机自启和守护进程

6.部署至WEB服务器(以Nginx为例)

新建文件到/etc/nginx/site-enabled/yourspace

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
server{
listen 80;
listen [::]:80;
server_name yourserver_name;
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name yourserver_name;
ssl_certificate /path/to/yourcert;
ssl_certificate_key /path/to/yourkey;
location / {
proxy_pass http://localhost:5000;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
}
location ~ ^/(ws|terminal/.+)$ {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
}
}

之后重启nginx

DEMO

https://yourspace.funfs.com/

TO DO LIST

  • 加入SMTP邮箱验证
  • 异步ReWrite
  • 编写移动端前端UI

轻量级的论坛/社区程序-YourSpace
https://blog.funfs.com/project/yourspace/
作者
Godtokoo
发布于
2024年6月26日
许可协议