本文最后更新于 2023年9月17日 上午
前言 对NAS总是抱有好奇?对NAS的价格望而却步? 但是,如果你有树莓派,或者是Linux服务器,为什么不试试让它们变成自己的小型NAS?
NAS NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”。它是一种专用数据存储服务器。
大型的NAS,比如:群晖。可以有App,对手机照片进行备份,还可以对数据进行灾变处理,但是价格就比较贵了。而本次搭建NAS,主要满足:
操作思路 1. 在线访问数据 比如:.flv、.mp4、.jpg等等,我们使用PHP实现网络浏览,这里我们使用_h5ai:
2. 下载站 下载站,我们使用Aria2这个多线程下载器实现,难点是挂载到电脑上,也就是目录映射。最好能满足:
3. 挂载到本地磁盘 其实,本地挂载树莓派、服务器磁盘的选择有很多。比如:SMB、FTP等。但是,考虑安全和利用情况下,我还是选择Webdav。
Windows和macOS都支持挂载Webdav,但是可能会出现无法写的情况。我建议使用第三方免费工具:
以上两款软件也都是免费的。
本文使用Webdav挂载,如果你使用宝塔,或者使用SMB,那么也完全可以选择非Webdav协议挂载磁盘。
(宝塔不可使用Nginx Webdav插件)
总结 综上,我们本次需要安装:
Nginx:用来提供Web目录访问
PHP:用来映射目录,实现_h5ai
Nginx模块:Webdav模块和Fancyindex模块,用来实现Webdav
前排提示 本次教程,适用所有架构的Linux(arm架构和x86都可以)。PHP、Nginx的配置,使用编译安装的方法,可能比较硬核,需要耐心观看。
如果还是不知道如何操作,可以使用宝塔面板安装Nginx和PHP ,但是宝塔面板无法安装Webdav模块哦。
视频演示
服务器要求 如果是树莓派,那么没什么具体要求,有个可以刷写SD卡的软件即可(比如:https://www.balena.io/etcher )
但是,如果是服务器,最好选择高带宽的服务器,内存最好需要2G以上,否则编译PHP时,可能需要SWAP的支持。
如果你还买购买服务器,我们推荐:
另外,为大家争取到优惠*(੭ˊᵕˋ)੭ ଘ:
紧急、限时推荐【强烈推荐】:
以上链接,均为我们博客专享优惠链接了解
PHP PHP官方下载地址:https://www.php.net/downloads.php 。因为PHP8还是不稳定,所以我们选择PHP7.4。下载到服务器后,使用tar
对其解压,并进入这个目录,准备开始编译:
1 2 3 wget 'https://www.php.net/distributions/php-7 .4 .22 .tar.gz'sudo tar -xf php-7 .4 .22 .tar.gzcd php-7 .4 .22
因为,我们需要安装_h5ai
,所以编译参数可以(这个是我配置的PHP7.4,其他PHP版本可能略微不一样,需要自己判断):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ./configure \ --prefix=/usr/local/php7 \ --with -curl \ --with -mysqli \ --with -openssl \ --with -pdo-mysql \ --with -jpeg \ --enable-gd \ --enable-fpm \ --with -fpm-user=pi \ --with -fpm-group=pi \ --enable-bcmath \ --enable-xml \ --with -zip \ --enable-mbstring \ --enable-sockets \ --with -zlib \ --enable-fileinfo \ --enable-exif
为了达成这个编译参数,我们需要安装依赖。
依赖安装 之后,我们安装依赖,主要是一些编译库。
GCC 编译,肯定需要编译器的支持,后文的Nginx也需要这个。我们安装build-essential
即可安装GCC。类似于macOS的Xcode-commnad
。终端内输入:
1 sudo apt-get install build-essential
pkg-config 需要pkg-config,Debian发行版本Linux上可以这样安装:
1 sudo apt-get install pkg-config
libxml2 需要libxml2,Debian发行版本Linux上可以这样安装:
1 sudo apt-get install libxml2-dev
openssl 需要openssl,Debian发行版本Linux上可以这样安装。openssl是必须的,这个提供了加密支持,Nginx也需要这个:
1 sudo apt-get install openssl libssl-dev
sqlite3 需要sqlite3,Debian发行版本Linux上可以这样安装:
1 sudo apt-get install libsqlite3-dev
zlib 需要zlib,这个很重要用来处理文件
1 sudo apt-get install zlib1g-dev
libcurl 需要libcurl,用来调用curl:
1 sudo apt-get install libcurl4-openssl-dev
libpng&libjpeg 需要libpng和libjpeg,用来处理图片:
1 sudo apt-get install libpng-dev libjpeg-dev
oniguruma 需要oniguruma:
1 sudo apt-get install libonig-dev
libzip 需要libzip,用来生成和处理zip文件:
1 sudo apt-get install libzip-dev
配置 上面的配置依赖,全部安装好后,即可开始安装,在PHP源码目录(注意:一下信息需要修改):
–with-fpm-user:fpm进程属于的用户
–with-fpm-group:fpm进程属于的用户组
如果你在服务器上操作,建议创建一个www用户和www用户组:
1 2 3 4 5 6 sudo useradd www sudo groupadd www sudo usermod -a -G www www
而如果你是树莓派上操作,可以直接把自带的pi
用户,添加到一个用户组内,比如:
1 2 3 4 # 创建一个pi 用户组 sudo groupadd pi # pi 用户归属于pi 用户组 sudo usermod -a -G pi pi
假设,用户为pi
,且用户组也为pi
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ./configure \ --prefix=/usr/local/php7 \ --with -curl \ --with -mysqli \ --with -openssl \ --with -pdo-mysql \ --with -jpeg \ --enable-gd \ --enable-fpm \ --with -fpm-user=pi \ --with -fpm-group=pi \ --enable-bcmath \ --enable-xml \ --with -zip \ --enable-mbstring \ --enable-sockets \ --with -zlib \ --enable-fileinfo \ --enable-exif
其中:
等待Makefile生成完毕,并且没有错误: 之后,我们进行编译安装即可。
编译安装 上面的configure
配置没有问题,接下来就是编译和安装了,首先是编译:
这个时候,依照性能不同,编译时间也不同。注意:
上文的configure
配置要通过,否则编译可能缺少依赖。
设备内存小于2G,一般需要添加SWAP才可能编译成功,否则可能内存泄露,导致编译失败。
编译通过,我们就不测试了,直接安装:
测试运行 因为还没有注册为服务,并且我们需要解决一些php-fpm初始化的问题;所以我们现在手动运行PHP的FPM试试,如果你的PHP配置地址也和我一样(/usr/local/php7
),那么启动命令是其下路径的sbin/php-fpm
:
1 sudo /usr/ local/php7/ sbin/php-fpm
一般都有初始化问题,比如:
1 2 3 [14-Aug-2021 09:19:48] ERROR : failed to open configuration file '/usr/local /php7/etc/php-fpm.conf ': No such file or directory (2) [14-Aug-2021 09:19:48] ERROR : failed to load configuration file '/usr/local /php7/etc/php-fpm.conf ' [14-Aug-2021 09:19:48] ERROR : FPM initialization failed
解决方法很简单,我们把php-fpm的默认配置激活即可:
1 2 sudo mv /usr/ local/php7/ etc/php-fpm.conf.default /u sr/local/ php7/etc/ php-fpm.conf sudo mv /usr/ local/php7/ etc/php-fpm.d/ www.conf.default /usr/ local/php7/ etc/php-fpm.d/ www.conf
之后即可启动。如果不确定是否启动,可以用lsof
命令进行检测:
这样安装的PHP-fpm,只能这样启动。如果需要注册为systemctl服务,可以看看后文的服务注册。可以实现快捷启动和开机自启。
Nginx Nginx官方下载地址:http://nginx.org/en/download.html ,我们选择最新的稳定版本进行安装,最新的稳定版本是nginx-1.20.1。下载到服务器后,使用tar
对其解压,并进入这个目录,准备开始编译:
1 2 wget 'http://nginx.org/download/nginx-1 .20 .1 .tar.gz'tar -xf nginx-1 .20 .1 .tar.gz
参考编译参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ./configure \ --prefix=/usr/local/nginx \ --user=pi \ --group=pi \ --sbin-path=/usr/local/nginx/sbin/nginx \ --conf-path=/usr/local/nginx/nginx.conf \ --error-log-path=/var /log/nginx/error.log \ --http-log-path=/var /log/nginx/access.log \ --pid-path=/var /run/nginx.pid \ --lock-path=/var /run/nginx.lock \ --http-client-body-temp-path=/var /cache/nginx/client_temp \ --http-proxy-temp-path=/var /cache/nginx/proxy_temp \ --http-fastcgi-temp-path=/var /cache/nginx/fastcgi_temp \ --http-uwsgi-temp-path=/var /cache/nginx/uwsgi_temp \ --http-scgi-temp-path=/var /cache/nginx/scgi_temp \ --with -file-aio \ --with -threads \ --with -http_addition_module \ --with -http_auth_request_module \ --with -http_dav_module \ --with -http_flv_module \ --with -http_gunzip_module \ --with -http_gzip_static_module \ --with -http_mp4_module \ --with -http_random_index_module \ --with -http_realip_module \ --with -http_secure_link_module \ --with -http_slice_module \ --with -http_ssl_module \ --with -http_stub_status_module \ --with -http_sub_module \ --with -http_v2_module \ --with -mail \ --with -mail_ssl_module \ --with -stream \ --with -stream_realip_module \ --with -stream_ssl_module \ --with -stream_ssl_preread_module
当然,还建议添加模块:
1 2 --add -module=#PATH_TO_FANCYINDEX --add -module=#PATH_TO_WEBDAV_EXT
其中:
#PATH_TO_FANCYINDEX:Fancyindex模块
#PATH_TO_WEBDAV_EXT:Webdav模块
为了达成以上编译配置,还有模块,接下来我们安装依赖。
宝塔安装的方法,无法安装--add-module=#PATH_TO_WEBDAV_EXT
。
安装依赖 编译Nginx需要gcc+的环境支持,build-essential内包含gcc+套件,所以我们安装build-essential即可:
1 sudo apt-get install build-essential
因为nginx.conf中使用了正则表达式,所以编译Nginx时就需要把PCRE库编译进Nginx:
1 sudo apt-get install libpcre3 libpcre3-dev
当热,Nginx编译过程和Http相应过程还需要gzip格式的压缩,所以我们还需要安装zlib库用于对HTTP包的内容做gzip格式的压缩,可以这样安装:
1 sudo apt-get install zlib1g-dev
最后,现在SSL协议很重要,Chrome等主流浏览器,都开始默认相应HTTPS了,所以OpenSSL编译环境也很重要:
1 sudo apt-get install openssl libssl-dev
额外模块 为了更好的体验,我们安装额外的模块:
Fancyindex 如果我们需要进行目录映射,需要更好看的、更实用的目录映射,需要额外的Fancyindex模块支持:ngx-fancyindex:https://github.com/aperezdc/ngx-fancyindex
WebDav Nginx自带的Webdav支持不完善,需要额外的模块进行支持:nginx-dav-ext-module:https://github.com/arut/nginx-dav-ext-module 。 为此,需要安装依赖:
1 2 sudo apt-get install libxml2-dev sudo apt-get install libxslt-dev
配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ./configure \ --prefix=/usr/local/nginx \ --user=pi \ --group=pi \ --sbin-path=/usr/local/nginx/sbin/nginx \ --conf-path=/usr/local/nginx/nginx.conf \ --error-log-path=/var /log/nginx/error.log \ --http-log-path=/var /log/nginx/access.log \ --pid-path=/var /run/nginx.pid \ --lock-path=/var /run/nginx.lock \ --http-client-body-temp-path=/var /cache/nginx/client_temp \ --http-proxy-temp-path=/var /cache/nginx/proxy_temp \ --http-fastcgi-temp-path=/var /cache/nginx/fastcgi_temp \ --http-uwsgi-temp-path=/var /cache/nginx/uwsgi_temp \ --http-scgi-temp-path=/var /cache/nginx/scgi_temp \ --with -file-aio \ --with -threads \ --with -http_addition_module \ --with -http_auth_request_module \ --with -http_dav_module \ --with -http_flv_module \ --with -http_gunzip_module \ --with -http_gzip_static_module \ --with -http_mp4_module \ --with -http_random_index_module \ --with -http_realip_module \ --with -http_secure_link_module \ --with -http_slice_module \ --with -http_ssl_module \ --with -http_stub_status_module \ --with -http_sub_module \ --with -http_v2_module \ --with -mail \ --with -mail_ssl_module \ --with -stream \ --with -stream_realip_module \ --with -stream_ssl_module \ --with -stream_ssl_preread_module
如果你安装额外模块获得更好体验:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 ./configure \ --prefix=/usr/local/nginx \ --user=pi \ --group=pi \ --sbin-path=/usr/local/nginx/sbin/nginx \ --conf-path=/usr/local/nginx/nginx.conf \ --error-log-path=/var /log/nginx/error.log \ --http-log-path=/var /log/nginx/access.log \ --pid-path=/var /run/nginx.pid \ --lock-path=/var /run/nginx.lock \ --http-client-body-temp-path=/var /cache/nginx/client_temp \ --http-proxy-temp-path=/var /cache/nginx/proxy_temp \ --http-fastcgi-temp-path=/var /cache/nginx/fastcgi_temp \ --http-uwsgi-temp-path=/var /cache/nginx/uwsgi_temp \ --http-scgi-temp-path=/var /cache/nginx/scgi_temp \ --with -file-aio \ --with -threads \ --with -http_addition_module \ --with -http_auth_request_module \ --with -http_dav_module \ --with -http_flv_module \ --with -http_gunzip_module \ --with -http_gzip_static_module \ --with -http_mp4_module \ --with -http_random_index_module \ --with -http_realip_module \ --with -http_secure_link_module \ --with -http_slice_module \ --with -http_ssl_module \ --with -http_stub_status_module \ --with -http_sub_module \ --with -http_v2_module \ --with -mail \ --with -mail_ssl_module \ --with -stream \ --with -stream_realip_module \ --with -stream_ssl_module \ --with -stream_ssl_preread_module \ --add-module=/usr/local/src/NginxModule/nginx-dav-ext-module \ --add-module=/usr/local/src/NginxModule/ngx-fancyindex
编译安装 上面的configure
配置没有问题,接下来就是编译和安装了,首先是编译:
这个时候,依照性能不同,编译时间也不同。注意:
上文的configure
配置要通过,否则编译可能缺少依赖。
编译通过,我们就不测试了,直接安装:
测试运行 因为还没有注册为服务,所以我们现在手动运行Nginx试试,如果你的Ngixn配置地址也和我一样(/usr/local/nginx
),那么启动命令是:
1 sudo /usr/ local/nginx/ sbin/nginx
正常是没有信息返回的,但是如果你有报错,那就有问题了,比如:
1 nginx: [emerg] mkdir () "/var/cache/nginx/client_temp" failed (2: No such file or directory)
这个问题很简单,是因为我编译安装时候,选择Nginx的缓存地址是/var/cache/nginx
,但是Linux上并没有存在这个地址,我们需要手动创建:
1 sudo mkdir /var/cache/nginx
之后就可以运行,如果你不放心,还可以使用lsof
命令查看:
配置_h5ai H5AI,其实全称是:HTML5 Apache Index。最初是用来在Apache Web服务器上,完成资源映射,但是后来适配到Nginx等其他平台。配置很简单:下载_h5ai
-修改Nginx配置文件
-开始使用
。 注意_h5ai的映射逻辑:
1 2 3 4 网站根目录(需要映射的目录) ├─ _h5ai ├─ 你的其他文件1 └─ 你的其他文件1
下载_h5ai 因为是开源的工具,所以网上有很多修改版本,包含官方的:
我作为Mintimate’s _h5ai 的开发者,当然是选择这个这位演示,在自己需要映射的文件夹内,输入:
1 2 git clone https://github.com/Mintimate/h5ai_Mmv h5ai_M/_h5ai _h5ai
映射的文件夹,Nginx所属用户需要有读写权限。比如:我映射的下载站是/home/pi/Downloads
、Nginx所属pi
用户,pi
用户有/home/pi/Downloads
目录的读写权限。
修改Nginx配置 如果你的Nginx配置和我一样,那么需要修改/usr/local/nginx/nginx.conf
,我们对其备份:
1 sudo mv /usr/ local/nginx/ nginx.conf /usr/ local/nginx/ nginx.conf.BAK
之后新建一个配置文件(可以使用vim命令新建),可以参考我的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 user pi;worker_processes 1 ;events { worker_connections 1024 ; }http { include mime.types; default_type application/octet-stream; sendfile on ; keepalive_timeout 65 ; gzip on ; server { listen 80 ; server_name localhost; root /home/pi/Downloads; location / { index index.html index.htm /_h5ai/public/index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ [^/]\.php(/|$) { fastcgi_pass 127.0.0.1:9000 ; include fastcgi.conf; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root /$fastcgi_script_name ; } } }
之后进行重载即可:
1 sudo /usr/ local/nginx/ sbin/nginx -s reload
最后,我们可以通过浏览器访问_h5ai
的映射目录: 默认:
当然,这个时候_h5ai可能有问题或者功能不完整,我们需要再验证是否缺少依赖。
开始使用 正式使用前,我们来看看是否缺少依赖,登陆后,我们进入的地址_h5ai/public/index.php
,这个界面是没有密码的,直接点击登陆: 如果你是按我教程来的,只有以下几个需要配置: 很简单,到SSH内输入:
1 sudo apt-get install ffmpeg imagemagick
回到_h5ai/public/index.php
内,即可看到全绿了。
Tips h5ai个性化设置有一些个性化设置,可以开启嗷。 依赖于PHP的JIT(及时编译),以下配置不需要重启PHP FPM服务或Nginx。
1. 设置中文 h5ai个性配置中110n为语言选项,可以选语言在_h5ai/private/conf/l10n内,这里我们设置成中文,更改us为zh-cn:
1 2 3 4 5 "l10n" : { "enabled" : true , "lang" : "zh-cn" , "useBrowserLang" : true } ,
2. 二维码 可以通过扫码的方式下载文件(其实就是文件直链生成二维码)。在配置文件中“info”项为true时,激活(当前版本都是默认激活的了)。
1 2 3 4 5 6 7 "info" : { "enabled" : true , "show" : true , "qrcode" : true , "qrFill" : "#999" , "qrBack" : "#fff " },
打开侧栏信息按钮后,把鼠标悬停在文件上就可以看见h5ai右侧显示文件类型和二维码,手机扫码就可以下载文件。
3. 复选打包 h5ai个性配置中select为复选功能,默认为开启:
1 2 3 4 5 "select" : { "enabled" : true , "clickndrag" : true , "checkboxes" : true } ,
复选打包,默认为tar压缩包,如果想改为zip压缩包,更改h5ai个性配置中download:
1 2 3 4 5 6 "download" : { "enabled" : true , "type" : "shell-zip" , "packageName" : null , "alwaysVisible" : false } ,
其中,type可选:”php-tar “, “shell-tar “ or “shell-zip “。
4. 搜索 h5ai个性配置``中search`为搜索功能,开启后即可搜索当前文件夹下的文件(递归式):
1 2 3 4 5 6 "search" : { "enabled" : true , "advanced" : true , "debounceTime" : 300 , "ignorecase" : true } ,
配置下载器 如果只配置了_h5ai,距离NAS基本算完成一大步了。但是,我认为还需要配置下载器,能把网上资源,直接下载到服务器才算是NAS。 这里我们使用Aria2作为下载器。
配置Aria2 这个再熟悉不过了吧。看过我们教程的小伙伴应该都了解,如果是新朋友,还能坚持看到这里,可以到这里了解一下:
为了简化过程,我们这里使用我的一键脚本进行搭建:
测试使用 这个时候,我们本地就可以使用Aria2的RPC进行下载了,首先Linux服务器上启动Aira2:
之后,使用本地RPC传递: 可以看到,视频就下载好了: 到h5ai里,也可以播放和下载:
Nginx插件 如果你刚刚有安装Fancyindex 和webdav-ext 插件,那么,还可以解锁更多技能,来完善我们的小型NAS。通过这两个插件,可以让Linux上的目录,作为Webdav外部目录,给macOS和Windows进行挂载,方便文件的上传和下载等。
设置Webdav目录 我们打开Nginx的配置文件,在server
内追加:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 location ^~/webdav { set $dest $http_destination ; if (-d \$request_filename ) { rewrite ^(.*[^/])$ $1 /; set $dest $dest /; } if ($request_method ~ MKCOL) { rewrite ^(.*[^/])$ $1 / break ; } alias /home/pi/Downloads/; autoindex on ; dav_methods PUT DELETE MKCOL COPY MOVE; dav_ext_methods PROPFIND OPTIONS; create_full_put_path on ; client_max_body_size 3G ; dav_access user:rw group:rw all:rw; auth_basic "Authorized Users Only" ; auth_basic_user_file webdavpasswd; }
之后,重载Nginx的配置文件。因为我们设置了验证用户 ,所以还需要创建webdavpasswd 这个验证文件。如果不需要验证,可以删除这一项,就可以使用本地的Webdav客户端访问了。
设置验证用户 因为我们安装了openssl ,可以直接用openssl来生成验证用户的密码:
比如,我们生成一个2000
作为密码: 之后,复制生成的密码,创建webdavpasswd
这个文件:
1 vim /usr/ local/nginx/ webdavpasswd
客户端登陆 macOS和Windows的文件管理器都可以登录,但是功能不全(无法上传),这里推荐:
以上软件,个人使用免费版本就可以了:
系统服务注册 什么是系统服务器注册呢?其实就是设置为systemctl进程。设置好systemctl进程后,我们可以把服务器交给系统去自动处理,比如:允许Aria2开机自启、Nginx开机自启。下面就教大家设置。
1. 创建配置文件 Systemd默认从目录/etc/systemd/system/读取配置文件。但是里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/,真正的配置文件存放在那个目录。比如:我们创建一个Nginx的服务
1 vim /usr/ lib/systemd/ system/nginx.service
2. 编写配置文件 参考配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 - Unit - Description,服务的描述 - Documentation,文档介绍 - After,该服务要在什么服务启动之后启动,比如Mysql需要在network和syslog启动之后再启动- Install - WantedBy,值是一个或多个Target,当前Unit激活时(enable)符号链接会放入/etc/systemd/system目录下面以Target名+.wants后缀构成的子目录中 - RequiredBy,它的值是一个或多个Target,当前Unit激活(enable)时,符号链接会放入/etc/systemd/system目录下面以Target名+.required后缀构成的子目录中 - Alias,当前Unit可用于启动的别名 - Also,当前Unit激活(enable)时,会被同时激活的其他Unit- Service - Type,定义启动时的进程行为。它有以下几种值。 - Type=simple,默认值,执行ExecStart指定的命令,启动主进程 - Type=forking,以 fork 方式从父进程创建子进程,创建后父进程会立即退出 - Type=oneshot,一次性进程,Systemd 会等当前服务退出,再继续往下执行 - Type=dbus,当前服务通过D-Bus启动 - Type=notify,当前服务启动完毕,会通知Systemd,再继续往下执行 - Type=idle,若有其他任务执行完毕,当前服务才会运行 - ExecStart,启动当前服务的命令 - ExecStartPre,启动当前服务之前执行的命令 - ExecStartPost,启动当前服务之后执行的命令 - ExecReload,重启当前服务时执行的命令 - ExecStop,停止当前服务时执行的命令 - ExecStopPost,停止当其服务之后执行的命令 - RestartSec,自动重启当前服务间隔的秒数 - Restart,定义何种情况 Systemd 会自动重启当前服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog - TimeoutSec,定义 Systemd 停止当前服务之前等待的秒数 - Environment,指定环境变量
比如,我们创建nginx.service配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 [Unit] Description =nginxAfter =network.target [Service] Type =forkingExecStart =/usr/local/nginx/sbin/nginxExecReload =/usr/local/nginx/sbin/nginx -s reloadExecStop =/usr/local/nginx/sbin/nginx -s quitPrivateTmp =true [Install] WantedBy =multi-user.target
3. 生效配置文件 首先,我们运行配置文件生效,并允许开机自动启动。比如,我们生效nginx.service配置文件::
1 sudo systemctl enable nginx
之后,使用start
命令即可启动:
4. Demo 很多小伙伴systemctl使用不熟练,这里给大家提供以下模版,如果是按本篇文章部署的PHP和Aria2,可以直接套用。
① PHP-FPM 1 sudo vim /usr/ lib/systemd/ system/php-fpm.service
配置内容:
1 2 3 4 5 6 7 8 9 10 11 [Unit] Description =php-fpmAfter =network.target [Service] Type =forkingExecStart =/usr/local/php7/sbin/php-fpmPrivateTmp =true [Install] WantedBy =multi-user.target
允许开机启动并激活:
1 sudo systemctl enable php-fpm
② Aria2 1 sudo vim /usr/ lib/systemd/ system/aria2.service
配置内容:
1 2 3 4 5 6 7 8 9 10 11 [Unit] Description =Aria2After =network.target[Service] User =piType =simpleExecStart =/etc/aria2/aria2c --conf-path=/etc/aria2/aria2.conf[Install] WantedBy =multi-user.target
允许开机启动并激活:
1 sudo systemctl enable aria2
END 这样,简单的个人NAS就搭建好了;兼备在线查看浏览和离线下载功能~~