在Linux Ubuntu下把PDF扫描档转换为可编辑文本文件

本教程所用环境
* 机器:普通电脑 ThinkPad E470c
* 系统:Ubuntu 16.04 LTS
背景
    有一个朋友找我帮忙,需要把他在网上下载的一份pdf文件转换为word文档。刚开始我认为这个操作很简单,网上应该很多成熟的方案,果然,随便找找,就找到很多免费的在线转换网站。
    本以为事情结束了,native :) ,他下载的是一份扫描档pdf文件(每一页类似于一张文件),在线网站还没有找到能直接把pdf扫描档转换为word文档的,花了九牛二虎之力也没有发现简便的方法,最后我觉得应该借助Linux的工具来解决这件事(Windows有收费软件直接解决,更方便)。
方法

概括:先把pdf扫描档转换为图片,然后把图片转换为txt文本文档,最开始找到了一个软件pdfocr,但好像16.04安装不了。

  • 把pdf扫描档转换为图片

    这一步需要借助工具包poppler-utils,这个工具包里含有很多处理pdf文档的工具。

    1. 检测你是否已经安装过此工具dpkg -s poppler-utils,大多数Ubuntu默认已经安装了。如下图:
      pdf转换工具
      可以看到,有很多命令(pdftotext,pdftohtml,pdfimages等)供我们使用,如果是正常pdf文档是可以直接转换为txt文本的,命令:pdftotxt xx.pdf xx.txt

    2. 如果没有安装,则使用sudo apt install poppler-utils命令安装。

    3. 把pdf扫描档转换为png图片:pdfimages xxx.pdf -png 你的/存放/图片/目录/路径,如果你的pdf有多页,那么每页会自动生成一张图片。

  • 把图片转换成txt文档

    这一步需要借助工具是Tesseract,这个软件已经大名顶顶了。

    1. 安装命令sudo apt install tesseract-ocr tesseract-ocr-chi-sim,前一个是软件,后一个是中文简体语言包。语言包有很多,我只安装了中文简体,其它语言包如下图:
      Tesseract语言包

    2. cd进入你的/存放/图片/目录/路径

    3. 先处理单个文件试验一下:tesseract xx.png output -l chi_sim,参数:-l(L字母小写,language首字母) chi_sim是需要识别的语言包,成功后,当前目录下就会多一个output.txt文件,里面内容就是图片上的文字,但要注意,如果图片质量不好,那么识别出来的内容会有挺大的偏差。

    4. 批量处理命令:

    for i in `ls *.png | awk -F '.' '{print $1}'`;do tesseract $i.png $i -l chi_sim;done
    
ps:如果你有更好的方法,可以微信或邮件告知哟!

ETP(熵)币在Ubuntu下的挖矿教程

本教程所用环境
* 机器:普通电脑 ThinkPad E470c
* 系统:Ubuntu 16.04 LTS
步骤
  • 下载元界钱包
    • 官方博客有一篇元界(Metaverse)安装与使用手册,这里面涵盖了Windows,MacOSX,Linux系统下钱包下载,安装,使用的详细说明,可能在一些细节与实际不同,摸索一下就会掌握,如有问题,欢迎在评论下留言,或者直接联系我。
  • 下载挖矿软件
    1. 英语过关的请直接看这篇文章Ethereum GPU Mining on Linux How-To,这里有如何下载以太币挖矿软件和显卡驱动。建议:最好结合我下面的一起操作 🙂 。
    2. 我结合自己的实践来大概说明一下:
      • 用以下命令增加挖矿软件安装包的源:
      sudo apt-get install software-properties-common
      sudo add-apt-repository ppa:ethereum/ethereum
      sudo apt-get update
      

      如果是在Debian 8(在Ubuntu上你可以跳过此步骤)上你需要使用以下命令替换源名称:

      sudo sed 's/jessie/vivid/' -i /etc/apt/sources.list.d/ethereum-*.list
      sudo apt-get update
      
      • 安装ethereum, ethminer 和 geth:
      sudo apt-get install ethereum ethminer geth
      

      geth好像是用来生成以太币钱包地址的,对于我们将要挖ETP来说,应该没有用处。因为我们在安装好元界钱包,注册登录后会有ETP的地址。

      • 安装显卡驱动:
        首先,需要知道自己电脑的显卡型号,然后去官方下载对应的驱动软件。比如我的显卡是NVIDIA,电脑系统是Linux(Ubuntu 16.04 LTS)64位,使用的是GeForce 920。到N卡驱动官方网站搜索下载自己需要的驱动。

      然后,安装显卡驱动所需要的依赖:

      sudo apt-get install linux-headers-amd64 build-essential
      

      linux-headers-amd64 这个包好像已经废弃了,不过不影响后续安装。

      最后,安装驱动。显卡驱动安装必须在Linux文本模式,所以:

      第一步,Ctrl+Alt+F1切换到tty1,使用命令sudo service lightdm stop关闭 X-Window.

      第二步,给下载的驱动增加执行权限,然后运行(注:请先看完以下内容在运行).

      chmod +x NVIDIA-Linux-x86_64-367.35.run
      sudo ./NVIDIA-Linux-x86_64-367.35.run
      

      第三步,安装完成后,重新启动X-Windowsudo service lightdm start,然后Ctrl+Alt+F7进入图形界面;

      我在安装完成后遇到一个坑,在图形模式下,登录界面输入密码后依然跳转回登陆界面,无限循环。经过搜索,用以下方法重新安装解决:

      sudo ./NVIDIA.run -no-x-check -no-nouveau-check -no-opengl-files
      -no-x-check:安装驱动时关闭X服务
      -no-nouveau-check:安装驱动时禁用nouveau
      -no-opengl-files:只安装驱动文件,不安装OpenGL文件
      

      这样再reboot,就不会出现循环登录的问题。

      如果没有解决请参考这篇blog.

    3. 寻找矿池挖矿。

      我使用的是火池,挖矿命令:ethminer -F http://get.etp.huopool.com:8888/MEEihkdp6w7JKVA6hyKVGU9FomAV4G7jYP -G --farm-recheck 200

      由于我用的是个人电脑,所以算力很低 🙂 ,仅为了试验一下而已,下面是挖矿和矿池收益截图:
      挖矿图
      收益图

总结
  • 以上内容如果对你有帮助且你还有闲余的ETP的话,可以对我进行打赏
    我的ETP地址:MEEihkdp6w7JKVA6hyKVGU9FomAV4G7jYP
    我的博客地址:http://blog.blianb.com

在CentOS 6上增加Swap分区

需求背景

在我的个人低配ECS上,由于在使用composer update -vvv升级项目使用的第三方库时出现下面的提示,根据资料显示,大都是缺少Linux Swap引起的。

The following exception is caused by a lack of memory and not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details

PHP Warning:  proc_open(): fork failed - Cannot allocate memory in phar:///usr/local/bin/composer/vendor/symfony/console/Application.php on line 960

Warning: proc_open(): fork failed - Cannot allocate memory in phar:///usr/local/bin/composer/vendor/symfony/console/Application.php on line 954

  [ErrorException]
  proc_open(): fork failed - Cannot allocate memory
关于Linux交换分区

Linux RAM由内存页组成的块组成的。为了释放RAM,就可能产生“linux交换分区”,并将部分内存从RAM复制到硬盘上的预配置空间。Linux交换分区就是为了允许系统利用比原来可用的内存更多的内存。

但是,交换分区也有一些缺点。由于硬盘的读写速度比RAM慢得多,因此服务器性能可能会大大减慢。另外,如果系统有太多文件从交换分区写入和读出,那么swap thrashing可能发生(这会导致效率低下,因为大部分时间消耗在访问磁盘上)。

增加交换空间步骤:
  • 检查交换分区空间

    在我们继续交换分区文件之前,我们需要查看交换分区使用情况,检查是否已经启用了交换分区文件。

    命令:swapon -s

    如果没有返回,则摘要为空,不存在交换分区文件。

  • 检查文件系统

    在知道我们没有启用交换分区文件后,我们可以使用df命令检查服务器上有多少剩余空间。交换分区文件需要512MB,以下结果显示我们只使用了大约7%的/dev/hda磁盘空间。

df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda              20642428   1347968  18245884   7% /
  • 创建并启用交换分区文件

    现在是使用dd命令创建交换分区文件本身的时候了:

    sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k
    “of=/swapfile”指定文件的名称,这里我们取的名称是swapfile。

  • 为交换文件创建一个linux交换分区区域:

    sudo mkswap /swapfile

    结果显示:

Setting up swapspace version 1, size = 536866 kB
  • 通过激活交换分区文件完成工作:

    sudo swapon /swapfile

  • 查看交换分区摘要,将可以看到新的交换分区文件。

    swapon -s

swapon -s
Filename                Type        Size    Used    Priority
/swapfile                               file        524280  0   -1
  • 做完这些工作后,如果服务器重启,那么这个交换分区会消失。可以通过将交换分区配置添加到fstab文件来确保交换分区一直存在。

    打开文件:

    sudo vim /etc/fstab

    在fstab文件最下面粘贴以下内容就可以:

/swapfile swap swap defaults 0 0
  • 这个交换分区文件只应该有读的权限,所以我们要给它设置正确的权限:

    chown root:root /swapfile

    chmod 0600 /swapfile

如何配置Swappiness

操作系统内核可以通过称为swappiness的配置参数来调整依赖交换分区的使用频率。

  • 要查看当前的swappiness设置,使用命令:

    cat /proc/sys/vm/swappiness

    结果显示为:

60

Swapiness是0到100之间的值。接近100的Swappiness意味着操作系统会频繁的使用交换分区。虽然交换分区给系统提供额外的资源,但RAM比交换分区空间读写速度快得多。不管什么时候,程序从RAM移动到交换分区的话,它的运行速度都会减慢。
当Swappiness值为0时意味着操作只会在必须需要依靠交换分区时才会使用到它,比如,不使用交换分区,内存会溢出。

  • 我们可以使用sysctl命令调整swappiness:

    sysctl vm.swappiness = 10

vm.swappiness = 10
  • 如果我们再次检查系统的swappiness值,可以看到已经修改了:

    cat /proc/sys/vm/swappiness

10
  • 要使您的服务器每次启动时自动应用此设置,您可以将该设置添加到/etc/sysctl.conf文件中:

    sudo vim /etc/sysctl.conf

    增加内容: vm.swappiness = 10

自动化检测PHP语法和编程规范(Git pre-commit)

自动化检测PHP语法和编程规范

使用到的知识点:

  • 命令php -l检测文件语法,可以通过php -h查看PHP CLI支持哪些操作,如下:.
[:~]$ php -h
Usage: php [options] [-f] <file> [--] [args...]
   php [options] -r <code> [--] [args...]
   php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
   php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
   php [options] -S <addr>:<port> [-t docroot] [router]
   php [options] -- [args...]
   php [options] -a

  -a               Run interactively
  -c <path>|<file> Look for php.ini file in this directory
  -n               No configuration (ini) files will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse and execute <file>.
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -r <code>        Run PHP <code> without using script tags <?..?>
  -B <begin_code>  Run PHP <begin_code> before processing input lines
  -R <code>        Run PHP <code> for every input line
  -F <file>        Parse and execute <file> for every input line
  -E <end_code>    Run PHP <end_code> after processing all input lines
  -H               Hide any passed arguments from external tools.
  -S <addr>:<port> Run with built-in web server.
  -t <docroot>     Specify document root <docroot> for built-in web server.
  -s               Output HTML syntax highlighted source.
  -v               Version number
  -w               Output source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.

  args...          Arguments passed to script. Use -- args when first argument
                   starts with - or script is read from stdin

  --ini            Show configuration file names

  --rf <name>      Show information about function <name>.
  --rc <name>      Show information about class <name>.
  --re <name>      Show information about extension <name>.
  --rz <name>      Show information about Zend extension <name>.
  --ri <name>      Show configuration for extension <name>.


  • 安装PHP编程规范工具php-cs-fixer,可以在GitHub上查看详细信息.
    1. 下载:wget http://cs.sensiolabs.org/download/php-cs-fixer-v2.phar -O php-cs-fixer
    2. 给予执行权限:sudo chmod a+x php-cs-fixer
    3. 把文件移动到自己喜欢的目录,我一般是放在/usr/local/bin下:sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer

  • 利用Git的钩子pre-commit达成commit前自动检测功能.
    这个钩子,顾名思意就是在git commit之前会触发,此钩子结合网上和朋友的写法,感谢他们.
    首先,点击查看这个文件,复制文件内容.
    然后,进入到自己的项目下git钩子目录:cd path/to/your/project/.git/hooks,复制pre-commit.sample文件并重命名:cp pre-commit.sample pre-commit,把文件内容替换为上一步复制的内容.
    最后,每次commit时就会先检测语法和规范是否正确,不正确会提示文件名和你需要规范代码格式的命令,简单测试如下图:.
    php-cs-fixer pre-commit

ubuntu apt update时提示缺少public key

问题原因:

apt包管理系统具有一组可信密钥,用于对每个包进行身份验证,确定每一个包是否可以信任的安装在系统上。有时,系统没有所有需要的密钥进行验证,所以会遇到这个问题。幸运的是,系统会列出缺失的每个密钥的信息,只需要把这个密码添加到apt密钥管理器中,以便它可以验证包就可以了.

  • 使用命令sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys xxxxxx
    xxxxxx 代表系统提示你缺少的密钥,我缺少的密钥是40976EAF437D05B5,使用后结果如下图,然后再sudo apt update就没有问题了.
    增加密钥

Ubuntu安装Chrome稳定版(google-chrome-stable)

Ubuntu安装Chrome稳定版(google-chrome-stable)

  • 推荐PPA方法,免翻墙
  1. wget -q -O - https://raw.githubusercontent.com/longhr/ubuntu1604hub/master/linux_signing_key.pub | sudo apt-key add

  2. sudo sh -c 'echo "deb [ arch=amd64 ] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list

  3. sudo apt-get update

  4. sudo apt-get install google-chrome-stable

  • 安装Google Chrome unstable 版本:
    sudo apt-get install google-chrome-beta
  • 安装Google Chrome beta 版本:
    sudo apt-get install google-chrome-unstable

fg和bg简述

Linux的bg和fg命令

我们都知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务。而不能让程序在前台后台之间切换。而 Linux 提供了 fg 和 bg 命令,让我们轻松调度正在运行的任务。

假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,挂起这个程序,然后可以看到系统提示(方括号中的是作业号):
[1]+ Stopped /root/bin/rsync.sh
然后我们可以把程序调度到后台执行:(bg 后面的数字为作业号)
#bg 1
[1]+ /root/bin/rsync.sh &
用 jobs 命令查看正在运行的任务:
#jobs
[1]+ Running /root/bin/rsync.sh &
如果想把它调回到前台运行,可以用
#fg 1
/root/bin/rsync.sh
这样,你在控制台上就只能等待这个任务完成了。

fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的
一,& 最经常被用到
这个用在一个命令的最后,可以把这个命令放到后台执行
二,ctrl + z
可以将一个正在前台执行的命令放到后台,并且暂停
三,jobs
查看当前有多少在后台运行的命令

四,fg
将后台中的命令调至前台继续运行
如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
五,bg
将一个在后台暂停的命令,变成继续执行
如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

快速操作Linux终端命令行的快捷键列表

快速操作Linux终端命令行的快捷键列表

操作组合键 说明 注释(自己猜想)
移动光标:
Ctrl + a 光标回到命令行首 a = ahead
Ctrl + e 光标回到命令行尾 e = end
Ctrl + b 光标向行首移动一个字符 b = backwards
Ctrl + f 光标向行尾移动一个字符 f = forwards
Alt + b 光标向行首移动一个单词
Alt + f 光标向行尾移动一个单词
删除命令:
Ctrl + w 向行首删除一个单词 w = word
Alt + d 向行尾删除一个单词 d = delete
Ctrl + k 删除光标处到行尾的字符
Ctrl + u 删除整个命令行文本字符
Ctrl + h 向行首删除一个字符 h = head
Ctrl + d 向行尾删除一个字符 d = delete
查找历史命令:
Ctrl + p 上一个使用的历史命令 p = previous
Ctrl + n 下一个使用的历史命令 n = next
Ctrl + r 快速检索历史命令 r = retrieve
其它:
Ctrl + i 相当于Tab键,命令、文件名自动补全
Ctrl + m 相当Enter键,执行命令
Ctrl + o 相当于Ctrl + m
Ctrl + t 交换光标所在字符和其前的字符
Ctrl + y 粘贴Ctrl+u,Ctrl+k,Ctrl+w删除的文本
Ctrl + s 使终端发呆,静止,可以使快速输出的终端屏幕停下来
Ctrl + q 退出Ctrl+s引起的发呆
Ctrl + z 使正在运行在终端的任务,运行于后台 可用fg恢复
Ctrl + c 中断终端中正在执行的任务
Ctrl + d 在空命令行的情况下可以退出终端 和上面的同命令但不同结果

ubuntu个人机使用到的一些软件

个人目前使用ubuntu,主要是用来进行web开发,在安装完ubuntu后,可以看到默认是有浏览器firefox,办公套件LiBreOffice,电邮客户端Thunderbird Mail,好了接下来说说我为了个人需要安装一些软件,仅供参考。
  • 通迅相关
  1. QQ International 这个不是官方发布的客户端,具体开发者我也不知道是谁,但我在使用ubuntu 13.x 的时候就使用的这个客户端,到目前使用的16.04LTS版都没有出现过问题,应该具备QQ2013的所有功能,办公使用足够了。如果有人需要这个deb包可以留言回复,我会发送文件到你邮箱并协助你安装。注意:需要先安装Wine(sudo apt install wine).

  2. Electronic WeChat 微信客户端,这个也不是腾讯官方发布的客户端,是一个开源项目。具体安装方法在github上面写的非常清楚,当然,如果你有不明白的地方,也可以回复我,我会尽我所能帮助你。


  • 输入法
  1. fcitx ubuntu有自带的ibus,不过我更喜欢使用fcitx,使用它的五笔拼音,打字嗖嗖的。

  • 浏览器
  1. google-chrome-stable安装文档

  2. chromium chromium是开发版,各种新功能都会有,但ubuntu的包却是很落后,刚开始我用的是chromium,后台更换为了chrome。


  • 音乐
  1. 厉害了word我的网易,网易云音乐有专门ubuntu对应版本的包,一般人我不告诉他,16.04LTS亲测能用,一直使用的网易云音乐

  • 虚拟机
  1. VirtualBox 不管是为了在Linux上使用Windows(Linuxer的痛)还是为了统一开发环境使用vagrant,都需要安装VirtualBox。

  • 数据库客户端
  1. emma 最开始我一直使用的emma,界面简洁,查看方便,能使用SQL语句,相对功能会少一些,且apt安装后有个小问题,不支持中文显示,解决方法

  2. navicat for mysql navicat对比其它Linux下Mysql客户端确实强大太多了,常用的各种功能自不在话下,还支持视图,函数,事件等等,下载解压后进入目录,运行脚本启动即可,但navicat也有个小问题,它不是免费的,只有15天试用期,不过你可以到目录.navicat下把user.reg删掉(cd ~/.navicat/),然后重启,你就又有15天的试用期了。


  • markdown编辑器
  1. Haroopad 界面美观,清晰,支持实时预览等很多功能,还有我最舒适的vim操作模式,我只使用了它的markdown语法编辑功能,目前只能导出HTML格式文件,下载后点击安装即可,此文就是通过这个软件编写的。

  2. Atom A hackable text editor for the 21st Century,Atom编辑器功能更强大,放到这个模块下面,其实是不合理的,因为它不仅仅是一个markdown编辑器,更是一个功能强大的文本编辑器,由于我使用的是(G)vim,所以只是把Atom当作写markdown文档的工具在使用,使用Atom的原因是家里电脑使用的是ArchLinux,ArchLinux上没有Haroopda的包,不得已找到了Atom,才发现它也非常强大,有超多第三方插件可供选择使用,除了自带插件,我搜索下载了支持vim的vim-mode,md文件转换为pdf的markdown-pdf,此次更新文件使用Atom修改。


  • 图片编辑工具
  1. GIMP Image Editor 是一个很强大的图片编辑工具,据说是Linux下的PhotoShop,当时我需要制作一个自己博客的logo,此网站的logo就是使用这个软件制作的,最后就找到了这个软件,目前使用了此软件很小一部分功能。

  2. gnome-screeshot 顺带说一下gnome自带的截图工具,我自己在系统设置,键盘,快捷方式里设置了它的快捷键ctrl + alt + a对应gnome-screenshot -a,此后截图就非常方便了。


  • 开发相关
  1. PHP7 Nginx mariaDB就不用说了.

  2. vim-gtk 我之前使用的vim-gnome编辑器,后来在每次关闭vim时,都会提示一个错误,在搜索这个问题时,看到Stack Overflow上别人推荐使用vim-gtk,使用下来一点不差.

  3. Composer PHP 的一个依赖管理工具,安装文档.


  • 科学上网
  1. Shadowsocks科学上网工具,结合浏览器插件SwitchyOmega或是终端代理工具ProxyChains.注意:直接apt install shadowsocks安装的可能不支持rc-md5,可先安装pip(sudo apt install python-pip),然后用pip安装(pip install shadowsocks).

  • 系统设置
  1. 使用monaco字体,参考github一篇文档,clone或下载文件,请仔细阅读README.md,最后找到其中为Ubuntu定制的安装脚本。运行命令./install-font-ubuntu.sh https://github.com/todylu/monaco.ttf/blob/master/monaco.ttf?raw=true,文档里提供的地址已失效。

  2. Unity Tweak Tool设置系统工具,可以在Ubuntu应用商店搜索安装,安装后可以使用第一步里安装好的monaco字体.


  • 其它相关问题
  1. 配置thunderbird,qq企业邮箱服务时要补全为exmali.qq.com

  2. 字的问题,一些字体显示不正确。
    /ect/honts/conf.d/64-language-selector-prefer.conf 有以下内容:

<alias>
      <family>sans-serif</family>
      <prefer>
         <family>Noto Sans CJK JP</family>
         <family>Noto Sans CJK SC</family>
         <family>Noto Sans CJK TC</family>
      </prefer>
   </alias>
   <alias>
      <family>monospace</family>
      <prefer>
         <family>Noto Sans Mono CJK JP</family>
         <family>Noto Sans Mono CJK SC</family>
         <family>Noto Sans Mono CJK TC</family>
      </prefer>
   </alias>

你要做的就是把 JP 换到最后面,然后重启电脑。

vsftpd安装和使用

刚才想安装一个博客相关的插件,结果提示需要使用到ftp进行文件的安装,才想到我服务器没有搭建ftp服务,于是有了这篇文章。这一篇是新写的,不是从以前的云笔记迁移过来的。

首先判断你服务器上是否安装了vsftpd

rmp -q vsftpd

如果提示你没有安装,则使用以下命令安装

yum -y install vsftpd

安装完成之后就启动vsftpd服务

service vsftpd start

到vsftpd的主配置文件里面, /etc/vsftpd/vsftpd.conf

把这个改为NO 默认是YES (改为NO 就是禁止匿名用户登录,不需要注释)

把ftp用户限制在自己的家目录,否则太危险了

默认是注释掉的,把#号去掉 然后重启vsftpd

创建ftp用户,创建的时候ftp用户家目录根据自己要求指定,比如我的是/usr/share/nginx/html目录。

useradd -s /sbin/nologin -d /usr/share/nginx/html  wanlianbo

(注:wanlianbo这个用户只能连接ftp无法登录系统,默认家目录是在/usr/share/nginx/html 文件夹下面)

给wanlianbo这个用户设置密码

passwd wanlianbo

给这个用户加上之前设定的家目录写的权限,不然无法上传文件

chmod o+w /usr/share/nginx/html

重启vsftpd服务,并且下次自动启动

service vsftpd restart

chkconfig vsftpd on

检查防火墙是否开启,开启需要关闭防火墙

service iptables status

service iptables stop

然后用软件来链接ftp测试一下

我使用的是firefox的一个插件FireFTP,可以在Extension里搜索安装,然后在自定义里把图标显示在菜单栏里。

点击打开后,创建一个连接目标,如下图:

把需要连接的目标机器ip和刚才创建的ftp用户名和密码填入,自己取一个连接名称点击OK即可。如下图:

选中刚才创建的连接,点击connect:

连接时,下面的控制台会输出信息,成功后,就能看到给用户设定的家目录下的文件了: