导读
摘录自项目主页说明:
owllook 是一个基于其他搜索引擎构建的垂直小说搜索引擎,owllook目的是让阅读更简单、优雅,让每位读者都有舒适的阅读体验,如搜书、阅读、收藏、追更、推荐等功能。
owllook 是一款使用 Python 编写的小说搜索引擎,无论结构以及用户体验来说都挺不错,系统使用 MongoDB 及 Redis 做数据存储,且附带众多规则,搭建后可迅速开设一个简单的小说搜索引擎。
本次,将以 CentOS 作为基础系统,一步步搭建出一个简单的小说搜索引擎。
演示可观看:https://read.free.gd
系统安装
由于程序依赖于 Python、MongoDB、Redis 等,在安装之前,我们需要先解决依赖环境!
因是在 Proxmox 中进行安装,所以 MongoDB 以及 Redis 都会存放在不同的 LXC 中,避免单机压力过大问题。
MongoDB
在 Proxmox 中开设一台 LXC 小鸡,系统选择 Ubuntu,并配置网络 10.10.10.2,开启后进入控制台开始安装
apt update && apt upgrade -y && apt install wget -y
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.16.tgz
tar zxf mongodb-linux-x86_64-4.0.16.tgz
mv mongodb-linux-x86_64-4.0.16 /usr/local/mongodb
mkdir -p /var/lib/mongodb
useradd -s /sbin/nologin mongod
chown -R mongod:mongod /var/lib/mongodb
cat > /etc/mongod.conf << EOF
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: ${mongo_data_dir}/mongod.log
# Where and how to store data.
storage:
dbPath: ${mongo_data_dir}
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
unixDomainSocket:
enabled: false
#security:
# authorization: enabled
#operationProfiling:
#replication:
#sharding:
EOF
cat > /lib/systemd/system/mongod.service << EOF
[Unit]
Description=MongoDB Database Server
After=multi-user.target
Documentation=https://docs.mongodb.org/manual
[Service]
User=mongod
Group=mongod
Environment="OPTIONS=-f /etc/mongod.conf"
EnvironmentFile=-/etc/sysconfig/mongod
ExecStart=/usr/local/mongodb/bin/mongod $OPTIONS
ExecStartPre=/bin/mkdir -p /var/run/mongodb
ExecStartPre=/bin/chown mongod:mongod /var/run/mongodb
ExecStartPre=/bin/chmod 0755 /var/run/mongodb
PermissionsStartOnly=true
PIDFile=/var/run/mongodb/mongod.pid
Type=forking
LimitFSIZE=infinity
LimitCPU=infinity
LimitAS=infinity
LimitNOFILE=64000
LimitNPROC=64000
LimitMEMLOCK=infinity
TasksMax=infinity
TasksAccounting=false
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable mongod.service
systemctl start mongod.service
Redis
在 Proxmox 中开设一台 Alpine 小鸡,配置网络 10.10.10.3,进入控制台执行命令:
apk update
apk upgrade
apk add redis
rc-update add redis default
service redis start
Python
最后再开启一台小鸡,这次选用 CentOS 操作系统,配置 IPv6 为 2606:4700:xxxx::xxxx,内网地址为 10.10.10.3,其实本次选择三个不同的系统,也只是想说明下,任何东西其实在不同的系统中都可以完成对应的操作,只是取决于是否适合而已。
yum -y update
yum -y install epel-release
yum -y install wget git curl screen bzip2
wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh
chmod -R a+x Anaconda3-2019.10-Linux-x86_64.sh
./Anaconda3-2019.10-Linux-x86_64.sh
根据提示一次输入:Enter、yes、Enter
完成后刷新一次 Shell 并创建 Python 环境:
source ~/.bashrc
conda create -n python36 python=3.6
owllook
继续在 CentOS 中执行命令:
git clone https://github.com/howie6879/owllook.git /root/owllook
cd owllook
pip install pipenv
pipenv install --python ~/anaconda3/envs/python36/bin/python3.6
若上面最后一条命令执行失败,请执行下面两条命令:
pipenv run pip install pip==18.0
pipenv install
安装完成后,修改 /root/owllook/owllook/config/config.py,将
VAL_HOST = os.getenv('VAL_HOST', 'true')
修改为
VAL_HOST = os.getenv('VAL_HOST', 'false')
同时查找所有涉及到 MongoDB 及 Redis 地址的文件,将其改为自己的 MongoDB 与 Redis 地址。
开启反代
在启动程序之前,咱们先安装一个 Nginx 对程序进行反代,否则每次访问都得加上端口号。
yum install -y nginx
systemctl enable nginx
创建文件 /etc/nginx/conf.d/owllook.conf
server {
listen 80;
server_name read.free.gd;
location / {
proxy_set_header X-Real-IP remote_addr;
proxy_set_header X-Forwarded-Forproxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto scheme;
proxy_set_header Hosthttp_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://0.0.0.0:8001;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
启动项目
systemctl start nginx
cd /root/owllook
pipenv run gunicorn -c owllook/config/gunicorn.py --worker-class sanic.worker.GunicornWorker owllook.server:app
接着打开网站看看,已经成功可用了!