最近发现在没有微信、QQ之类的通信软件的情况下传输文件比较麻烦,刚好手头上有一台闲置的VPS,那就拿来用用吧.
需求
首先要说的当然是需求.需要传送的文件都比较小,所以没有考虑网速.需求主要有三个:
* 便捷访问: 不需要登录即可下载文件
* 上传文件要足够方便
* 不能太丑
于是就有了一些硬件需求:
* 有一台VPS
* 硬盘空间不能太小(5G以上)
这篇教程的目标读者
鉴于需要使用的命令有点多,所以最好满足以下需求:
1. 能够熟练使用基本的Linux命令(ls
, cd
, mkdir
, chmod
等等 )
2. 能够初步使用GIt
3. 在日常使用的电脑中安装了Git
注意:
* 由于这只是日常搞机,所以没有考虑出错
* 由于VPS上没有重要文件,所以没有考虑安全性
使用的软件及系统
- Ubuntu 18.04
- Git
- LEMP中的LEP(LEMP安装教程可以看这里)
- DirectoryLister
- Parsedown
开始之前
请先安装好Nginx
和PHP
,这里有教程
执行以下命令:
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,有什么问题欢迎在评论区留言,一般在一天之内有答复.