Centos, RockyLinux 常用软件安装汇总

在这里插入图片描述

一、基本指令:
命令作用
clear清屏
pwd显示当前路径
cat / more显示文本文档
uname -a查看当前版本
hostnamectl查看当前版本
cat /etc/redhat-release查看当前版本
free查看剩余内存
df -h[查看磁盘剩余空间]
du -sh 查看文件夹名"dir"占用的空间
lsof -i:8080查看8080端口是否被占用
find . -name “filename.txt”搜索filename.txt文件,包括子目录
groupadd abc创建一个名为abc的用户组
useradd -g abc abc在abc组里添加一个名为abc的用户
chown -R sammy ~/dir将目录dir的拥有者设为用户sammy
cut -d : -f 1 /etc/passwd查看所有用户
cat /etc/grou查看所有用户组
tail -n 20 filename显示filename最后20行
chmod -R 777 dir将目录dir整体变为777
rm -rf dir整体删除dir
cp -r -a ./* /dir将当前路径下所有文件包括子目录全部拷贝到dir
tar -xvzf filename解压缩gz文件
gzip -d filename解压缩gz文件
unzip -x filename解压缩zip文件
zip -r filename.zip ./*压缩当前目录下全部内容
rpm -ivh filename安装一个包
rpm -Uvh filename升级一个包
rpm -e 卸载一个包
nohup cmds >/dev/null 2>&1 &无任何输出或log,在后台运行一个cmds指令

二、小窍门篇
带参数的alias快捷命令:

nano ~/.bashrc
输入以下内容:

alias psa="psa"
psa()
{
    ps -A|grep $@
}

存盘退出,执行:
source ~/.bashrc
生效后输入例如:psa bash (就相当于ps -A|grep bash)


简便的开机自启动方法:

crontab -e (输入这条指令后会自动打开默认编辑器,一般是vim)
然后输入:

@reboot sleep 5;/root/autoexec.sh

存盘退出。
意思是:每次系统重启后,执行autoexec.sh脚本。


分区 & 格式化
  1. 先看看有几个物理硬盘:
    fdisk -l
  2. 选择一个物理硬盘来分区
    fdisk /dev/vdb1 (我这里为vdb1)
  3. 进去后使用的是快捷命令:
    p : 查看当前分区
    d:删除当前分区
    n:创建一个新的分区
    w: 存盘退出(所有改动生效)
    q: 不存盘、退出(所有改动不生效,安全)
    一个一个子分区先删除干净之后才能建立新分区

如果是新硬盘,一般来说的默认操作流程是:

Created a new DOS disklabel with disk identifier : 选n
Select (default p): 选(p)主分区
Partition number (1-4, default 1): 选(1)个分区
First sector (2048-419430399, default 2048): 直接敲回车 (起始扇区)
Last sector, +sectors or +size{K,M,G,T,P} (2048-419430399, default 419430399): 直接敲回车
Command (m for help): p (查看一下分区设置)
Command (m for help): w (写入)

格式化:
mkfs.ext4 /dev/vdb1 (等待命令执行完成)
4. 挂载新硬盘到操作系统的某个节点上
mkdir /data
mount /data /dev/vdb1
5. 大功告成后,可用 df -h 指令再查看查看


安装Aapache:
  1. yum install httpd.x86_64 (安装)
  2. systemctl start httpd.service (启动)
  3. systemctl enable httpd.service (自启)

然后到浏览器那边测试一下:http://服务器ip
会出现一个Testing 1.2.3的测试页。
Apache的主页默认路径: /var/www/html/
Apache的主设置文件路径:/etc/httpd/conf/httpd.conf


安装PHP:

dnf groupinstall 'PHP Support' -y (安装)
systemctl restart httpd.service (重启一下Apache即可)

安装mysql支持(mariadb):

dnf install mariadb-server mariadb -y
systemctl start mariadb
systemctl enable mariadb

MySQL初始密码问题

忘记root密码,root权限被意外剥夺,看不到mysql表这种情况:

  1. systemctl stop mariadb.service (先关服务)
  2. /usr/bin/mysqld_safe --skip-grant-tables & (进入安全模式)
  3. mysql -uroot (不需要密码,直接进人)
  4. show databases;可以看到mysql表了
  5. use mysql;
  6. update user set password=password('yournewpasswordhere') where user='root';
  7. flush privileges;

vsFTP 安装:

请访问我的另一篇博文:

https://blog.csdn.net/rockage/article/details/133759477?spm=1001.2014.3001.5502


全新安装官方版MySQL:

以下为全新安装Oracle官方原版MySQL的方法:
1:为yum指令添加源
先搞清楚到底要下载哪个源,用指令:uname -a
看看服务器版本号,我这边显示的是el7
然后去这个网址:
MySQL :: Download MySQL Yum Repository
下载一个:mysql57-community-release-el7-11.noarch.rpm (对应之前的el7)
注意:如果是Centos 6,需要下载针对el6内核使用的rpm
然后用鼠标右键点击下载链接,复制绝对地址,直接用wget指令下载
(如果实在找不到绝对地址,也可以先用浏览器下载到本地再FTP到服务器也一样):

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
然后执行以下指令:
rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
这个动作很快,就几秒钟的事儿。

  1. 安装MySQL
    有了源之后,就可以用这个指令安装了:
    yum install mysql-community-server
    注意这个过程非常漫长,要有耐心。

装完之后会有一个小结,如果原机装有Mariadb或者旧版MySQL的话,可以看到
Replaced:
mysql-libs.i686 0:5.1.73-8.el6_8
会被新装这个MySQL替换(Replaced)掉。

  1. 启动服务
    装完后,用以下指令开启MySQL服务:
    systemctl start mysqld.service
    systemctl enable mysqld.service (自启动)
    systemctl status mysqld.service (查看状态)
    这一步也是有可能出问题的,如果之前旧的Maroadb或MySQL在/var/lib/ 下面有mysql目录(这是mysql主数据目录,所有的数据库、表之类都存放于此),则会报错:
    initialize specified but the data directory has files in it. Aborting.
    好在这个问题不难解决,删除这个数据目录:
    rm -rf /var/lib/mysql
    删除之后,不能再去手动建立,只要执行mysql,程序会自动创建。

  2. 初始化设置
    在上面的安装过程中,产生了一个临时密码,在/var/log/mysqld.log文件里,
    第一步是让它高亮出来:
    grep ‘temporary password’ /var/log/mysqld.log
    记下这个密码。

用刚才那个临时密码登陆:
mysql -uroot -p

进去之后用这个指令改变初始密码:
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘NewPassword’;

如果显示: Your password does not satisfy the current policy requirements

这不是大问题,只是说明密码强度不够,再想一个复杂一点的密码即可。

  1. 设置远程访问
    现在整个儿MySQL基本就已经装好了,但是仅限于本地使用(对于BS结构的程序来说够了)
    如果还需要用Navicat等工具远程登陆,或者一些CS结构的软件,还需要做下一步:
    mysql -uroot -p (首先进入mysql服务器,用刚才设置的新密码)
    mysql>use mysql;
    mysql>update user set host = ‘%’ where user = ‘root’; (将root帐号的host改为%也就是说任意客户端皆可访问)
    mysql>FLUSH PRIVILEGES; (全局刷新一下就OK了,现在再试试Navicat应该就能连通了)

  2. 在已经设置了root密码的情况下重新修改root密码的方法(忘记了root密码怎么办):
    首先要进入安全模式
    systemctl stop mysqld.service (先关mysql服务)
    nano /etc/my.cnf (修改mysql配置文件)
    加入一行:
    skip-grant-tables
    存盘退出
    systemctl start mysqld.service (启动mysql)
    mysql -uroot -p (不需要密码直接进入)
    use mysql;
    update mysql.user set authentication_string = PASSWORD(‘123456’) where User=‘root’;
    FLUSH PRIVILEGES;
    quit;
    从mysql命令行模式出来之后,
    systemctl stop mysqld.service (先关闭mysql)
    nano /etc/my.cnf
    去掉skip-grant-tables这一行,或者在前面加个#号注释掉 (恢复mysql正常工作状态)
    存盘退出。
    systemctl start mysqld.service (再重启mysql即可)


NodeJS 安装

方法一:
通过dnf仓库安装nodejs和cnpm (cnpm源自淘宝,比原版npm快)
dnf install -y nodejs.x86_64
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install forever -g (示例:用cnpm装一个forever)


方法二:手动安装最新(任意版本)的nodejs:

  1. dnf -y remove nodejs (先卸载系统自带的nodejs)
  2. 访问:https://github.com/nvm-sh/nvm 获取最新nvm安装脚本
  3. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
  4. 关闭窗口再开一个新的SSH, 执行:
    nvm list-remote (列出所有node.js版本)
    nvm install v20.9.0
    npm install --global yarn (顺便装一个yarn)
    

解决electron报错的问题,执行:
export ELECTRON_MIRROR=https://npm.taobao.org/mirrors/electron/

yarn add electron -W

Java JDK环境安装
  • 首先查看现有的java安装路径,判断是java11还是17:
    readlink -f $(which java)
    或者:
    dirname $(dirname $(readlink -f $(which java)))
  • 安装java 17
    dnf search jdk | egrep -- '-17'
    sudo dnf install java-17-openjdk java-17-openjdk-devel
    sudo alternatives --config java
    
  • Java 参数
    export JAVA_OPTS=-Xmx5g
    export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-17.0.9.0.9-2.el9.x86_64

gcc 11.4.0 安装
1. dnf install -y wget bzip2
2. wget https://mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-13.2.0/gcc-13.2.0.tar.gz
3. tar xf gcc-13.2.0.tar.gz
4. cd gcc-13.2.0
5. ./contrib/download_prerequisites
6. mkdir build && cd build
7. ../configure --enable-languages=c,c++ --disable-multilib --prefix=/usr/local/gcc-13.2.0
8. make -j$(nproc) &&  make install (-j表示多核编译)
9. nano /root/.bashrc
10. export PATH=/usr/local/gcc-13.2.0/bin:$PATH
11. export LD_LIBRARY_PATH=/usr/local/gcc-13.2.0/lib64:$LD_LIBRARY_PATH
12. source /root/.bashrc

查看结果:
strings /usr/local/gcc-13.2.0/lib64/libstdc++.so.6 | grep GLIBCXX


GNOME环境安装 + VNC服务器安装
  • Step 1 . 安装 GNOME 桌面
    dnf groupinstall -y "Server with GUI"
    reboot (重启)

  • Step 2 . 安装 TigerVNC Server

    1. dnf install -y tigervnc-server
    2. cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
    
  • Step 3 . 首先以 root 账户登录,创建1个VNC帐号(本例为用户名 rockage ) 并设置密码
    useradd -c "VNC for Rockage" rockage
    passwd rockage

  • Step 4 — 设置 VNC Service

    1. exit (退出当前 root 账号)
    2. 重新登录,用户名为 rockage (登录密码为刚才生成那个)
    3. 输入:vncpasswd (输入vnc访问密码,注意和登录密码的区别)
    4. exit (退出当前 rockage 账号)
    5. 重新登录,用户名为 root
    6. 输入:
    cp /etc/tigervnc/vncserver-config-defaults /home/rockage/.vnc/config
    
    1. 编辑文件:nano /home/rockage/.vnc/config
    session=gnome
    securitytypes=vncauth,tlsvnc
    desktop=sandbox
    geometry=2000x1200
    alwaysshared
    
    1. 编辑文件:nano /etc/tigervnc/vncserver.users
    :1=rockage
    
    1. 让设置生效:
    systemctl daemon-reload
    systemctl start vncserver@:1.service
    systemctl enable vncserver@:1.service
    
  • Step 5 . 设置防火墙
    开启防火墙:systemctl start firewalld
    开放5901端口:

    firewall-cmd --permanent --zone=public --add-port=5900-5901/tcp
    

    你可能会问,为啥是5901?因为TigerVNC自身使用5900端口,而每一个VNC用户又都拥有自己的独立端口号,规定以 “5900+VNC用户编号” 为原则,刚才配置文件编号是1,那么这个独立进程的端口就是5900+1

    刷新防火墙设置
    firewall-cmd --reload
    如果总是报错或者连不上,可以用systemctl stop firewalldsystemctl disable firewalld, 干脆把防火墙先关再试试。

  • 用nftables设置防火墙:
    Centos8已经全面使用nftable了,也比较简单:
    首先创建一个 nft 脚本比如:nano test.nft,复制以下内容:

    flush ruleset
    table inet filter {
            chain input {
                    type filter hook input priority 0; policy drop;
                    ct state established,related accept
                    ct state invalid drop
                    iif lo accept
                    ip protocol icmp icmp type { destination-unreachable, router-solicitation, router-advertisement, time-exceeded, parameter-problem } accept
                    ip protocol igmp accept
                    #放行端口:
                    tcp dport { 5000,5001, 3306, 8080, 3000, http, https} accept
            }
            chain forward {
                    type filter hook forward priority 0; policy drop;
            }
            chain output {
                    type filter hook output priority 0; policy accept;
            }
    }
    

    存盘退出。
    用:nft -f test.nft 加载即可。

  • Step 6 . 使用VNC客户端软件
    下载地址:http://www.onlinedown.net/soft/251613.htm
    安装很简单,一直下一步即可,打开主界面也没什么可设置的,直接在地址框输入你的服务器IP:5901,如127.0.0.1:5901 ,输入完毕后点 Connect 即可。


Chrome 安装

下载:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

然后用rpm安装:
rpm -ivh google-chrome-stable_current_x86_64.rpm

基本上会报一堆错误,例如:

warning: google-chrome-stable_current_x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 7fac5991: NOKEY
error: Failed dependencies:
/usr/bin/lsb_release is needed by google-chrome-stable-74.0.3729.131-1.x86_64
libXss.so.1()(64bit) is needed by google-chrome-stable-74.0.3729.131-1.x86_64
libappindicator3.so.1()(64bit) is needed by google-chrome-stable-74.0.3729.131-1.x86_64
liberation-fonts is needed by google-chrome-stable-74.0.3729.131-1.x86_64

不要着急,报错是正常的流程之一,现在用repoquery命令一个一个分析,比如:
repoquery --nvr --whatprovides libappindicator3.so.1
系统显示:
libappindicator-gtk3-12.10.0-13.el7
发现少了这个包,那么我们直接用dnf去安装:
dnf install libappindicator-gtk3-12.10.0-13.el7 -y
其他依葫芦画瓢都这么一个一个用dnf安装即可,唯一需要注意的是,/usr/bin/lsb_release 这个包是这样安装的:
dnf install *lsb* -y
对于我的系统而言,我需要安装以下包:

yum install libXScrnSaver-1.2.2-6.1.el7 -y
yum install libappindicator-gtk3-12.10.0-13.el7 -y
yum install liberation-fonts-1.07.2-16.el7 -y
yum install *lsb* -y

装完之后,再输入一遍:
rpm -ivh google-chrome-stable_current_x86_64.rpm
这回终于不报错了,安装成功。

回到桌面,发现桌面的 Internet 分类里已经有了 Chrome 的图标了。
如果无法启动,说明你现在使用的是root账户,因为chrome默认是不能给root用户运行的。打开文件管理器,找到 /usr/share/applications/路径下的Chrome图标,右键属性,然后把Command改成:
/usr/bin/google-chrome-stable %U --no-sandbox
或者直接在桌面的Terminal里面用命令行启动:
/usr/bin/google-chrome-stable --no-sandbox


CentOS 7 开机自动启动脚本的方法
1、创建脚本

在 /usr/lib/systemd/system 下面创建一个文件,这个文件名即是我们要设置的服务,例如现在想自定义一个服务rockage:
nano /usr/lib/systemd/system/rockage.service
在此文件中输入以下内容:

[Unit]
Description=rockage
After=network.target
	 
[Service]
Type=forking
ExecStart=启动命令或脚本
ExecReload=重新启动的命令或脚本
ExecStop=停止运行的命令或脚本
PrivateTmp=true
	 
[Install]
WantedBy=multi-user.target

存盘退出。
ExecStart,ExecReload,ExecStop 这三个选项分别对应启动、重启、停止,如果命令够简单的话,直接输入就行了,一个命令不够,中间还可以用&&连接。如果命令行实在太复杂或者还需要做逻辑判断等,将需要运行的指令放到一个可执行脚本里,标明脚本路径即可。

注意:Type=forking 这行的意思是,像 nginx 那种输入命令后程序本身就可以自动驻留内存的就用forking。而其他前台程序,就是指那些运行完毕后(或者按下CTRL+C)不自动驻留内存的程序,最简单的比如说 ls 这一类,此处就用Type=simple


2、实际案例

举一个实例,比如我的Start、Reload、Stop分别对应3个脚本:

ExecStart=/root/myweb/start.sh
ExecReload=/root/myweb/restart.sh
ExecStop=/root/myweb/stop.sh

查看一下Start脚本,cat /root/myweb/start.sh

	#!/bin/bash
	forever start ./bin/www

此脚本自动运行node.js的forever,作用是将nodejs制成的网站置于后台运行。注意,服务脚本第一行是 #! ,这不是注释,而是标明这个脚本是由哪个shell 来执行,如我们经常见到的 #!/bin/bash,这表示此脚本由bash来解析。


3、脚本调试

输入以下命令:

systemctl daemon-reload
systemctl start rockage

如果出现绿色的:Active: active (running),说明正常,如果是红色的则表示运行有误,需要排查,另外还可以通过:
journalctl -fu rockage
命令查看完整 log 以定位故障点。一切无误后,输入:

systemctl enable rockage

将 rockage 写入系统服务,这样每次重启后系统将自动运行它。


4、进阶篇

查看service启动顺序:
systemctl list-dependencies
<可选项 --after service-name--before service-name> ,
例如:systemctl list-dependencies --after rockage

查看所有已启动的服务:
systemctl list-units --type=service
或者
systemctl list-units --type=target

在service里设定环境变量:
注意:service 里的环境变量和系统环境变量是独立的,如果某些程序需要依赖环境变量的话,必须单独在 service 文件的 [Service] 一节里显式标记:

  • 方法1直接添加:
    Environment="PATH=/usr/local/bin:/usr/bin:/bin"
  • 方法2用文件添加:
    EnvironmentFile=/etc/my_service.env

5、systemctl 命令汇总
systemctl start service-name (启动)
systemctl stop service-name(停止)
systemctl restart service-name(重启)
systemctl enable service-name (设为自启动)
systemctl disable service-name (取消自启动)
systemctl mask service-name (完全屏蔽自启动)
systemctl status service-name (服务状态)
journalctl -fu service-name (完整的服务状态log)

6、一个不太常见的坑:

如果系统总是报告这个错误:

[/usr/lib/systemd/system/rockage.service:5] Missing ‘=’.

多半是由于文件没有以utf8保存导致。
这种情况下,随便在 /usr/lib/systemd/system/ 目录下找个“模板”, cp 复制成你自己的,再重新编辑就好。


NextCloud 私有云安装

参考我的博文:
https://blog.csdn.net/rockage/article/details/99216552


Syncthing 云同步

cat /proc/version 查看系统版本(我的是64位)
访问:
https://syncthing.net/downloads/
下载64位Linux版并解压:

wget https://github.com/syncthing/syncthing/releases/download/v1.8.0/syncthing-linux-amd64-v1.8.0.tar.gz
tar zxf syncthing-linux*
cd syncthing-linux*
cp syncthing /usr/local/bin
syncthing (启动Syncthing)

出现INFO: Detected 0 NAT services 的时候,
按CTRL+C退出程序,编辑配置文档:
nano /root/.config/syncthing/config.xml
搜索:127.0.0.1:8384 改为 0.0.0.0:8384
存盘退出。
重新启动Syncthing,输入:

syncthing

这次不要按CTRL+C退出,直接去浏览器访问8384端口:
比如:http://127.0.0.1:8384 ,如果能出现WebUI,说明工作正常。


Windows 客户端

下载SyncTrayzor:https://github.com/canton7/SyncTrayzor/releases/tag/v1.1.24
安装后进入SyncTrayzor,删除默认的Default Forder,新建一个Sync的共享目录,物理地址是:D:\Sync


Syncthing 设置

我的实际情况是,需要同步公司电脑和家里电脑的数据,因为这两台电脑都做不到永不关机,因此需要通过一台VPS来做中转:
在这里插入图片描述

注意:本质上来说,Syncthing 并没有服务器/客户端的概念,任何一个节点既是服务器也是客户端,因为本例用了一台VPS作为一个永不关机的常备,姑且把它称为服务器。

现在,打开浏览器,输入VPS地址:http://ip:8384

在服务器的WebUI进行设置,删除默认的Default forder,新建一个Sync的共享目录,物理地址是:/root/Sync

添加远程设备:

  1. 此处的“远程设备”概念,是指HOME-PC,这里的当前设备是指 VPS
  2. 那么我们如何知道HOME-PC的ID? - 现在回到HOME-PC的SyncTrayzor - 点右上角的[操作] - [显示ID],把这一串字符串复制起来
  3. 把刚才得到的字符串粘贴到添加远程端这个项目里, 在【共享】里有一个“选择与该设备共享的文件夹”,勾选Sync
  4. 页面不要关闭,等一下还要从这里拷贝VPS的ID

现在回到家里的电脑,也就是HOME-PC这边

  1. 打开SyncTrayzor
  2. 添加远程设备,现在的远程设备倒过来了是指VPS,当前设备是指HOME-PC
  3. 回到浏览器,切换到服务器的WebUI界面,同样的地方,点操作,点显示ID,并把这一行字符串粘贴过来
  4. 同样的,在【共享】里,勾选Sync
  5. 如果有其他的台式机(例如COMPANY-PC),一样依葫芦画瓢按此操作即可

问题篇
  1. Windows在启动SyncTrayzor的时候,如果报:

WARNING: Failed to initialize config: Config file version (31) is newer than supported version (29). If this is expected

去官网下载最新版的syncthing.exe,拷贝到:C:\Users\rocka\AppData\Roaming\SyncTrayzor里即可

  1. 各种设置都OK了,但是在同步的时候卡住不动怎么办?
    设置一下D:\Sync文件夹的权限,让本机USER对它有全部读写权限即可。

如何后台运行?

VPS上如果用CTRL+C中断Syncthing的命令行窗口,服务将终止,后台运行方法:

nohup syncthing &> /dev/null &

这种情况下如果需要退出,用 killall syncthing (杀掉syncthing 进程)即可。


如何将Syncthing注册为一个服务?

开机启动脚本在这个位置:

/安装包解压路径/syncthing-linux-amd64-v1.8.0/etc/linux-systemd/system

将这个文件拷贝到系统服务里(我在/root/syncthing下解压的安装包):

cp /root/syncthing/syncthing-linux-amd64-v1.8.0/etc/linux-systemd/system/syncthing@.service /usr/lib/systemd/system

将Syncthing设为root用户的专属服务:

mv /usr/lib/systemd/system/syncthing@.service /usr/lib/systemd/system/syncthing@root.service

编辑这个文件:
nano /usr/lib/systemd/system/syncthing@root.service
将:

ExecStart=/usr/bin/syncthing -no-browser -no-restart -logflags=0

改为:

ExecStart=/usr/local/bin/syncthing -no-browser -no-restart -logflags=0

存盘退出。
执行以下命令:

systemctl daemon-reload
systemctl restart syncthing@root  (启动服务)
systemctl enable syncthing@root (设为开机启动)

Windows客户端不采用SyncTrayzor的方案:

注意:此方案不需要安装SyncTrayzor,很轻量,
默认Sync配置文件和数据库在:
C:\Users\rocka\AppData\Local\Syncthing
将它Copy到其他位置,比如:
D:\SyncRoot
用记事本编辑一个文本文档:

@ECHO OFF
%1 start mshta vbscript:createobject("wscript.shell").run("""%~0"" ::",0)(window.close)&&exit
start /b syncthing.exe -config="D:\SyncRoot\Syncthing.conf" -data="D:\SyncRoot\Syncthing.conf\index-v0.14.0.db" -no-browser

存盘为一个批处理文件,比如:start-sync.bat
再将这个bat文件设为自启动即可,
如果需要进入UI,浏览器访问:http://127.0.0.1:8384/就行了


FAQ
  1. 如果进入管理UI的时候,总是报错:

    failed to setup inotify handler.

编辑文件:nano /etc/sysctl.conf

加一行:

fs.inotify.max_user_watches=204800

就可以了,需要重启。


点评篇

前后用过Seafile 和 Nextcloud方案,这两者都是正儿八经的云盘,功能繁多,但是体型也很庞大,部署起来很麻烦。如果应用场景仅仅是需要同步一下公司电脑和家里电脑的话,犯不上用这两者。Syncthing不是云盘,它就是一个同步器,可以让你在公司没干完的活同步到家里的电脑里继续完成。轻量、简单、部署方便,关键是传输速度比前两者快!


临时使用Nginx分享文件:

在nginx.conf 里增加一节: location /files { }

events {
    worker_connections  1024;
}

http {
  server {
         listen       80;
         server_name  localhost;
         root  html;

         location /files {
         autoindex on;
         autoindex_exact_size off;
         autoindex_localtime on;
         alias  /usr/local/nginx/html/files/;
         charset utf-8;
         }

   }
}

新建一个目录: /usr/local/nginx/html/files

将需要共享的文件或者目录 ln 到 /usr/local/nginx/html/files
比如: ln /home/data /usr/local/nginx/html/files/data

注意权限,否则只能显示无法下载(报403错误):

chown -R www:www /home/data
然后用浏览器访问: http://你的网站地址或IP地址/files 即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/137466.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

进亦忧,退亦忧,Github Copilot 集成进入 Visual Studio 带来的思考

开篇想到《岳阳楼记》的结尾&#xff1a; 不以物喜&#xff0c;不以己悲&#xff1b;居庙堂之高则忧其民&#xff1b;处江湖之远则忧其君。是进亦忧&#xff0c;退亦忧。然则何时而乐耶&#xff1f;其必曰&#xff1a;“先天下之忧而忧&#xff0c;后天下之乐而乐”乎。未来30…

mini-vue 的设计

mini-vue 的设计 mini-vue 使用流程与结果预览&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name&qu…

std::any

一、简介 std::any 可以储存任何可拷贝构造和可销毁的类型的对象。 struct test {test(int a,int b){} };int main(int argc, char *argv[]) {std::any a 1;qDebug() << a.type().name();a 3.14;qDebug() << a.type().name();a true;qDebug() << a.type…

LeetCode 189.轮转数组(三种方法解决)

文章目录 题目暴力求解空间换时间三段逆置总结 题目 LeetCode 189.轮转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5…

2023 年最新企业微信官方会话机器人开发详细教程(更新中)

目标是开发一个简易机器人&#xff0c;能接收消息并作出回复。 获取企业 ID 企业信息页面链接地址&#xff1a;https://work.weixin.qq.com/wework_admin/frame#profile 自建企业微信机器人 配置机器人应用详情 功能配置 接收消息服务器配置 配置消息服务器配置 配置环境变量…

数据结构与算法【数组】Java实现

数组是一组元素组成的数据结构&#xff0c;元素类型必须相同&#xff0c;其次&#xff0c;数组内元素是连续存储的&#xff0c;因此数组中元素地址可以通过索引计算出来。 空间占用 在Java中&#xff0c;数组本质上也是一个对象&#xff0c;因此也存在对象头信息。那么数组的…

04-详解SpringBoot自动装配的原理,依赖属性配置的实现,源码分析

自动装配原理 依赖属性配置 提供Bean用来封装配置文件中对应属性的值 Data public class Cat {private String name;private Integer age; }Data public class Mouse {private String name;private Integer age; }cartoon:cat:name: "图多盖洛"age: 5mouse:name: …

若依Linux与Docker集群部署

若依Linux集群部署 1. 若依2.MYSQL Linux环境安装2.1 MYSQL数据库部署和安装2.2 解压MYSQL安装包2.3 创建MYSQL⽤户和⽤户组2.4 修改MYSQL⽬录的归属⽤户2.5 准备MYSQL的配置⽂件2.6 正式开始安装MYSQL2.7 复制启动脚本到资源⽬录2.8 设置MYSQL系统服务并开启⾃启2.9 启动MYSQL…

XoT:一种新的大语言模型的提示技术

这是微软在11月最新发布的一篇论文&#xff0c;题为“Everything of Thoughts: Defying the Law of Penrose Triangle for Thought Generation”&#xff0c;介绍了一种名为XOT的提示技术&#xff0c;它增强了像GPT-3和GPT-4这样的大型语言模型(llm)解决复杂问题的潜力。 当前提…

PHP原生类总结利用

再SPL介绍 SPL就是Standard PHP Library的缩写。据手册显示&#xff0c;SPL是用于解决典型问题(standard problems)的一组接口与类的集合。打开手册&#xff0c;正如上面的定义一样&#xff0c;有许多封装好的类。因为是要解决典型问题&#xff0c;免不了有一些处理文…

kr 第三阶段(九)64 位逆向

X64 汇编程序 64 位与 32 位的区别 更大的内存 64 位 CPU 与 32 位 CPU 的区别 引脚根数&#xff1a; x86 程序&#xff1a;20 根x64 程序&#xff1a;52 根&#xff0c;实际寻址的有 48 根&#xff0c;所以最大内存是 0~256T 寻址区间&#xff1a; x86 程序&#xff1a;0x0…

python实现一个简单的桌面倒计时小程序

本章内容主要是利用python制作一个简单的桌面倒计时程序&#xff0c;包含开始、重置 、设置功能。 目录 一、效果演示 二、程序代码 一、效果演示 二、程序代码 #!/usr/bin/python # -*- coding: UTF-8 -*- """ author: Roc-xb """import tkin…

汽车ECU的虚拟化技术初探(二)

目录 1.概述 2.U2A虚拟化方案概述 3.U2A的虚拟化功能概述 4.虚拟化辅助功能的使能 5.留坑 1.概述 在汽车ECU的虚拟化技术初探(一)-CSDN博客里&#xff0c;我们聊到虚拟化技术比较关键的就是vECU的虚拟地址翻译问题&#xff0c;例如Cortex-A77就使用MMU来进行虚实地址的转换…

阿里云国际站:专有宿主机

文章目录 一、专有宿主机的概念 二、专有宿主机的优势 三、专有宿主机的应用场景 一、专有宿主机的概念 专有宿主机&#xff08;Dedicated Host&#xff0c;简称DDH&#xff09;是阿里云专为企业用户定制优化的解决方案。具有物理资源独享、部署更灵活、配置更丰富、性价比…

遇到问题,我该如何提问?

作为IT行业的从业者&#xff0c;我们深知程序员在保障系统安全、数据防护以及网络稳定方面所起到的重要作用。他们是现代社会的护城河&#xff0c;用代码构筑着我们的未来。那程序员的护城河又是什么呢&#xff1f;是技术能力的深度&#xff1f;是对创新的追求&#xff1f;还是…

Linux yum,vim详解

yum是什么 yum是一个Linux系统预装的指令&#xff0c;yum的功能是可以对app进行搜索&#xff0c;下载&#xff0c;相当于Linux下的应用商店。 yum是读取Linux中镜像文件中的网页地址&#xff0c;下载用户所输入的命令。 如何使用yum下载软件 yum install -y(所有选项都yes) …

换根dp学习笔记

最近模拟赛经常做到&#xff0c;于是我就学习了一下。 算法原理 换根 d p dp dp的题一般都会给出一个无根树&#xff0c;因为以不同的点为根时&#xff0c;问题的答案不一样&#xff0c;所以它会让你输出答案的最大或最小值。 暴力去做这种题&#xff0c;就是以每个点为根然…

为什么要用“交叉熵”做损失函数

大家好啊&#xff0c;我是董董灿。 今天看一个在深度学习中很枯燥但很重要的概念——交叉熵损失函数。 作为一种损失函数&#xff0c;它的重要作用便是可以将“预测值”和“真实值(标签)”进行对比&#xff0c;从而输出 loss 值&#xff0c;直到 loss 值收敛&#xff0c;可以…

springboot项目使用Swagger3

一、Swagger介绍 号称世界上最流行的Api框架&#xff1b;Restful Api 文档在线自动生成工具>Api文档与API定义同步更新直接运行&#xff0c;可以在在线测试API 接口支持多种语言&#xff1a;&#xff08;java&#xff0c;Php…&#xff09; 二、Swagger3 准备工作 1、在p…

学习c#的第七天

目录 C# 封装 概念 Public 访问修饰符 Private 访问修饰符 Protected 访问修饰符 Internal 访问修饰符 Protected Internal 访问修饰符 总结 C# 封装 概念 在面向对象程序设计中&#xff0c;封装是一种将数据和方法包含在一个单元中&#xff0c;并控制对这些数据和方…