• 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 $@
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

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


    简便的开机自启动方法:

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

    @reboot sleep 5;/root/autoexec.sh
    
    • 1

    存盘退出。
    意思是:每次系统重启后,执行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)
      
      • 1
      • 2
      • 3

    解决electron报错的问题,执行:
    export ELECTRON_MIRROR=https://npm.taobao.org/mirrors/electron/
    
    yarn add electron -W
    
    • 1
    • 2
    • 3

    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
      
      • 1
      • 2
      • 3
    • 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    查看结果:
    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
      
      • 1
      • 2
    • 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
      1. 编辑文件:nano /home/rockage/.vnc/config
      session=gnome
      securitytypes=vncauth,tlsvnc
      desktop=sandbox
      geometry=2000x1200
      alwaysshared
      
      • 1
      • 2
      • 3
      • 4
      • 5
      1. 编辑文件:nano /etc/tigervnc/vncserver.users
      :1=rockage
      
      • 1
      1. 让设置生效:
      systemctl daemon-reload
      systemctl start vncserver@:1.service
      systemctl enable vncserver@:1.service
      
      • 1
      • 2
      • 3
    • Step 5 . 设置防火墙
      开启防火墙:systemctl start firewalld
      开放5901端口:

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

      你可能会问,为啥是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;
              }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19

      存盘退出。
      用: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
    
    • 1
    • 2
    • 3
    • 4

    装完之后,再输入一遍:
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    存盘退出。
    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
    
    • 1
    • 2
    • 3

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

    	#!/bin/bash
    	forever start ./bin/www
    
    • 1
    • 2

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


    3、脚本调试

    输入以下命令:

    systemctl daemon-reload
    systemctl start rockage
    
    • 1
    • 2

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

    systemctl enable rockage
    
    • 1

    将 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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    出现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
    
    • 1

    这次不要按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 &
    
    • 1

    这种情况下如果需要退出,用 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
    
    • 1

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

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

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

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

    改为:

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

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

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

    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
    
    • 1
    • 2
    • 3

    存盘为一个批处理文件,比如: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
    
    • 1

    就可以了,需要重启。


    点评篇

    前后用过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;
             }
    
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    新建一个目录: /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 即可

  • 相关阅读:
    1796_通过vmware打开VirtualBox虚拟机文件
    LeetCode-946-验证栈序列
    火山引擎A/B测试平台的实验管理重构与DDD实践
    CPO和LPO谁将主宰未来数据中心光互连?
    超视频时代,什么样的技术会成为底座?
    PHP: GetCattle算法(N年后有多少头牛)(附完整源码)
    java下载特定格式excel
    【数据结构】抽象数据类型
    UML List 集合(超详解)
    Pandas 基础入门(一)
  • 原文地址:https://blog.csdn.net/rockage/article/details/134367144