环境准备
Linux操作系统:Ubantu 20.04
推荐使用云主机
笔者使用的是,阿里云学生认证成功后,送的云服务器服务。
本地部署的虚拟机也可以,就是要自己配置好网络,使用云服务器可以偷一下懒
第1步-更新软件安装包
在安装LNMP架构之前,先在Ubantu 20.04操作系统上运行以下命令来更新存储库和软件包。
sudo apt update
sudo apt upgrade -y
第2步-安装Nginx Web服务器
Nginx是一个高性能的Web服务器,它可以用作反向代理和缓存服务器。输入以下命令安装Ngnix Web服务器。
sudo apt install nginx -y
安装完成后,设置Ngnix在启动时自动启动。
sudo systemctl enable nginx
sudo systemctl start nginx
在浏览器中打开服务器的IP地址,显示Ngnix的欢迎页面
第3步-安装MariaDB数据库服务器
该服务器将管理FileRun数据库,该数据库保存应用程序设置,用户设置和有关文件的信息。
开始安装数据库服务器MariaDB将安装并运行:
sudo apt install mariadb-server mariadb-client -y
启动MariaDB服务,并MariaDB启动时自动启动。
sudo systemctl start mariadb
sudo systemctl enable mariadb
现在运行安装后安全脚本。
sudo mysql_secure_installation
该提示要求输入当前的MariaDB根密码。由于刚安装MariaDB,没有根密码,所以将期留空。然后按照提示设置密码:ENTER
设置root密码(我设的是:Huawei12#$)
剩下的步骤分别是移除默认的匿名账户、禁止root账户的远程登录、删除test数据库、重新加载特权表让更改生效等,一路按Y确认即可。
第4步-设置FileRun的数据库
先使用root账户登录MySQL;
sudo mysql
FileRun数据库可以随意命名,为了方便记忆,本示例使用filerun为该数据库的名称。
CREATE DATABASE filerun;
然后创建一个单独的MySQL用户账户来管理新创建的数据库。从管理和安全的角度来想,创建单一功能的数据库和账户更安全。与数据库的命名一样,这里使用’filerun’为用户名,。
CREATE USER 'filerun'@'localhost' IDENTIFIED BY 'YOUR-DB-PASSWORD';
注:这里的’YOUR-DB-PASSWORD’ 是设置你filerun数据库的filerun用户的密码,笔者设置为了’Huawei12#$’
现在授予用户对于新创建的数据库的所有权限:
GRANT ALL ON filerun.* TO 'filerun'@'localhost';
在用户分配了对数据库的访问权限后,执行刷新权限操作以确保正在运行的MySQL实例知道最近的权限分配:
FLUSH PRIVILEGES;
结束MySQL的配置,退出会话:
exit
记下数据库名称filerun、用户名filerun和密码,后续的配置会再次使用到这些数据。
第5步-安装PHP 7.4
输入以下命令安装PHP 7.4和FileRun所需的扩展。
sudo apt install php7.4 php7.4-fpm php7.4-mysql php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-mbstring php7.4-xml php7.4-zip php7.4-gd php7.4-curl php7.4-gd php7.4-ldap php7.4-imagick -y
安装完成后,可以运行以下命令来确认PHP版本:
php -v
安装memcached,安装之后网页加载速度有明显的提升,因此建议安装。
sudo apt install memcached libmemcached-tools php-memcached -y
第6步-安装PHP ionCube 扩展
手动安装PHP扩展ionCube:
下载软件包(Linux 64位)
sudo wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
解压压缩包
sudo tar -xzf ioncube_loaders_lin_x86-64.tar.gz -C /usr/lib/php
配置PHP扩展的基础配置:
sudo vim /etc/php/7.4/fpm/conf.d/00-ioncube.ini
并在里面粘贴以下内容:
zend_extension = /usr/lib/php/ioncube/ioncube_loader_lin_7.4.so
安装ionCube扩展后,创建一个文件,PHP会自动将其附加到其配置中。这将包括FileRun的所有设置。
sudo vim /etc/php/7.4/fpm/conf.d/filerun.ini
将以下内容粘贴到创建的文件中
expose_php = Off
error_reporting = E_ALL & ~E_NOTICE
display_errors = Off
display_startup_errors = Off
log_errors = On
ignore_repeated_errors = Off
allow_url_fopen = On
allow_url_include = Off
variables_order = "GPCS"
allow_webdav_methods = On
memory_limit = 128M
max_execution_time = 300
output_buffering = Off
output_handler = ""
zlib.output_compression = Off
zlib.output_handler = ""
safe_mode = Off
register_globals = Off
magic_quotes_gpc = Off
upload_max_filesize = 20M
post_max_size = 20M
enable_dl = Off
disable_functions = ""
disable_classes = ""
session.save_handler = files
session.use_cookies = 1
session.use_only_cookies = 1
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_httponly = 1
date.timezone = "UTC"
注意:可以在这里找到FileRun建议的最新PHP设置:http://docs.filerun.com/php_configuration
笔者实测 upload_max_filesize = 20M post_max_size = 20M两个值可以适当改大一些,可以提高上传大文件时的速度,但不能太大,否则可能适得其反,两个值要相同,个人建议设置在20M-200M之间。(实验时,两个数据笔者填了100M)
最后,重新启动PHP-FPM,并设置开机自启动。
sudo systemctl restart php7.4-fpm
sudo systemctl enable php7.4-fpm
检查运行状态:
systemctl status php7.4-fpm
输出的状态时 active (running).
如果上述命令运行后没有立即退出,需要按q 才能退出。
第7步-使用PHP配置NGINX
创建一个 Nginx 服务器块。NGINX 服务器块就像 Apache 中的虚拟主机。不使用默认服务器块,因为它不足以运行 PHP 代码,如果修改它,它就会变得一团糟。因此,通过运行以下命令删除 sites-enabled 目录中的默认符号链接。(它仍然可以作为 /etc/nginx/sites-available/default 使用。)
sudo rm /etc/nginx/sites-enabled/default
然后在目录下创建一个全新的服务器块文件*/etc/nginx/conf.d/*
sudo vim /etc/nginx/conf.d/default.conf
在里面粘贴以下内容:
server {
listen 80;
listen [::]:80;
server_name _;
root /var/www/html/;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
include fastcgi_params;
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
# A long browser cache lifetime can speed up repeat visits to your page
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
# disable access to hidden files
location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}
}
配置文件上传网盘的最大值
1.打开nginx的配置文件(通常位于/etc/nginx/nginx.conf
)。
sudo vim /etc/nginx/nginx.conf
2.在http块中,找到或添加以下行:
client_max_body_size 100M;
这将设置请求值的最大大小为1024MB。可以根据自己的需要增加或减少这个值。
3. 保存并关闭文件。
/wq!
然后测试NGINX配置:
sudo nginx -t
如果测试成功,重新加载NGINX:
sudo systemctl reload nginx
以上服务器的配置需求基本完成,可以继续安装FileRun。
如果测试不成功,检测上面步骤有没有出错的地方。
第8步-安装FileRun
从网络服务器的根文件夹中清除默许文件 /var/www/html
cd /var/www/html/
sudo rm index.nginx-debian.html
下载文件运行
sudo wget -O FileRun.zip https://filerun.com/download-latest-ubuntu-nginx
在2023年7月6号,发现FileRun官方已经不公开个人免费版的客户端了,可以下载以下的百度云链接里面的客户端文件,然后通过远程连接工具传输文件到云服务器里,推荐的工具有FinalShell、Xshell等等。
传输成功后就安装uzip工具在云服务器里面解压文件。
FileRun客户端文件下载链接:https://pan.baidu.com/s/1hVbkrSbho7v9xB7QoPbt4A?pwd=8888
安装unzip
sudo apt-get install unzip
提取下载的FileRun存档
sudo unzip FileRun.zip
注意:下载百度云链接的文件,要先传输到云服务器再解压,以实际下载的文件名为准,切记不要照搬)
使HTTP服务器成为文件夹的所有者,以便它可以进行更改
sudo chown -R www-data:www-data /var/www/html/
同时给最高权限
sudo chmod -R 777 /var/www/html
打开浏览器并将其指向 http://YOUR-SERVER-IP
然后按照提示来完成操作
单击以继续。查看服务器要求检查并确保没有红色错误消息: Next
单击以继续数据库连接设置: Next
输入在上述步骤2中的使用的: Database name filerun
输入: MySQL user filerun
输入: Password YOUR-DB-PASSWORD
然后单击Next
FileRun安装成功
注意要记下密码
登录成功
接下来先改上传中文翻译文件把界面改成中文
或者:
汉化文件Chinese.php :https://pan.baidu.com/s/1IktZsVBVyIf5EBh6Xn8Iww?pwd=8888
然后导入汉化文件
Save changes 之后,需要刷新一下页面,但是在 Chrome浏览器 中似乎并没有完全汉化,删了 cookie 也一样,换Edge浏览器登录filerun就好了
更改superuser密码(密码设置为:Huawei12#$)
第9步-配置目录+安装缩略图
安装完成后FileRun需要写权限的唯一目录是system/data,因此可以仅允许PHP对system/data有写权限,其他文件需要root权限才能修改:
sudo chown -R root:root /var/www/html
FileRun 文件夹是 PHP 需要写访问权限的唯一文件夹
sudo chown -R www-data:www-data /var/www/html/system/data
为superuser配置存储文件的主目录
现在让我们设置 FileRun 超级用户的主文件夹。主文件夹路径指向位于 Web 服务器公共区域之外(即外部)的文件夹非常重要。
可以创建一个文件夹并将所有FileRun文件存储在其中:/var/www/html/files
sudo mkdir /files
sudo chown www-data:www-data /files
以 root 身份连接到 MySQL 服务器:
sudo mysql
更新配置的 MySQL 用户帐户并删除ALTER和DROP权限。
撤销 ALTER 和 DROP 权限是出于安全和数据完整性的考虑。ALTER 权限允许用户修改数据库中的表结构,而 DROP 权限允许用户删除数据库中的表,如果不仔细控制这两个权限,可能会导致用户无意中或有意删除或修改重要的数据,从而造成数据丢失或破坏数据完整性。
REVOKE ALTER, DROP ON filerun.* FROM 'filerun'@'localhost';
刷新 MySQL 的权限表,使最新的权限更改生效
FLUSH PRIVILEGES;
exit
注意:在将来安装任何 FileRun 软件更新之前,需要重新添加这些权限。为此,再次连接
到数据库服务器并运行以下命令:
让 ‘filerun’@‘localhost’ 用户能够在 filerun 数据库中对表结构进行修改和删除表的操作。这通常是在开发或维护数据库应用程序时需要的权限,以便进行必要的表结构变更或删除操作。
sudo mysql
GRANT ALTER, DROP ON filerun.* TO 'filerun'@'localhost';
FLUSH PRIVILEGES;
exit;
在控制面板里为superuser用户设置主目录
安装ImageMagick和Ffmpeg
为了生成图像文件,摄影文件甚至PDF文档的缩略图,按以下方式安装ImageMagick:
sudo apt install imagemagick -y
并在控制面板的 FileRun 中启用它,在Configuration> Interface>Thumbnails and preview部分下,通过将ImageMagick support的设置Mode为IMagick PHP Extension. 请按下Check version按钮以确保 FileRun 可以使用该设置。
为了生成视频文件的缩略图,按以下方式安装FFmpeg:
sudo apt install ffmpeg -y
并使用路径在 *System configuration > Files >*部分下的控制面板的 FileRun 中启用它。Image preview /usr/bin/ffmpeg
以上基本网盘配置完成,可以直接使用网盘,直接IP地址访问
现在,可以上传文件并可以看到不同格式文件的缩略图啦(域名是申请的)
第10步-实现self-signed(自签名)证书保护网盘
- 安装 OpenSSL 工具
您需要先在服务器上安装 OpenSSL 工具。在 Ubuntu 上,可以使用以下命令安装 OpenSSL:
sudo apt update
sudo apt install openssl
2. 生成私钥
使用以下命令创建该目录,并确保您有写入该目录的权限:
sudo mkdir -p /etc/nginx/ssl
sudo chown -R $USER:$USER /etc/nginx/ssl
接下来,使用以下命令生成一个 2048 位的 RSA 私钥:
sudo openssl genrsa -out /etc/nginx/ssl/mydomain.key 2048
这将在 /etc/nginx/ssl
目录下生成一个名为 mydomain.key
的私钥文件。
- 生成自签名证书
然后,使用以下命令生成一个有效期为 365 天的自签名证书:
sudo openssl req -new -x509 -days 365 -key /etc/nginx/ssl/mydomain.key -out /etc/nginx/ssl/mydomain.crt
可以按提示输入信息或者自己回车键跳过就好
在执行此命令时,需要为申请的网站提供一些信息,例如组织名称、国家/地区、城市、常用名等。
- 配置 Nginx
打开配置文件
sudo vim /etc/nginx/conf.d/default.conf
在 Nginx 的配置文件中添加以下内容:
server {
listen 443 ssl;
server_name mydomain.com; # 域名或 IP 地址
ssl_certificate /etc/nginx/ssl/mydomain.crt;
ssl_certificate_key /etc/nginx/ssl/mydomain.key;
... # 其他配置
}
注意,需要将 server_name
指令设置为域名或 IP 地址。
- 重启 Nginx
最后,重新启动 Nginx 使配置生效:
sudo systemctl restart nginx
现在,已经成功生成了自签名证书,并在 Nginx 服务器上配置了 SSL/TLS。注意,因为自签名证书不受信任,访问者可能会看到浏览器警告。如果网站是公共可访问的,仍然应该使用经过验证的 SSL/TLS 证书以确保访问者的安全性和信任。
最后-关于申请域名
申请域名不是必要的步骤,也可以没有域名,单纯的IP地址访问网盘。
申请域名是为了申请CA证书,申请CA证书是为了保护网站的访问安全(没域名申请不了CA证书)。
没有CA证书的保护,搭建的网盘容易数据泄露、篡改攻击、中间人攻击等等
域名申请的网站有很多,有免费的,有付费的,这里只写我推荐的。
域名申请及域名绑定IP地址教程
:https://www.bilibili.com/video/BV11E411L7AA/?share_source=copy_web&vd_source=11c796490f067784641c56082eab1526
注意:国内的使用域名和域名解析服务是需要申请备案的,备案网站的用途,备案时间很长很麻烦。所以建议国外的云主机+国外域名,不用审核。
步骤省略了… 试着自己去怎么实现为自己的私有网盘申请域名啦!