分类: 文章

  • CentOS 7安装Jellyfin多媒体播放器

    Jellyfin是一款开源多媒体播放器,和博客之前介绍过的Plex类似,虽然免费版Plex也能满足日常需要,但功能上会受到一些限制,而Jellyfin免费开源,也不需要支付额外费用。如果想免费体验更多功能,Jellyfin可能是更好的选择。

    使用Docker安装Jellyfin

    请先确保您已经安装Docker环境,如果还没有安装Docker请参考网上教程先安装,这里不做介绍,Docker安装Jellyfin比较简单。

    1、先获取Jellyfin镜像

    docker pull jellyfin/jellyfin
    Bash

    2、创建jellyfin需要的配置文件目录和缓存目录

    mkdir -p /opt/jellyfin/config
    mkdir -p /opt/jellyfin/cache
    Bash

    3、运行Jellyfin服务

    docker run -d 
     --volume /opt/jellyfin/config:/config 
     --volume /opt/jellyfin/cache:/cache 
     --volume /path/to/media:/media 
     --user 1000:1000 
     --net=host 
     --restart=unless-stopped 
     jellyfin/jellyfin

    如果有安装Docker Compose,也可以在jellyfin目录下创建一个docker-compose.yml文件,使用下面的内容:

    version: "3"
    services:
      jellyfin:
        image: jellyfin/jellyfin
        user: 1000:1000
        network_mode: "host"
        volumes:
          - /opt/jellyfin/config:/config
          - /opt/jellyfin/cache:/cache
          - /path/to/media:/media

    防火墙放行8096端口:

    firewall-cmd --zone=public --add-port=32400/tcp --permanent
    firewall-cmd --reload
    Bash

    使用docker-compose的情况下输入命令docker-compose up运行,如果期间未出现报错,使用浏览器访问http://IP:8096可看到Jellyfin初始化界面,根据提示完成初始化设置。

    RPM方式安装Jellyfin

    Docker安装方式存在一些限制,比如部分挂载无法识别,于是换成了RPM包安装则不存在这些问题。

    先安装需要的依赖:

    yum install libicu fontconfig -y
    Bash

    然后前往https://repo.jellyfin.org/releases/server/centos/ 下载CentOS最新可用RPM包进行安装,因为官方可能会将旧版的RPM包下掉,因此下方的链接可能失效。

    #下载RPM包
    wget -c https://repo.jellyfin.org/releases/server/centos/stable/jellyfin-10.5.3-1.el7.x86_64.rpm
    #备用下载
    wget -c http://soft.xiaoz.org/linux/jellyfin-10.5.3-1.el7.x86_64.rpm
    #安装jellyfin
    rpm -Uvh --nodeps jellyfin-10.5.3-1.el7.x86_64.rpm
    Bash

    接下来启动jellyfin

    #启动jellyfin
    systemctl start jellyfin
    #设置为开机启动
    systemctl enable jellyfin
    Bash

    访问http://IP:8096根据页面提示完成jellyfin初始化

    安装ffmpeg

    由于Jellyfin需要使用ffmpeg来进行转码,但是RMP包并没有包含ffmpeg,需要自行安装ffmpeg,这里提供一个静态安装ffmpeg的方法:

    #下载ffmpeg
    wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz
    #解压
    tar -xvf ffmpeg-git-amd64-static.tar.xz
    #移动目录
    cp ffmpeg-git-20200211-amd64-static/ffmpeg /usr/bin/
    cp ffmpeg-git-20200211-amd64-static/ffprobe /usr/bin/
    Bash

    打开Jellyfin后台 - 服务器 - 播放 - 将FFmpeg 路径设置为/usr/bin/ffmpeg

    Jellyfin原始质量播放

    如果您的网络情况比较好,硬件也比较给力,不需要转码的话可以在“服务器 - 用户 - 媒体播放”将下面的选项去掉

    • 允许播放需要转码的音频(去掉)
    • 允许播放需要转码的视频(去掉)
    • 允许播放需转换但无需重新编码的视频(去掉)

    使用体验

    Jellyfin和Plex我都尝试过,两者从功能上来说都差不多。Plex已经比较成熟完善,但如果不购买Plex高级版功能上会存在一些限制。而Jellyfin则完全免费,功能也比较强大,但目前Jellyfin还没有正式的Windows客户端,不过相信Jellyfin会逐渐完善。如果愿意付费,选择Plex,如果想完全免费可考虑Jellyfin

    总结

    Jellyfin适合安装在NAS或者局域网的主机上,可以很方便的打造自己的家庭影音库。也可以选择安装在大硬盘VPS上,从而实现在线播放。另外Jellyfin还可以配合强大的KODI播放器,以后有空再做进一步介绍。

    此文部分内容参考了以下文章:

    Jellyfin官网:https://jellyfin.org/

  • Ubuntu2004安装(LNMP)Nginx、MySQL8、PHP74开发环境

    前言

    最近把大学时用的大哥大游戏笔记本(ps:巨重。。大概电脑加充电器七八斤是有的)换了个 Ubuntu 系统,为了方便开发嘛,Windows 下用 docker 也有很多问题,运行、硬盘读取还特慢,反正我有专门的娱乐电脑,索性就把系统给换了,搭建一套开发环境。
    这里我安装的是 Ubuntu20.04 ,最新版的 Ubuntu 桌面系统了,优化了整体的 UI ,如丝般顺滑呢。

    安装

    一、配置 apt 源为阿里云的源

    1. 安装 vim 编辑器
      sudo apt install -y vim
      Shell
    2. 备份 apt 源的配置文件:
      sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
      Shell
    3. 打开阿里云开发者镜像站 点此到达
      找到 Ubuntu 源并且点开,如图:

      打开后找到 Ubuntu20.04 的配置

      复制 Ubuntu20.04 的配置
    4. 打开 apt 源的配置文件
      sudo vim /etc/apt/sources.list
      Shell
    5. 清空 sources.list 文件内的所有内容,vim 命令模式下输入下面命令
      :%d
      Shell
    6. 把刚刚复制的阿里云源复制到 sources.list 文件内
      输入 i 进入 vim 的编辑模式
    7. 保存并退出,vim命令行模式下输入以下命令
      :wq
      Shell
    8. 更新apt源
      sudo apt update
      Shell

    二、安装Nginx服务器

    sudo apt install -y nginx
    Shell

    等待安装完毕后,我们打开浏览器输入127.0.0.1测试看看,出现以下画面就说明安装成功了
    如图:

    三、安装 php7.4

    1. 安装 php7.4
      sudo apt-get install -y php7.4 php7.4-fpm
      Shell

      这里不仅限于安装 php7.4 了,想安装 PHP7.2 的可以把 7.4 换成 7.2 ,看你们想要什么版本就安装什么版本,这里我以最新的去讲。

    2. 查看当前 PHP 版本
      php -v
      Shell
    3. 删除系统自带的 Apache
      sudo apt autoremove -y apache2
      Shell
    4. 安装 PHP 扩展
      sudo apt-get install -y php7.4-gd
      Shell

      这里示例安装 gd 库,需要安装一些别的扩展的,可以去根据自己的 PHP 版本去 apt 源里搜索对应的扩展进行安装,一些扩展源里没有的,比如 swoole 扩展,那就要用到 pecl 或者手动下载编译了。

    5. 安装 pecl 并下载 swoole 扩展
      sudo apt-get install -y php7.4-dev
      Shell

      上面命令是安装 pecl 的,安装完毕后输入如下命令即可下载 swoole 扩展

      sudo pecl install swoole
      Shell

    四、安装 MySQL8

    1. 这里我们安装 mysql-server 和 mysql-client 就可以了,默认会给我们装上最新的 MySQL8 了,如果不是默认的再卸载,指定版本就行了
      sudo apt install -y mysql-server mysql-client
      Shell

      在安装过程中会要求输入 MySQL 的密码,输入即可

    2. MySQL 安装过程中没有让输入密码 (如果有输入密码请直接跳过下面的步骤)
      我们可以通过修改配置文件设置免密登录,进行设置新密码,因为目前 MySQL 默认生成的密码我们还不知道,MySQL 配置文件在 /etc/mysql/mysql.conf.d/mysqld.cnf 下,我们打开他在里面加上一行代码,让其可以无密码登录
      vim /etc/mysql/mysql.conf.d/mysqld.cnf
      Shell

      在 /etc/mysql/mysql.conf.d/mysqld.cnf 文件下的 mysqld 区块内,添加如下代码

      skip-grant-tables
      Shell

      如图:

    3. 重启 MySQL 服务
      service mysql restart
      Shell
    4. 修改 MySQL 的密码,首先登录 mysql 的命令行,命令如下
      mysql -u root -p
      Shell

      这里直接按回车就行了,因为我们刚刚设置了无密码登录的
      进入到命令行后,我们输入如下命令:
      使用mysql表

      use mysql;
      SQL

      更改mysql5.7下root用户的密码为root

      update user set authentication_string=PASSWORD("root")where user=root;
      SQL

      更新mysql密码表

      update user set plugin="mysql_native_password";
      SQL

      刷新权限

      flush privileges;
      Shell

      退出mysql命令行

      exit;
      SQL

      然后别忘了去把我们的无密码登录那一行代码删除掉,修改过后如图:

      这里我刚好看到一段代码:bind-address = 127.0.0.1 ,我建议这里把这行代码注释掉,因为这个是绑定了访问 MySQL 的地址,如果想要开启远程登录访问的话就把这句话注释掉。
      然后重启 mysql 服务

      service mysql restart
      Shell

      接下来我们再次登录 MySQL ,先不输入密码,直接按回车出现下图:

      说明 mysql 不能无密码登录了,接下来看看输入正确密码能不能进去了,如图:

      输入正确密码进入到 MySQL 的命令行界面

    五、安装 Git 分布式版本控制器

    sudo apt install -y git
    Shell

    六、安装 composer 扩展包管理工具

    1. 下载安装脚本 composer-setup.php 到当前目录
      php -r "copy(https://install.phpcomposer.com/installer, composer-setup.php);"
      Shell
    2. 执行安装过程。
      php composer-setup.php
      Shell
    3. 删除安装脚本
      php -r "unlink(composer-setup.php);"
      Shell
    4. 检查是否安装成功并查看 composer 版本
      composer
      Shell
  • 关注微信公众号获取用户信息

    1. 用户关注以及回复消息的时候,都可以获得用户的OpenID

    <xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[text]]></MsgType>
    <Content><![CDATA[%s]]></Content>
    </xml>

    其中的FromUserName就是OpenID

    2. 使用access_token接口,获得全局Access Token

    https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=*********&secret=**********

    返回结果:

    {
        "access_token": "*********************************************************************************",
        "expires_in": 7200
    }

    3. 再使用ACCESS_TOKEN和OpenID(FromUserName)获取用户信息

    https://api.weixin.qq.com/cgi-bin/user/info?access_token=*********&openid=************

    返回如下:

    {
        "subscribe": 1,              =>用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号
        "openid": "xxxxxxxxxxxxx",   =>用户的标识,对当前公众号唯一
        "nickname": "xxxxx",         =>用户昵称
        "sex": 1,                    =>用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
        "language": "zh_CN",         =>语言
        "city": "北京",              =>用户所在城市
        "province": "北京",          =>用户所在省份
        "country": "中国",           =>用户所在国家
        "headimgurl": "xxxxxxxxxxx", =>用户头像,最后一个数值代表正方形头像大小
        "unionid":"",                =>只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段
        "remark":"",                 =>用户备注
        "groupid":"",                =>用户所在的分组ID
        "tagid_list":[],             =>用户被打上的标签ID列表
        "subscribe_time": 1514423852 =>用户关注时间
    }
  • 解决deepin系统进入不了系统 开机转圈圈的解决方法

    很多人安装deepin大部分可能会遇到因为显卡的原因或者双显卡的原因无法进入系统页面一直在转圈。

    解决方法

    • 开机进入grub的引导页面,选择deepin的启动项。先不要按回车进入系统。而是按 e 键 进入gurb引导编辑页面。
    • 找到 splash quiet 这个关键词 后面可能带有 DEEPIN_GFXMODE=$DEEPIN_GFXMODE 如果你的显卡是 nvidia 系列 (例如我的笔记本就是HD610+GTX950m ) 双显卡不过 liunx 对独显貌似很感冒,一直不冷不热。关键是部分显卡厂商没有提供liunx的驱动服务。
    • 在grub的编辑项中,如果 DEEPIN_GFXMODE=$DEEPIN_GFXMODE 不能进入系统,那只能替换以下这两条 acpi_osi=! acpi="windows 2009" 或者是 nouveau.modeset=0 然后按 F10 应用重新进入系统,如果不行一条试。
    #尝试替换以下代码
    DEEPIN_GFXMODE=$DEEPIN_GFXMODE
    nouveau.modeset=0
    acpi_osi=! acpi="windows 2009"
    • 成功进入系统后,利用deepin系统自带的显卡驱动管理,下载对应的显卡驱动就可以了。

    注:显卡驱动自带4个模式,核显、独显、大黄蜂、双显卡 ,这里推荐安装双显卡模式 就是一个字 

    • 如果暂时没有你的驱动,可以有以下方法尝试。

    如果没有对应驱动,可以按Ctrl+Alt+T进入打开终端,在终端中输入

    sudo gedit /boot/grub/grub.cfg
    #安装sudo
    sudo apt-get -y install gedit

    很多人没有安装到 gedit命令,可以尝试用 sudo命令

    sudo nano /boot/grub/grub.cfg

    打开后需要在第一个quiet后添加之前的代码,重启后生效。

    解决问题大概就是这样。详细教程迟点在写。。。。

  • Ubuntu 1604 下安装Firefox的Flah插件

    ubuntu系统环境下面打开优酷视频,发现无法播放视频。Adobe Flash Player 是一款轻量级浏览器插件,具有丰富的 Internet 应用运行时间,提供持续的迷人用户体验、绝妙的音频/视频回放效果和刺激的游戏。


    虽然flash早晚会被html5代替,但目前还是不少网站在用,正好研究一下怎么安装flash插件,在优酷的提示下,点击进入Adobe Flash Player的下载页面:

    选择.tar.gz的包, 下载后解压得到文件,主要的是libflashplayer.so文件与usr文件夹,可在这个当前目录下,右键打开终端,运行以下命令:

    sudo cp libflashplayer.so /usr/lib/firefox-addons/plugins
    sudo cp -r usr/* /usr

    重吂firefox就OK了!看看下面的效果图:

  • win10如何手动强制关联默认文件打开方式程序

    相信不少使用win10的朋友碰到过这样的问题:在win10系统中有时设置某个类型的文件默认打开的程序会出现失败的情况,比如.php类型的文件(文中以下均以.php类型文件为例),我想让系统默认用EditPlus软件打开,但设置后你会发现php类型的文档图标并没有发生变化,一般来说设置好某个类型文件的打开方式后文件的图标会自动变为与相应程序相关的类型文件图标。

    在win7的时候基本没碰到这种情况,也不知道是不是win10bug,但在win10多次更新后这个问题仍旧出现,网上查了资料发现似乎是win10系统为防止一些程序恶意关联文件类型而做的防护措施,看起来并不是一个bug。虽然给系统的安全性带来了很大的好处,但用起来明显感觉很不方便,每次打开时都要执行“在这台电脑上查找其他应用”,非常的烦人,小编也没找到关闭这个防护措施的地方。通过下图你可能发现了,在选择默认程序列表中根本不存在我按照正常方式所安装的Editplus软件,而这在win7中却正常。

    经过一番的折腾发现通过常规方式修改基本是没有效果的。如上面的方法通过右键选择默认的程序没作用,然后打开系统设置,找到应用-默认程序-根据文件类型指定默认应用,一样没作用,因为你会发现文件类型根本就不存在.php后缀名,即便是找到了.php后缀名,点击右边+号,但是,只弹出uwp应用,其他的什么都没有,根本没法选择自己安装的EditPlus应用,简直坑的不能再坑了。

    最后没得法,限制的再厉害,只要注册表权限还有,我就能给你动手术,大不了系统崩溃。。对着网上的教程再一番折腾,终于解决了问题,现整理如下:

    修改注册表有风险,如果对注册表不熟悉强烈建议修改前对注册表进行备份。

    1.按win+R组合键打开运行对话框,输入regedit,回车,打开注册表编辑器。

    2.定位到 计算机HKEY_CLASSES_ROOT项

    3.对着 HKEY_CLASSES_ROOT 右击,选择 新建-项,命名为 .php (注意小点)PS:如果已经存在.php怎么办?如果确定要用某款软件作为默认的打开程序如EditPlus,直接将其删除即可,重新创建,注册表删除有风险,操作需谨慎,强烈建议修改前对注册表进行备份。

    4.选中 .php,双击右边的默认项,打开编辑字符串对话框,填写 php_auto_file 确定退出,(格式:后缀名_auto_file,后缀名即为你要关联的文件类型,如要关联.html,就填写 html_auto_file 下同)

    5.接下来再次对着HKEY_CLASSES_ROOT项单右击,新建项,将其命名为 php_auto_file

    6.选中php_auto_file,建立如下的结构 计算机HKEY_CLASSES_ROOTphp_auto_fileshellopencommand

    7.定位到command项,双击右面的默认项,打开编辑字符串对话框,输入要关联的应用程序绝对路径,并带上%1参数,如下图所示,这里为

    "C:Program Files (x86)EditPlus 3EditPlus.exe" %1

    注意添加英文状态下的双引号及后面的 %1与前面有空格。

    8.接下来进入到HKEY_CURRENT_USER/Software/classes,重复以上的步骤创建 .php,php_auto_file项

    9.退出注册表编辑器,你会发现php文件已经关联到EditPlus了,右键点击php文件你会发现右键菜单第一项变成了“打开”,而不是之前的“打开方式”,双击直接就能用EditPlus打开php文件了,解决问题~

    修改后

    修改前

    重启后文件图标也发生了变化,为EditPlus.exe文件图标

    注意:经小编测试,如果在打开方式中已经有了关联程序的话,在设置默认的打开程序时还需要到win10系统设置-应用-默认程序-根据文件类型指定默认应用中进行手动调整一下才能生效,如下图所示,之前已经有了用记事本打开,在经过上述操作后,EditPlus已经加入其中,但每次双击时仍旧会提示你选择要使用的程序,通过右键菜单-打开方式-选择其他应用-勾选“始终使用此应用打开.php文件”是没有效果的,只能在win10系统设置-应用-默认程序-根据文件类型指定默认应用选择EditPlus后才能生效,选择后你也会发现windows资源管理器和桌面进行了刷新,而且.php类型文件图标也已变成了EditPlus.exe文件图标,这时候才真正设置成功。同时,如果把所关联的应用程序,如EditPlus卸载后,相应的注册表项似乎并没有同时删除,需要手动删除处理。

    双击php文件时仍旧询问用何种方式打开,但EditPlus已集成到此菜单中

  • 服务端客户端 np 操作备忘 附一键指南

    Github地址:https://github.com/cnlh/nps

    直接下载安装,装的新版是0.26.3,使用64 位系统 ,其他相应修改,如树莓派等,服务端找 server,客户端找 client。

    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_amd64_server.tar.gz && tar zxvf linux_amd64_server.tar.gz

    freebsd_386_client.tar.gz
    freebsd_386_server.tar.gz
    freebsd_amd64_client.tar.gz
    freebsd_amd64_server.tar.gz
    freebsd_arm_client.tar.gz
    freebsd_arm_server.tar.gz
    linux_386_client.tar.gz
    linux_386_server.tar.gz
    linux_amd64_client.tar.gz
    linux_amd64_server.tar.gz
    linux_arm64_client.tar.gz
    linux_arm64_server.tar.gz
    linux_arm_client.tar.gz
    linux_arm_server.tar.gz
    linux_mips64le_client.tar.gz
    linux_mips64le_server.tar.gz
    linux_mips64_client.tar.gz
    linux_mips64_server.tar.gz
    linux_mipsle_client.tar.gz
    linux_mipsle_server.tar.gz
    linux_mips_client.tar.gz
    linux_mips_server.tar.gz
    macos_client.tar.gz
    macos_server.tar.gz
    win_386_client.tar.gz
    win_386_server.tar.gz
    win_amd64_client.tar.gz
    win_amd64_server.tar.gz

    所有命令 0.26.3

    wget https://github.com/cnlh/nps/releases/download/v0.26.3/freebsd_386_client.tar.gz && tar zxvf freebsd_386_client.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/freebsd_386_server.tar.gz && tar zxvf freebsd_386_server.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/freebsd_amd64_client.tar.gz && tar zxvf freebsd_amd64_client.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/freebsd_amd64_server.tar.gz && tar zxvf  freebsd_amd64_server.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/freebsd_arm_client.tar.gz && tar zxvf  freebsd_arm_client.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/freebsd_arm_server.tar.gz && tar zxvf freebsd_arm_server.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_386_client.tar.gz && tar zxvf linux_386_client.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_386_server.tar.gz && tar zxvf linux_386_server.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_amd64_client.tar.gz && tar zxvf linux_amd64_client.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_amd64_server.tar.gz && tar zxvf linux_amd64_server.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_arm64_client.tar.gz && tar zxvf linux_arm64_client.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_arm64_server.tar.gz && tar zxvf linux_arm64_server.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_arm_client.tar.gz && tar zxvf linux_arm_client.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_arm_server.tar.gz && tar zxvf linux_arm_server.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_mips64le_client.tar.gz && tar zxvf  linux_mips64le_client.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_mips64le_server.tar.gz && tar zxvf linux_mips64le_server.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_mips64_client.tar.gz && tar zxvf  linux_mips64_client.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_mips64_server.tar.gz && tar zxvf  linux_mips64_server.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_mipsle_client.tar.gz && tar zxvf linux_mipsle_client.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_mipsle_server.tar.gz   linux_mipsle_server.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_mips_client.tar.gz && tar zxvf linux_mips_client.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/linux_mips_server.tar.gz && tar zxvf  linux_mips_server.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/macos_client.tar.gz && tar zxvf macos_client.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/macos_server.tar.gz && tar zxvf macos_server.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/win_386_client.tar.gz && tar zxvf win_386_client.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/win_386_server.tar.gz && tar zxvf win_386_server.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/win_amd64_client.tar.gz && tar zxvf win_amd64_client.tar.gz
    wget https://github.com/cnlh/nps/releases/download/v0.26.3/win_amd64_server.tar.gz && tar zxvf win_amd64_server.tar.gz

    上面中间因为插件的文件显示为 amp,实际就两个&&符号。

    cd nps

    ./nps install

    直接安装到系统

    会看到日志,复制的一些配置文件和可用的操作命令

    copy file ::/root/nps/conf/app.conf to /etc/nps/conf/app.conf
    copy file ::/root/nps/conf/clients.csv to /etc/nps/conf/clients.csv
    copy file ::/root/nps/conf/hosts.csv to /etc/nps/conf/hosts.csv
    copy file ::/root/nps/conf/tasks.csv to /etc/nps/conf/tasks.csv
    Executable files have been copied to /usr/bin/nps
    install ok!
    Static files and configuration files in the current directory will be useless
    安装以后的配置文件在 /etc/nps

    /etc/nps/conf 配置文件 /etc/nps/web网页界面

    可用的命令 nps test|start|stop|restart|status

    其他使用按 readme帮助文档照着配置就可以了


    与 nginx,tenginx,apache 搭配使用,需要配置不同端口


    客户端启动

    无配置文件

     ./npc -server=ip:port -vkey=web界面中显示的密钥

    配置文件模式

    此模式使用nps的公钥或者客户端私钥验证,各种配置在客户端完成,同时服务端web也可以进行管理

     ./npc -config=npc配置文件路径


    以上是不是太麻烦了。。。

    当然用一键配置命令啊

    下载地址: https://github.com/cnlh/nps/releases
    教程地址: https://github.com/cnlh/nps

    nps 图文教程

    服务端一键安装脚本:bash <(curl -L -s https://opt.cn2qq.com/opt-script/nps.sh)
  • Linux 服务器配置密钥实现远程免密登录

    相信很多人的服务器都有被恶意扫描的情况,有的甚至还被暴力破解过。服务器安全维护除了最基本的修改常用端口外,传统的密码登录方式已不再被推荐,因为这已经成为一种安全隐患。SSH 远程连接推荐安全可靠的密钥登录方式如今已经成为主流,它可以很好的解决服务器暴力破解或是忘记密码等问题。

     

    Linux 服务器配置密钥实现远程免密登录

     

    一、生成密钥对

    可在服务端或者本地通过以下命令生成密钥对 (Win­dows 或 Linux 均支持):

    ssh-keygen
    Bash

    执行上面命令后,之后一路回车,默认不设密码,密钥存放目录默认为 ~/.ssh (此为隐藏目录)该目录下同时包含了下面四个文件:

    文件名称 说明
    authorized_keys Linux 公钥验证检测文件,存放远程免密登录的公钥
    id_rsa 生成的私钥文件
    id_rsa.pub 生成的公钥文件
    known_hosts 已知的主机公钥清单

    注意:若为 Win­dows 系统,默认私钥存放在C:Usersyour name.ssh 目录下。

    二、安装公钥至服务端/远端

    服务端或本地生成的密钥对,对于不同情况安装公钥的方法有所不同,请根据具体情况进行操作。

    1、若密钥对由服务端/远端生成

    如果生成密钥的操作是在服务端 / 远端进行的,为防止与服务器彻底失联,请提前保存私钥 id_rsa 文件到本地,然后输入在服务端输入以下命令安装公钥:

    # 进入密钥存放目录,默认~/.ssh目录下
    cd ~/.ssh
    
    # 将生成的公钥追加到主机 authorized_keys 文件中
    cat id_rsa.pub >> authorized_keys
    Bash

    注意:一个公钥只允许一个用户登录和使用

    2、若密钥对由本地生成

    如果生成密钥的操作是在本地终端上进行的,那么输入以下命令将公钥上传到 VPS:

    ssh-copy-id username@remote-ip -p port
    Plain text

    username 为用户名,remote-ip 为远程IP地址,port为端口号。

    在没有 ssh-copy-id 的情况下(比如在 Win­dows 上), 也可以用命令来操作:

    ssh username@remote-ip -p port mkdir -p .ssh && cat >> .ssh/authorized_keys < ~/.ssh/id_rsa.pub
    Plain text

    命令的含义是,在远端新建 .ssh 文件夹,并把本地的 ~/.ssh/id_rsa.pub(公钥)追加到远端的 .ssh/authorized_keys 中。

    当然,你也可以手动进行操作,先复制公钥,再登录 VPS ,粘贴到 .ssh/authorized_keys 中。

    三、服务端配置文件目录权限

    # 给文件赋权
    sudo chmod 600 authorized_keys
    
    # 给目录赋权
    sudo chmod 700 ~/.ssh
    Plain text

    四、服务端开启密钥登陆功能

    1、登录服务器修改 SSH 配置文件

    sudo vim /etc/ssh/sshd_config
    Plain text

    2、查看确认下面两项配置

    RSAAuthentication yes
    PubkeyAuthentication yes
    Plain text

    当你已完成上面全部设置,并确认已成功通过密钥方式登录后,根据需要决定是否禁用密码登录(可选),sshd_config 文件修改配置项,如下:

    PasswordAuthentication no
    Plain text

    3、重启 SSH

    sudo service sshd restart
    Plain text

    五、本地免密登录远程服务器

    如果客户端为 win­dows,私钥文件 id_rsa 应存在于 C:Usersyour name.ssh 目录下,或是在登陆时指定私钥地址:

    ssh -i /path/to/id_rsa username@remote-ip
    Bash

    username 为用户名,remote-ip 为IP地址,/path/to/id_rsa 密钥的完整路径

    如果是使用 VS Code 远程连接则需要在配置中需要指定私钥地址:

    Host MyServer
      HostName *.*.*.* // 服务器ip地址
      User root // 用户名
      Port xxxx //端口号
      IdentityFile "D:小姐姐的家ssh-keyid_rsa" //id_rsa 的文件路径
    Bash
  • 最小 Linux 发行版 Tiny Core Linux 71 发布

    Tiny Core Linux 是一个极度简约但是也高度可扩展的 GNU/Linux 发行版,其之精简甚至可以小到只有 10MB 大小。昨天 5月23日刚刚发布的 Tiny Core Linux 7.1 也仅仅只有区区 11.7 MB 大小而已,体积之小实在令人叹为观止,要知道普通的 Ubuntu 也好,Debian 也好, 动辄就是800MB-4700MB,一张光碟装不下是时常的事儿。今天我们将带你看看最小Linux发行版的神奇魅力!

    然而麻雀虽小五脏俱全,“高大强”不代表武功盖世,“矮小瘦”不见得水平低劣。中国很多武侠小说中都有这样一个人物,看上去仿佛其貌不扬,还时常个子小小抑或干瘪老头,病怏怏让看客担心其随时准备撒手人寰,然而一出手则技惊四座,力压群雄,内外落差让人折服。


    Tiny Core Linux(简称 TCL) 虽不干瘪,但是仅仅 10MB 级别的大小,确实让人惊奇,大家别忘了,它还包含图形界面。TCL 本来的初衷就是提供一个包含 BusyBox 和 FLTK 图形界面、JWM 窗口管理器的最小系统。

    TCL 的最小硬件配置要求是 28MB 内存保障核心运行, 46 MB 内存保障系统运行,最低 CPU 需求是 i486DX,也就是课本中提到的老古董 Intel 80486。然而这些只是最低硬件配置要求而已,TCL的官方推荐配置要求是不低于 奔腾 2 CPU,128MB内存。恐怕小伙伴们也找不到还健在的低于这个配置的机器了吧。

  • VBA基础入门到高级开发80集(完整)

    1~80集完整目录
      一、基础知识(8集)
      VBA对新手总显得那么神秘,怕自已没基础,担心自已学不会。本章是给VBA零基础的同学准备的VBA入门必备知识。看完本章的内容,你再为自已是否能学会VBA下一个定论。
      第1集.宏与VBA
      第2集.VBA中的语句、对象、方法与属性
      第3集.循环语句
      第4集.判断语句
      第5集.VBA变量
      第6集.函数与公式
      第7集.VBE编辑器
      第8集.VBA分支与End语句
      二、Excel对象操作(11集)
      本章是学习如何用VBA操作EXCEL的工作簿、工作表以及单元格。你想自动监控Excel工作表中的数据更改吗?你想让别人无法打开、无法打印、无法查看你指定或所有的EXCEL文件或工作表吗?如果需要,一定要关注本章的第17~19集事件程序。
      第9集.Excel文件操作
      第10集.Excel工作表
      第11集.单元格的选取
      第12集.特殊单元格定位
      第13集.单元格信息
      第14集.单元格格式
      第15集.单元格编辑
      第16集.单元格查找
      第17集.工作表事件程序
      第18集.工作簿事件程序
      第19集.excel程序事件程序
      三、VBA数组与字典(10集)
      你总抱怨你的代码运行太慢、看到高手们的代码快如闪电你羡慕不已但又感觉高不可攀。其实你不必这样。你学会了本章的VBA数组,你也可以写出快步如飞的代码。原来2秒、10秒的代码你优化到0.2还感觉不可接受。0.02秒是你追求的目标。如果你学会了兰色原创的下棋法,原来汇总竟能如此的快...几万行的数据竟然在瞬间完成。字典是数组的黄金搭挡,配合字典,VBA数组更是如虎添翼。
      第20集.VBA数组-1:数组基础
      第21集.VBA数组-2:数组的读取
      第22集.VBA数组-3:数组的空间
      第23集.VBA数组-4:函数与数组
      第24集.VBA数组-5:数组与单元格格式
      第25集.VBA数组-6:VBA排序算法之冒泡排序和选择排序
      第26集.VBA数组-7:VBA排序算法之插入排序和希尔排序
      第27集.VBA字典-1
      第28集.VBA字典-2
      第29集.VBA数组与字典综合应用之下棋法(兰色原创)
      四、VBA自定义函数(2集)
      也许你在埋怨自已,为什么我的函数学的这么烂,天书般的数组公式、晕头转向的函数嵌套让你一声叹息。
      也许你在埋怨Excel,为什么不提供更多、更实用的函数让我们用。
      其实,我们可以自已编写需要的函数。想要什么功能,学完了本章你需要轻敲键盘,一个新的函数在你手中诞生了。同事们惊奇的问你:为什么这个函数我电脑里没有?
      第30集.自定义函数基础
      第31集.自定义函数的参数设置
      五、VBA对话框操作(3集)
      你是否有这样的需求,程序开始时你需要让用户输入要汇总的行数,数据输入后让程序告诉你“数据输入已完成”。这些Msgbox和inputbox函数可以帮你完成,他们可以弹出一个提示窗口和数据输入窗口。
      第32集.Msgbox函数完全应用
      第33集.Inputbox函数/方法应用
      第34集.调用Excel对话框
      六、字符串处理(7集)
      字串符要拆分、要提取、要对比。一般简单的字符串处理用函数和like运算符就可以完成。但复杂的字符串处理,你就得学学正则表达式了。它不用你费力的循环和复杂的函数,原来复杂的字符串处理原来如此简单。比如表示数字d非数字就是D,表示连续2个数字可以用d{2}。但要想全部掌握正则也非易事,本章也用了5集的篇幅来学习正则。
      第35集.字符串的拆分、查找与转换
      第36集.like运算符的使用
      第37集.正则表达式1
      第38集.正则表达式2
      第39集.正则表达式3
      第40集.正则表达式4
      第41集.正则表达式5
      七、VBA编辑技巧
      数据类型咋这么多,变来变去的眼花缭乱。日期要算间隔、时间要算总时长。图片让你的表格更美观、更生动,但掌控它们却需要了解他们的秉性。
      移形换位?难道是段誉的凌波微步?它快的让人难以置信,其他的随机抽取方法全成了片片浮云。
      递归如同迷宫,只有了解它的原理。才能把它玩在掌中。
      程序提速是很多人的梦想,47集的提速大法,你可以丢掉鸟枪换炮了。
      第42集.VBA数据类型及转换
      第43集.日期与时间
      第44集.图片与图形处理
      第45集.随机抽取之移形换位法
      第46集.组合之递归算法
      第47集.VBA程序提速
      八、目录与文件的操作
      多文件汇总是一个永恒的难题,文件夹操作尤为重要。VBA也能自动压缩文件?真的可以。它可以让你做手工无法做到的批量提取文件压缩和解压缩。还有文本文件,虽然只是用来装文字的,但工作中却离不开它。
      第48集.文件夹基础操作
      第49集.文件夹的遍历
      第50集.VBA压缩文件和解压缩
      第51集.文本文件的写入
      第52集.文本文件的读取
      九、窗体与控件(10集)
      想让自已的程序更“软件”化,你就必须走出这一步,抛弃土得掉渣的工作表界面,换为友好的窗体对话框。你才发现..这才是你梦想中的excel程序软件。
      第53集.VBA窗体与控件基础
      第54集.窗体事件
      第55集.标签与按钮控件
      第56集.文字框控件
      第57集.列表框和组合框控件
      第58集.单选、复选、框架与多页控件
      第59集.Listview控件
      第60集.Treeview控件
      第61集.日期与进度条控件
      第62集.窗体与控件综合实例。
      十、菜单与工具栏(4集)
      编写好的程序是让人执行的,用什么方法最方便呢,当然是做成命令放在菜单里,比如在右键菜单里加一个自已的命令,点击就可以执行我们写的功能。甚至我把Excel现在的菜单全隐藏了,换成我自已定的菜单和工具栏才够爽,学完了这章你就可以做到。07和10的界面和03大不相同,是不是就不能自定义标签和命令了呢?不要着急,为了适合07和10的功能区设置,本章特加了两集功能区(ribbon)的介绍。这个可是高科技,自学很难,不过看视频嘛...就简单了。(做一次王婆^_^)
      第63集.Excel命令栏操作之命令栏
      第64集.Excel命令栏操作之自定义命令
      第65集.Excel功能区(Ribbon)的操作一(适于07和10版)
      第66集.Excel功能区(Ribbon)的操作二(适于07和10版)
      十一、代码操作代码(1集)
      代码操作代码,听起来逻辑有点混乱。其实和你说几个功能,你也许就会马上来精神。你有没有想过批量删除一些含宏文件的代码?自已写的软件可以通过自动添加VBA模块代码进行升级?能不能自动添加象字典等一些外部对象的引用?这些全可以在学完本集后实现。
      第67集.VBA模块的操作
      十二、类模块
      类模块,很多人说它是“累”模块。深奥难懂的它“累”死我们无数脑细胞,结果还是没有多少进展,好不容易学会点了却不知道它到底有什么作用,于是自已安慰自已;累模块有什么,不用它我照样可以。其实你没学会也不怪你,现在类模块系统的教程很少而且有的生涩难懂。让新手摸不清东西南北中,本章的也许会让你惊呼,心目中神一般的类模块原来是这样的容易。
      类模块的用处在本章和后面各章会逐淅突显出来,有时不用累模块你还真无法完成这些功能,利用类模块可以让你代码象小学一年级同学都能看懂、利用它可以让你编程更轻松、代码更简捷捷。不多说了,还是留点悬念。
      第68集.类模块基础
      第69集.类模块事件
      第70集.类模块封装
      十二、SQL与数据库访问(5集)
      Excel是一个强大的数据分析工具,但它不是一个好的数据库,如果有几万行甚至几十万行,每次打开它时你可以喝杯热茶慢慢等一下了。所以要做一个完善的EXCEL软件,数据库的操作你是绕不过去的对手。
      对于专业编程人员来说,SQL是很熟悉了,因为大部分编程语言都要面对数据库,而SQL+ADO是访问数据库的必备工具。对于你们来说,可能本章内容应该很容易就学完。不过也不能掉以轻心,必竟你现在不只是面对ACCESS和其他专业数据库,还有Excel数据库。
      对于没有接触过的新手来说,SQL可能是天书,是想学又不敢接触的“神码”。其实,真的别怕,SQL和ADO虽然很深不可测,但对于VBA程序员来说,我们要的是数据库的录入、查询、修改、删除就足够,只要坚持学完本章,你就可以尝试一下操作专业数据库的爽劲了。
      第71集.数据库的基础操作
      第72集.SQL语言基础
      第73集.SQL多表查询
      第74集:SQL实例之入库设计
      第75集;SQL实例之进销存报表生成
      十四、VBA网络应用(1集)
      我们总习惯于打开网页,或复制粘贴,或填写提交,或点击下载。但你想过在Excel里就可以查询网上的数据吗?你想过可以轻轻一点就可以下载网站的资源吗?你想过不用登陆论坛,不用一页页的翻看贴子就可以在EXCEL里查看所有跟贴吗?你想过有朝一日你编写了软件,可以让别人自动下载补丁实现自动本地更新软件吗?所有这一切,本章的知识可以帮你完成。
      第76集.网络数据下载与邮件发送
      十五、API函数的应用(2集)
      API还是有编辑基础的认识,无编程基础的视若神明。它,的确是神的化身。Excel中再难实现的功能,只要随着它的潇洒出现,一切将迎刃而解。本章内容老手权当复习,对于新手将是你入门和学会使用API函数的机会。
      第77集.VBA API基础
      第78集.VBA API的实例应用
      十六、Com加载宏与DLL代码封装(2集)
      如果API是神的化身,那么COM加载宏和DLL封装就是上帝。它的身影好象只会出现在VBA高手的笔下。它让你的代码完全隐身在几乎无法破解的DLL文件中。它,是VBA80集的守关知识点,将是你打通任督二脉,成为V林高手的关键之战。
      第79集.VBA代码的封装(DLL)
      第80集.Com加载宏与插件开发

    链接: https://pan.baidu.com/s/1kW2M0rbd8RPeQH6YnbmL8Q

    提取码: 89bv