【补充】在Windows系统本地部署 Alist网盘 并用 nginx 动态转发
【引言】
- 在我们平时都会因为想要共享系统本地的文件而发愁
- 同时也会因为分享文件的不便利性,苦恼不已。
- 偶然间我发现一个神奇的思路。
- Alist
- 一个文件列表程序,支持多个存储,并支持Web浏览和webdav,由gin和Solidjs提供支持。
- 重点:免费!
- Nginx
- 一个支持动态转发端口的神奇程序
- 重点:免费!
- Alist
- 二者结合会迸发出什么样的火花呢?
【一】Alist介绍
- Alist 官网
- Alist 开发文档
【1】官方介绍
### What's this
A file list program that supports multiple storage, and supports web browsing and webdav, powered by gin and Solidjs.
- 一个文件列表程序,支持多个存储,并支持Web浏览和webdav,由gin和Solidjs提供支持。
【2】支持的网盘列表
Support storage
Local storage
Crypt
Aliyundrive Open
aliyundrive
OneDrive /APP/ Sharepoint (global, cn,de,us)
189cloud (Personal, Family)
GoogleDrive
123pan/Share
Alist
邮票
自来水龙
PikPak / share
S3
UPYUN Storage Service
WebDAV
Teambition(China,International)
mediatrack
139yun (Personal, Family)
Wopan
MoPan
YandexDisk
BaiduNetdisk / share
Quark
Thunder
Lanzou
Aliyundrive share
Google photo
Mega.nz
Baidu photo
TeraBox
AList v2/v3
SMB
alias
115
Seafile
Cloudreve
Trainbit
UrlTree
IPFS
UC Clouddrive
Dropbox
Tencent weiyun
#Discussion
- 支持的网盘有:本地电脑磁盘、FTP、SFTP、WebDAV、SMB、对象存储、115、123、百度、阿里云、MEGA、谷歌云盘、谷歌相册、移动、天翼、onedrive、pikpak(这个网盘大家可以了解一下😁)、迅雷、夸克、蓝奏云、迅雷、Cloudreve等等。
- 从上面的列表来看,我们可以发现,它支持的种类还是很丰富的,几乎容纳了市面上所有的网盘
【3】小结
- 简单的来说就是他可以作为一种网盘的集合体,将市面上几乎所有的网盘揉到一起,做一个映射,让我们能通过Alist一个网盘挂载我们的所有网盘
【二】NGINX介绍
【1】什么是 nginx
- Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数。
- 其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
【2】nginx 可以做哪些事
(1)Nginx 作为 web 服务器
- Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php 等。
- 但是不支持 java。Java 程序只能通过与 tomcat 配合完成。
- Nginx 专为性能优化而开发, 性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,有报告表明能支持高 达 50,000 个并发连接数。
(2)正向代理
- Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。
- 正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访 问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。
(3)反向代理
- 反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。
- 我们只 需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址。
(4)负载均衡
-
增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的 情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负 载均衡
-
客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服 务器处理完毕后,再将结果返回给客户端。
【三】Alist安装
- 资金充裕的大佬们可以选择氪金,让你更强!
- 预算有限的建议自己亲手装个试试 QWQ
【1】Windows系统
(1)下载
-
官网地址:
-
我们是Windows系统就下载Windows版本
- 下载后的文件长这样
- 我们将文件解压
-
没错,你没看错,他真的只有一个运行程序,其他一概没有!
-
但是你运行以后就会产生很多东西了!
(2)安装运行
# Unzip the downloaded file to get the executable file:
unzip alist-xxxx.zip
# Run the program
.\alist.exe server
# Obtain administrator information The following two different versions, the new version also has random generation and manual settings
# Versions lower than v3.25.0
.\alist.exe admin
# higher than v3.25.0 version
# Randomly generate a password
.\alist.exe admin random
# Manually set a password `NEW_PASSWORD` refers to the password you need to set
.\alist.exe admin set NEW_PASSWORD
-
他官方文档是这么写的
-
我们已经下载到本地并有了
alist.exe
程序 -
那那我们只要切换到当前目录下执行
.\alist.exe server
- 就可以启动 alist 程序了
- 如果启动程序报错如下
- 这显示是端口冲突了,我们改一个端口即可
补充
- 如果启动不起来的话就修改自己的端口
- 默认端口是 5244
修改默认端口
- 位置在
AlistNew\data\config.json
{ "force": false, "site_url": "", "cdn": "", "jwt_secret": "9kyqa3RzsOSmJqsJ", "token_expires_in": 48, "database": { "type": "sqlite3", "host": "", "port": 0, "user": "", "password": "", "name": "", "db_file": "data\\data.db", "table_prefix": "x_", "ssl_mode": "" }, "scheme": { "address": "0.0.0.0", # 默认端口在这里,默认是 5244 我这里改成了 6969 "http_port": 6969, "https_port": -1, "force_https": false, "cert_file": "", "key_file": "", "unix_file": "", "unix_file_perm": "" }, "temp_dir": "data\\temp", "bleve_dir": "data\\bleve", "log": { "enable": true, "name": "data\\log\\log.log", "max_size": 50, "max_backups": 30, "max_age": 28, "compress": false }, "delayed_start": 0, "max_connections": 0, "tls_insecure_skip_verify": true }
修改并保存后重新启动 alist 程序
.\alist.exe server
允许访问即可
F:\桌面\alist-windows-amd64>.\alist.exe server INFO[2023-08-28 17:40:42] reading config file: data\config.json
INFO[2023-08-28 17:40:42] load config from env with prefix: ALIST_
INFO[2023-08-28 17:40:42] init logrus...
INFO[2023-08-28 17:40:42] start HTTP server @ 0.0.0.0:6969
INFO[2023-08-28 17:40:42] qbittorrent not ready.
- 直面的效果就是,卡住了,他不动了,这是我们访问
- 如果这时我们点击登录他会提示我们
(3)创建管理员用户
# Obtain administrator information The following two different versions, the new version also has random generation and manual settings
# Versions lower than v3.25.0
.\alist.exe admin
# higher than v3.25.0 version
# Randomly generate a password
.\alist.exe admin random
# Manually set a password `NEW_PASSWORD` refers to the password you need to set
.\alist.exe admin set NEW_PASSWORD
-
因为我们下的是最新版 , 高于 3.25.0 版本,所以我们执行下面的命令
-
注意这里,我们生成用户名和密码的时候要保持,前台程序正常运行
-
意思是卡主的这个界面,别关!重新开一个 CMD 窗口 !
-
# 这条命令会随机生成 密码
# 格式是 .\alist.exe 用户名 随机密码
.\alist.exe admin random
# 这条命令允许我们自定义密码
# 格式是 :.\alist.exe 用户名 set 自定义密码
.\alist.exe admin set NEW_PASSWORD
- 生成超级管理员成功
F:\桌面\alist-windows-amd64>.\alist.exe admin set 1314521
INFO[2023-08-28 17:49:55] reading config file: data\config.json
INFO[2023-08-28 17:49:55] load config from env with prefix: ALIST_
INFO[2023-08-28 17:49:55] init logrus...
INFO[2023-08-28 17:49:55] admin user has been updated:
INFO[2023-08-28 17:49:55] username: admin
INFO[2023-08-28 17:49:55] password: 1314521
F:\桌面\alist-windows-amd64>
- 回到登录页面登录
- 登陆成功
(4)守护进程
- 因为这种方式需要我们在本目录下启动 alist 程序,一旦程序窗口结束,代表这 alist 程序也就结束了
- 那我们挂载在网页上的,当然也就会随之崩溃了
** 方法一**
- 从以下位置下载最新版本
nssm
https://nssm.cc/download在新窗口中打开. - 解压缩存档并转到 的目录。
nssm.exe
- 按住Shift并右键单击空白区域,然后松开并按S或在此处选择“Powershell”,您现在应该看到一个名为“Windows PowerShell”的蓝色窗口。
- 类型。
.\nssm.exe install alist
- 为“路径”选择路径,例如 ;键入“参数”。
alist.exe``D:\alist\alist.exe``server
- 您可以在“详细信息”选项卡中自定义“显示名称”,“描述”和“启动类型”。
- 转到“I / O”选项卡,然后为“输出(标准输出)”和“输出(标准输出)”选择一个文件,例如。文件本身 () 可能不存在,但文件夹 () 必须存在。
D:\alist\stdout.log``stdout.log``D:\alist
- 点击“安装服务”。
您现在可以从 services.msc 或任务管理器启动该服务。
方法二
- 使用
.VBS
脚本启动和停止,分别创建两个脚本start.vbs和stop.vbs - 只需双击即可在与Alist启动程序相同级别的文件夹中启动它,不用担心没有响应,只需转到浏览器即可访问它
- 两个启动脚本
开始.vbs
Dim ws
Set ws = Wscript.CreateObject("Wscript.Shell")
ws.run "alist.exe server",vbhide
Wscript.quit
停止.vbs
Dim ws
Set ws = Wscript.CreateObject("Wscript.Shell")
ws.run "taskkill /f /im alist.exe",0
Wscript.quit
- 如果脚本无法创建,您可以自行下载:脚本下载在新窗口中打开
- 如果脚本不会被使用,您可以观看视频:参考视频在新窗口中打开
- 如何实现Windows自动启动,可以参考上面提到的脚本使用视频(秒)。
- 双击运行,开始.vbs
- 程序启动并在后台自动运行
- 双击运行,停止.vbs
- 程序关闭并自动杀死后台进程
(5)映射本地文件
-
它本身支持的网盘还是很多的,我这里演示的是本地挂载
-
点击管理,进入到管理后台
- 选择存储
- 添加存储
- 驱动选择:本地存储
- 添加存储
-
我们参照上述官方文档本地存储的参数进行配置
-
#根文件夹路径
-
要装入的文件夹的路径。例如:
-
Linux:
/root
-
窗户:
C:
-
-
挂载路径就是自己自定义的这个文件的名称,例如
- 点击添加
- 选择做侧边栏的主页
- 我们可以看到,本地文件已经被挂载成功了
-
并且通过右上角的视图,可以切换视图
- 这图片视频都可以显示,还可以下载上传(管理员权限)
-
游客需要开通额外的权限,
- 在后台管理的用户界面
-
至此,alist就完整的安装完了
- 更多精彩操作就需要自己探索了
【2】macOS系统
- 作者是穷鬼,买不起,Mac,自己研究吧,根据官方文档
【3】Linux系统
- 详见博客
【四】NGINX安装
【1】下载
- 我这里选择下载最新版本的,从上面的入口进去
- 下载Window版本的 1.24.0 稳定版本
【2】解压运行
- 解压下载好的压缩包
- 文件说明
- conf:存在Nginx配置文件的目录
- docs:存放Nginx文档的目录
- html:存放静态html文件的目录
- logs:存放Nginx日志的目录
- temp:存放临时文件的目录
【3】安装部署
1、下载完成后,解压缩,运行cmd,使用命令进行操作,不要直接双击nginx.exe,不要直接双击nginx.exe,不要直接双击nginx.exe
- 一定要在dos窗口启动,不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程,再启动才可以
2、使用命令到达nginx的解压缩后的目录
cd F:\桌面\NGINX\nginx-1.24.0
3、启动nginx服务,启动时会一闪而过是正常的
start nginx
4、查看任务进程是否存在,dos或打开任务管理器都行
tasklist /fi "imagename eq nginx.exe"
F:\桌面\alist-windows-amd64>tasklist /fi "imagename eq nginx.exe"
映像名称 PID 会话名 会话# 内存使用
========================= ======== ================ =========== ============
nginx.exe 22508 Console 1 6,208 K
nginx.exe 11556 Console 1 7,140 K
- 启动后会一闪而过,这是正常的,可以看一下任务是否启动确认,或打开任务管理器在进程中看不到nginx.exe的进程(双击nginx.exe时会显示在这里),需要打开详细信息里面能看到隐藏的nginx.exe进程。
- 如果都没有可能是启动报错了查看一下日志,在nginx目录中的logs文件夹下error.log是日志文件
- 常见的错误:
- (1)端口号被占用
- (2)nginx文件夹路径含中文
- 其他错误就详细看log中的描述
- 如果端口被占用,可以修改配置文件
F:\桌面\NGINX\nginx-1.24.0\conf\nginx.conf
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; server { # 默认是 80 ,我改成了自定义的 8800 listen 8800; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
- 访问成功的页面
【五】NGINX转发端口
【1】引言
- 因为我们的 Alist 目前部署在我们本地的机器上,只能内网访问,外网无法访问到,因此,我们需要利用nginx做端口的动态转发,让外面的人能够访问内部的东西
- 简单理解就是通过访问我们的 http://192.168.1.50:8800
- 转发到我们的 http://127.0.0.1:6969
【2】修改nginx配置文件
F:\桌面\NGINX\nginx-1.24.0\conf\nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
server {
# 默认是 80 ,我改成了自定义的 8800
listen 8800;
server_name localhost;
location / {
# 增加一个新的端口转发地址
proxy_pass http://127.0.0.1:6969/;
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
- 修改完成后保存,使用以下命令检查一下配置文件是否正确,后面是nginx.conf文件的路径,successful就说明正确了
nginx -t -c /nginx-1.24.0/conf/nginx.conf
F:\桌面\NGINX\nginx-1.24.0>nginx -t -c /nginx-1.24.0/conf/nginx.conf
nginx: the configuration file F:\桌面\NGINX\nginx-1.24.0\conf\nginx.conf syntax is ok
nginx: configuration file F:\桌面\NGINX\nginx-1.24.0\conf\nginx.conf test is successful
- 如果程序没启动就直接start nginx启动,如果已经启动了就使用以下命令重新加载配置文件并重启
nginx -s reload
- 关闭nginx服务使用以下命令,同样也是一闪而过是正常的,看一下是否进程已消失即可快速停止
nginx -s stop
- 完整有序的关闭
nginx -s quit
【3】最终效果
- 我们可以通过外网访问内网实现文件共享
本文来自博客园,作者:Chimengmeng,转载请注明原文链接:https://www.cnblogs.com/dream-ze/p/17663199.html