夜间模式暗黑模式
字体
阴影
滤镜
圆角
主题色
自建文件分享平台
最近发现在没有微信、QQ之类的通信软件的情况下传输文件比较麻烦,刚好手头上有一台闲置的VPS,那就拿来用用吧.

需求

首先要说的当然是需求.需要传送的文件都比较小,所以没有考虑网速.需求主要有三个:
* 便捷访问: 不需要登录即可下载文件
* 上传文件要足够方便
* 不能太丑

于是就有了一些硬件需求:
* 有一台VPS
* 硬盘空间不能太小(5G以上)

这篇教程的目标读者

鉴于需要使用的命令有点多,所以最好满足以下需求:
1. 能够熟练使用基本的Linux命令(ls, cd, mkdir, chmod等等 )
2. 能够初步使用GIt
3. 在日常使用的电脑中安装了Git

注意:
* 由于这只是日常搞机,所以没有考虑出错
* 由于VPS上没有重要文件,所以没有考虑安全性

使用的软件及系统

开始之前

请先安装好NginxPHP,这里有教程

执行以下命令:

sudo apt update  # update
sudo apt install git

第一步

搭建Git Server

这个网盘的文件上传功能由Git实现,我们需要把服务器变成一台Git Server

下面的命令基于这个教程,并做了一些改动

首先新建一个用户:

adduser git # 这里的git是用户名
# 会提示输入密码和用户信息,除了密码以外的信息都不重要

如果不想每次同步文件都输入密码,可以运行以下命令:

# 本机
ssh-keygen -t rsa -b 4096
# 命令完成后,SSH Key储存在用户文件夹下的.ssh
# 其中id_rsa是私钥,id_rsa.pub是公钥
# 服务器
mkdir /home/git/.ssh
nano /home/git/.ssh/authorized_keys
# 把本机的SSH Key输进去 (这里指的是id_rsa.pub)
# ctrl+x退出并保存

测试

在本机上运行以下命令以确定上述步骤没有出错:

# 本机
ssh git@your_ip # 请把your_ip换成你自己的
# 会要求输入密码

如果成功登陆,就表示上述步骤完成

第二步

安装DirectoryLister

DirectoryLister可以把文件夹中的文件显示在网页上,并且还能显示文件大小和最后修改时间.最重要的是,它支持用README.html对每一个文件夹中的文件进行描述.这意味着我们能够把一些纯文本文件直接显示在网页中.

首先选择一个目录(本篇中使用的目录是/home/git/html,也可以换成其他目录).

# 服务器
su git # 切换至git用户
mkdir /home/git/html
cd /home/git/html # 如果你选择的目录不是这个,请换成自己的目录

下载DirectoryLister并解压

# 服务器
wget https://github.com/ToyoDAdoubiBackup/DirectoryLister/archive/master.zip
unzip master.zip
rm master.zip # 移除master.zip文件

为了保证接下来的步骤不出现错误,把文件夹的权限设为777(任何用户有读写执行的权限)

# 服务器
cd ..  # 返回上一层文件夹
chmod -R 777 html/ # 更改目录权限,-R指更改文件夹内所有文件的权限

第三步

配置Nginx服务器

更改网站根目录

vim /etc/nginx/sites-available/your_config_file # 把your_config_file换成你的配置文件

把配置文件里的root改为/home/git/html

server {
    ...
    #root /var/www/html # 删除或注释这一行
    root /home/git/html;
    ...
}

检查配置文件是否有语法错误:

sudo nginx -t

出现以下提示就表示没有错误:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

打开浏览器,访问你的ip,如果出现以下类似的页面说明配置成功

第四步

更改网站标题等信息

这一部分源自DirectoryLiser魔改版的Github

修改网站中头部导航标题,去这个文件里搜索DOUBI Soft 然后全部替换为自己要改的。

nano resources/DirectoryLister.php #第197行


修改网站标签栏的标题,去这个文件里把开头 \<title> 标签中的DOUBI Soft替换为自己要改的。

nano resources/themes/bootstrap/index.php # 第28行


修改网站顶部公告栏内容,去这个文件里搜索顶部公告栏

nano resources/themes/bootstrap/index.php #第61行

nano中搜索文字的命令是Ctrl+W,vim中的是/你想要搜索的文字.
nano中跳到第n行的命令是Ctrl+Shift+-,然后输入跳到第几行; vim中的是:n.

第三步

使用Parsedown

虽然DirectoryLister使用了Prism来实现代码高亮的功能,但是每一次都要在代码前面加<pre><code class="language-xx">实在是太烦了,干脆把文件夹简介(README.html)改成README.md.

首先我们需要一个可以把markdown转换成HTML的工具.因为DirectoryLister是用PHP写的,所以这个工具最好也用PHP.于是在GIthub上找到了Paresedown

下载Parsedown

cd resources/themes/bootsrap/ # 切换目录
wget pan.truco.moe/resources/themes/bootstrap/Parsedown -O Parsedown.php

启用markdown

vim index.php

将下列红色框中的README.html改为README.md(第13、15行)

更改下面红色框的代码

把代码改为:

$markdown_text = file_get_contents($md_file);
$md_text = $Parsedown->text($markdown_text);
$md_text = '<div class="container readme-background" id="container_readme"><div class="readme">'.$md_text.'</div></div>';

代码较长,建议复制+粘贴

如果不会使用Markdown也没有问题,有两种解决方案:
1. 编写HTML,保存时把后缀名改为.md
2. 直接写纯文本(就是直接打字,不过没有特效)

注意:不能使用Microsoft Word编写

第五步

使用git进行文件同步

使用git进行文件同步的好处是适合一些刚入门的小白,而且能够进行”撤销”操作(更多GIt的用法可以看这个教程).不好的地方在于GIt开发的初衷并不是用来干这个的,所以如果只是自己使用,建议了解一下Rsync

先切换到网站根目录:

# 服务器
cd ~/html # 切换目录

新建一个文件.gitignore,这个文件的作用是告诉git哪些文件不需要同步

# 服务器
echo "
index.php
LICENSE
resources/*
" > .gitignore

现在运行以下命令:

# 服务器
git init # 初始化git目录
git config receive.denyCurrentBranch updateInstead # 保证文件实时同步
git add . 
git commit -m "message" # 可以把message改为其他文字

上面的命令只能让.git目录同步,但是不能让所有文件同步,所以还要在default_header.php加入一些代码.

输入以下命令来编辑这个文件:

# 服务器
cd resources/themes/bootstrap
nano default_header.php

输入以下代码:

<?php
$alongvarname = exec('git checkout', $outprint, $return_val);
?>

大功告成!

测试

测试文件同步功能

好了,现在可以试试在本机把这些代码下载下来

# 本机
git clone git@your_ip:html/.git # 把your_ip改为服务器的IP

README.html改为README.MD

# 本机
mv README.html README.md 

同步到服务器

# 本机
git add .
git commit -m "message" # 可以把message改成其他
git push # 推送到服务器

再次在浏览器地址栏中输入你的IP(或者域名),如果能够看到类似以下页面就说明安装成功

测试markdown对语言高亮的支持

在本机中新建一个目录并且下载用于测试的README.md文件:

mkdir test # 新建一个名为test的目录
wget pan.truco.moe/test/README.md

同步到服务器

# 本机
git add .
git commit -m "message" # 可以把message改成其他
git push # 推送到服务器

可能细心的读者已经发现,每一次我们新建了文件,都需要使用上面的三个命令才能推送到服务器.这是对的!

这是博主的成品:demo,有什么问题欢迎在评论区留言,一般在一天之内有答复.

暂无评论

发送评论 编辑评论


				
上一篇
下一篇