meanTorrent是一个基于Node.js的PT站程序,由国人开发者耗时2年多开发完成,现阶段还在不断的完善更新中,可以说是目前最有潜力的一款PT站程序了。
我将在本文使用CentOS7X64系统,带领你部署一个可以用在生产环境的meanTorrent。在开始之前你应该提前准备好如下环境:
1.一个Gmail邮箱,这将用于后续程序的邮件部署。
2.一台VPS,你的商家没有封锁25端口。
使用Xshell登录到机器内,更新系统/安装依赖/安装开发工具包:
yum -y update yum -y install wget git screen libicu-devel yum -y groupinstall "Development Tools"
关闭防火墙:
systemctl stop firewalld.service systemctl disable firewalld.service
关闭SELinux:
vi /etc/selinux/config SELINUX=disabled setenforce 0
安装nvm,安装完成后关闭你的Xshell重新登录才能正常使用:
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
接着使用nvm安装Node.js:
nvm install v8.12.0
然后安装bower:
npm install -g bower
现在来安装Mongodb数据库,新建一个源:
vi /etc/yum.repos.d/mongodb-org-3.6.repo
写入:
[mongodb-org-4.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
然后yum安装:
yum -y install mongodb-org
完成之后,启动mongodb以及设置开机启动:
systemctl enable mongod.service systemctl start mongod.service
现在就就可以拉取meanTorrent项目文件了:
git clone https://github.com/taobataoma/meanTorrent.git cd meanTorrent
安装依赖包:
npm install
安装完成之后会提示我们有很多漏洞需要进行修补,我们执行:
npm audit fix
然后安装bootstrap的一些组件:
bower install --allow-root
现在你就可以尝试用开发模式运行meanTorrent了:
npm start
我们先键盘组合键Ctrl+C退出来,接着部署meanTorrent生产环境所需的东西。
首先我建议安装一个adminMongo,这是一个可视化的Mongodb数据库管理工具,就类似于phpMyAdmin,我想大家都知道phpMyAdmin是有多么的方便,由于meanTorrent是使用的Mongodb,我们并不熟悉这个数据库类型,所以这里我们可以借助adminMongo来轻松的维护meanTorrent后期在生产过程中所遇到的数据库相关问题。
安装adminMongo非常简单,几条命令就可以解决,首先我们使用screen创建一个新的会话:
screen -S db
在这个新会话中执行如下命令:
cd .. git clone https://github.com/mrvautin/adminMongo.git && cd adminMongo npm install npm start
adminMongo应该就运行成功了,但是这个工具它默认是监听的本地1234端口,我们想要访问的话,有两个方法:
1.建立一个SSH隧道
2.反向代理
这里我选择使用反向代理,反正待会meanTorrent也需要反向代理,所以现在我们使用键盘组合键Ctrl+A+D切出来。
现在安装Nginx,用于反向代理,新建一个源:
vi /etc/yum.repos.d/nginx.repo
写入:
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1
然后yum安装:
yum -y install nginx
启动Nginx以及设置开机启动:
systemctl start nginx systemctl enable nginx
新建一个Nginx站点配置文件:
vi /etc/nginx/conf.d/db.conf
写入:
server { listen 12345; server_name 你的服务器公网IP; location / { proxy_pass http://0.0.0.0:1234; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_redirect off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
重启Nginx:
systemctl restart nginx
现在访问你的服务器公网IP+端口12345应该可以访问到这个adminMongo的界面了:
要使用adminMongo连接我们的数据库也很简单,Connection name随便定义一个名字,然后Connection string填写如下内容:
mongodb://127.0.0.1:27017
我们需要注意的是这个可视化工具没有账号/密码验证设置,各位在使用完毕之后务必停止adminMongo的运行。或者在Nginx配置文件内加上访问密码的设置,这里就不做说明了,我这边反正是使用完就停止运行。要停止adminMongo的运行,你应该先Ctrl+C退出运行,然后Ctrl+A+D切回我们当前的shell。
接着我们再新建一个站点配置文件,这个用于meanTorrent的反向代理:
vi /etc/nginx/conf.d/pt.conf
写入:
server { listen 80; server_name 你的站点域名; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_redirect off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
然后重启Nginx:
systemctl restart nginx
现在你应该编辑生产环境所需的配置文件:
cd /root/meanTorrent vi config/env/production.js
在这个配置文件,你必须要修改发信设置,因为meanTorrent强制用户注册必须要验证邮件,之前要你们准备的Gmail邮箱在这里就体现出作用了:
mailer: { from: process.env.MAILER_FROM || '[email protected]', options: { service: process.env.MAILER_SERVICE_PROVIDER || 'service name like as: Gmail', imap: process.env.MAILER_IMAP || 'imap.gmail.com', auth: { user: process.env.MAILER_EMAIL_ID || '[email protected]', pass: process.env.MAILER_PASSWORD || 'mail password' } } },
接着你应该编辑这个配置文件,在这个配置文件内几乎包含了meanTorrent的所有可选设置:
vi config/env/torrents.js
我个人认为在这个配置文件内,你至少应该更改如下设置:
app: { name: '站点名字', domain: 'http://你的站点域名', admin: '管理员邮箱', showDemoWarningPopup: false, cronTimeZone: 'Asia/Shanghai', dbTimeZone: 480, showClientDebugLog: true, writeServerDebugLog: true },
接着往下翻还有Tracker服务器的地址:
announce: { url: 'http://你的站点域名/announce',
默认首页有一段测试账号密码的文字,你应该找到这个选项关闭:
showDemoSignMessage: false,
还有更多的自定义设置,各位自行参考这个项目的主页或者wiki,这里就不多做说明了。
现在使用screen新建一个会话:
screen -S pt
在新会话内执行如下命令,启动meanTorrent的生产模式:
npm run start:prod
然后你应该Ctrl+A+D退出当前会话,这样meanTorrent就在后台运行了。