阿里云服务器从Ubuntu 12.04升级到Ubuntu 14.04

阿里云的服务器是Ubuntu 12.04根据Canonical发布的支持路线图,可以看到2017年4月份之后就不再提供支持。因此很有升级导致Ubuntu 14.04的必要,更别说很多软件在Ubuntu 12.04上已经比较过时了。

Ubuntu LTS版本支持路线图如下图:
1_201204291858511OI60

升级的流程如下所示:(执行下面操作之前,请务必先备份重要数据,阿里云服务器推荐使用自带的系统快照功能,非常好用)

1.首先保证当前系统上的软件都是最新的


2.安装系统升级模块


1-do-release-upgrade

3.升级流程


允许系统在升级期间开放1022端口用来处理系统升级异常,当系统升级异常的时候,可以通过这个端口进行某些恢复操作。(实际上没太大作用,出问题就快照回滚了,更快速安全方便)
2-ssh-port-query-yes

输入y,点击回车(Enter)。

3-iptables-add-port-press-enter

点击回车(Enter),允许在iptable上面开放1022端口出来,这个端口在安装完成后会自动关闭,不需要过多关心。

4-rewrite-sources-list-yes

允许升级程序更新sources.list用来获取升级所需要的文件,输入y,点击回车(Enter)。

5-upgrade-confirm

询问是否确认系统升级,输入y,点击回车(Enter)。

6-disable-ssh-password-no

询问是否禁止root用户通过ssh访问系统,这个一定要选择No,否则升级完成后,我们无法远程登陆系统。

7-restart-services-without-asking-yes

询问在升级期间是否允许自动重启需要升级的服务,这个一定要选择Yes,否则会不断的询问你是不是确定重启服务,非常麻烦。

8-serurity-limits-conf-replace-enter

询问是否用新系统的文件替换原系统的/etc/security/limits.conf文件,直接回车(Enter),不允许替换,使用原系统的配置。

9-etc-default-rcS-enter

同上,直接回车(Enter)。

9-etc-default-rcS-enter

同上,直接回车(Enter)。

10-etc-sysctl-conf-enter

同上,直接回车(Enter)。

11-etc-vsftpd-conf-enter

同上,直接回车(Enter)。

12-etc-php5-fpm-php-fpm-conf-enter

同上,直接回车(Enter)。

13-etc-php5-fpm-php-ini-enter

询问是否替换文件,同上,直接回车(Enter),不允许替换。

14-etc-php5-cgi-php-ini-enter

同上,直接回车(Enter)。

15-etc-init-mounted-run-conf-enter

同上,直接回车(Enter)。

16-etc-apache2-mods-available-fcgid-conf-enter

同上,直接回车(Enter)。

17-etc-sv-git-daemon-run-enter

同上,直接回车(Enter)。

18-etc-default-tomcat7-enter

同上,直接回车(Enter)。

19-upgrade-phpmyadmin-enter

询问是否升级数据库,此处选择Yes,回车(Enter)。

20-upgrade-phpmyadmin-password-enter

输入数据库的密码,完成后点击回车(Enter)。

21-remove-obsolete-packages-yes

询问是否删除不再使用的安装包,输入y后点击回车(Enter)。

22-restart-required-yes

升级完成,询问是否重启系统,输入y后点击回车(Enter)。系统会重启,远程连接会断开,需要稍等几分钟后重新连接服务器。

3.恢复被修改后的系统配置信息


安装Apache2PHP扩展libapache2-mod-php5,Ubuntu 12.04版本的库,在升级的过程中被丢弃了,需要重新手动安装。

23-after-restart-install-libapache2-mod-php5

询问是否替换已经存在的PHP配置文件,直接点击回车,不允许替换。

24-after-restart-install-libapache2-mod-php5-php-ini-enter

修改Apache2的配置文件

25-after-restart-vim-apache2-conf

原有Apache 2.2配置为:

发现升级后变更为:

导致PHP无法正常工作,因此需要修改回来。

修改前:
26-after-restart-vim-apache2-conf-IncludeOptional

修改后:27-after-restart-vim-apache2-conf-IncludeOptional-modify-complete

Apache 2.4修改了默认目录位置(这导致2.2版本设置的禁止目录流量功能失效),并且默认开启了目录浏览功能,会导致潜在的安全问题,需要手工关闭.

修改前:29-after-restart-apache2-disable-indexs

修改后:30-after-restart-apache2-disable-indexs-modify

重启Apache2

28-after-restart-apache2-restart

到此,整个系统升级完成,所有功能恢复正常。

从升级的效果来看,服务器的响应明显变快,非常值得升级!

Putty通过SSH无密码登陆Ubuntu12.04

(1)生成公钥/私钥对

注意"-P"后面输入的内容为空的时候代表不需要输入密码。
完成后会在当前用户目录下的.ssh目录下生成id_rsa,id_rsa.pub这两个文件。
(2)拷贝证书到本地机器
.ssh/id_rsa.pub拷贝下来,然后重命名成id_rsa.pub.git也就是Key加上用户名的命名方式,这样在Linux或者执行命令行的时候SSH可以自动进行用户名,密码的对应。
(3)对于Linux复制的id_rsa.pub.git添加到.ssh/authorzied_keys文件里

authorized_keys的权限要是600
(4)对于Windows,则需要把id_rsa这个文件拷贝下来,然后使用TortoiseGit自带的Puttygen转换为被TortoiseGit支持的.ppk文件。

点击"Conversions"菜单中的"Import key"选项,然后导入我们下载到的id_rsa

PuttyKeyGeneratorImportKey

导入后,

SavePPK

由于Puttygen的BUG,导致如果直接点击"Save private key",会导致生产的Public key是不正确的,因此,需要先点击"Save public key",保存为文件后,无视这个文件即可。然后接下来点击"Save private key"按钮,保存为.ppk文件,这个PPK文件才是我们需要的。

(5)修改SSHD的配置文件/etc/ssh/sshd_config
找到

这句,然后去掉注释。然后重启SSH服务

(6)修改登录认证文件,把认证信息导入到需要认证的用户目录下的.ssh/authorized_keys文件中。

以上面添加的用户git为例子,通过命令:

可以看到输出如下信息:

从而找到用户git的工作目录在/share目录下面.

因此执行如下命令:

接下来,需要修改authorized_keys的所有者为用户git,否则git无法通过这个文件进行认证。

而对于管理员root而言,我们不需要执行拷贝操作,只需要修改一下SSH的配置文件,并且执行如下命令即可:

(7)Putty设置使用PPK文件进行登陆认证

左侧栏中选择Connection->SSH->Auth:

LoginPPK
然后点击左侧栏中的Session,点击Save保存设置,然后点击Open连接服务器。
SaveSession

(8)登陆时候,还是需要输入用户名的,因为Ubuntu服务器需要根据用户名来核查证书。输入用户名后,直接回车,会发现不需要再输入密码,就直接登陆了。

putty-7

Ubuntu 12.04安装Jetty

1. 如果没有装JDK的话,安装OpenJDK

2. 安装Jetty,Ubuntu软件源里的是Jetty6

3. 配置Jetty,修改Jetty默认配置文件

然后把

改为

再设置JDK目录

4. 启动Jetty

5. 测试,在浏览器地址栏中输入

http://localhost:8080

Jetty的端口在/etc/default/jetty中也可以设置

参考链接 Ubuntu 12.04安装Jetty

Ubuntu中shell下root用户切换其他用户运行程序

工作中,一些程序,需要随机启动,但是不是以root用户运行,于是需要在rc.local中通过shell,从root用户切换到其他用户运行程序,命令如下:

实例


/etc/rc.localexit 0之前加入如下内容:

参考链接


shell下root用户切换其他用户运行程序

sort+awk+uniq 统计文件中出现次数最多的前10个单词

使用linux命令或者shell实现:文件words存放英文单词,格式为每行一个英文单词(单词可以重复),统计这个文件中出现次数最多的前10个单词。

主要考察对sort,uniq命令的使用,相关解释如下,命令及参数的详细说明请自行通过man查看,简单介绍下以上指令各部分的功能:
sort:  对单词进行排序
uniq -c: 显示唯一的行,并在每行行首加上本行在文件中出现的次数
sort -k1,1nr: 按照第一个字段,数值排序,且为逆序
head -10: 取前10行数据

参考链接


sort +awk+uniq 统计文件中出现次数最多的前10个单词

Ubuntu 15.04/18.04使用bashdb调试bash脚本

bash调试器bashdb,这是一个类似于GDB的调试工具,可以完成对shell脚本的断点设置,单步执行,变量观察等许多功能。

安装bashdb


macOS下使用Homebrew安装,如下:

有两种启动调试的方式

1.直接在bash中传递参数的方式启动,适合需要读取$0参数为shell脚本的名字的采用这种方式启动。

2.使用bashdb直接启动脚本,适用于一般的脚本。

上面的操作对于ubuntu 18.04之前的版本都是可以的,但是目前的ubuntu 18.04是没有这个包的,只能手工编译安装,参考如下命令:

常用的调试命令


  1. 列出代码和查询代码类:
    l 列出当前行以下的10行
    - 列出正在执行的代码行的前面10行
    . 回到正在执行的代码行
    w 列出正在执行的代码行前后的代码
    /pat/ 向后搜索pat
  2. Debug控制类:
    h 帮助
    help 命令 得到命令的具体信息
    q 退出bashdb
    x 算数表达式 计算算数表达式的值,并显示出来
    !!空格Shell命令 参数 执行shell命令
    使用bashdb进行debug的常用命令(cont.)
  3. 控制脚本执行类:
    n 执行下一条语句,遇到函数,不进入函数里面执行,将函数当作黑盒
    s n 单步执行n次,遇到函数进入函数里面
    b 行号n 在行号n处设置断点
    d 行号n 撤销行号n处的断点
    c 行号n 一直执行到行号n处
    R 重新启动
    Finish 执行到程序最后
    cond n expr 条件断点

参考链接


Ubuntu 15.10,12.04 安装Apache Solr 4.10.4

Apache Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。Apache Solr是一个独立的企业级搜索应用服务器,目前很多企业使用solr开源服务。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提 供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。

Apache Solr目前可以与Apache Nutch 2.3.1整合的最高版本是4.10.4,Ubuntu 15.10 ,12.04上安装的步骤如下:

1.安装Java,并设置JAVA_HOME


建议在系统的环境变量中增加"JAVA_HOME"环境变量,也可以写在~/bashrc里面。

文件尾部增加

然后,重启机器。

2.下载Apache Solr 4.10.4


3.解压缩到指定目录,并建立文件链接


在系统的环境变量中增加"SOLR_HOME"环境变量,也可以写在 ~/bashrc里面。

在文件末尾追加

然后,重启机器。

4.启动Apache Solr并设置端口为9876


5.在浏览器中打开网页,观察是否启动成功


在浏览器中访问http://localhost:9876/solr/

出现如下界面,说明配置成功。

Apache_Solr_4_10_4

参考链接


Nutch2.3+Hbase0.94+Solr4.10.3单机集成配置安装

Ubuntu 15.10,12.04 单机安装并配置Apache HBase

Apache HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

1.安装Java,并设置JAVA_HOME


建议在系统的环境变量中增加"JAVA_HOME"环境变量,也可以写在~/bashrc里面。

文件尾部增加

然后,重启机器。

2.下载并配置Apache HBase


在系统的环境变量中增加"HBASE_HOME"环境变量,也可以写在~/bashrc里面。

文件尾部增加

然后,重启机器。

3.编辑conf/hbase-site.xml配置数据存储目录


添加如下内容。其实这里也可以不做修改,如果不做修改,就会把数据存放到tmp临时目录中,重启就没有数据。如果做简单的测试就不用麻烦去配置文件。

在其中的configuration中增加对于存储数据目录的配置:

4.启动以及关闭Apache HBase


启动

关闭

注意,如果执行sudo的话,一定要加-E参数,否则会导致提示找不到JAVA_HOME.原因是,sudo出于安全原因,默认禁止环境变量输出到子进程中。

5.参考链接


Installing Apache HBase on Ubuntu for Standalone Mode
安装nutch2+Hbase+Slor4

Ubuntu 15.10,12.04 安装Apache Nutch 2.3.1 并整合Apache Solr 4.10.4

Apache Nutch是一个用Java编写的开源网络爬虫。通过它,我们就能够自动地找到网页中的超链接,从而极大地减轻了维护工作的负担,例如检查那些已经断开了的链接,或是对所有已经访问过的网页创建一个副本以便用于搜索。接下来就是Apache Solr所要做的。Apache Solr是一个开源的全文搜索框架,通过Apache Solr我们能够搜索Apache Nutch已经访问过的网页。

Apache Nutch对于Apache Solr已经支持得很好,这大大简化了Apache Nutch与Apache Solr的整合。这也消除了过去依赖于Apache Tomcat来运行老的Nutch网络应用以及依赖于Apache Lucene来进行索引的麻烦。

目前官方2.x只提供了源码下载,不再提供编译发布版本,需要用户自己去编译。

请先参考Ubuntu 15.10,12.04 安装Apache Solr 4.10.4 安装Apache Solr。(注意,目前的Apache Nutch只能支持到Apache Solr 4.10.4版本,因此不能安装高于这个版本的Apache Solr,实验后确定目前不能使用高于这个版本的Apache Solr

然后参考Ubuntu 15.10,12.04 单机安装并配置Apache HBase安装HBase。

之后再进行后续的操作。

1.安装Java,并设置JAVA_HOME


建议在系统的环境变量中增加"JAVA_HOME"环境变量,也可以写在~/bashrc里面。

文件尾部增加

然后,重启机器。

2.下载并安装Nutch


3.编译Nutch


安装ant

配置Nutch需要使用的数据库,由于我们会与Apache Solr整合,因此需要配置Nutch编译的时候打开Apache Solr的支持。(目前测试情况来看,是无法配置成功使用org.apache.gora.solr.store.SolrStore作为存储后端的,只能是使用HBase作为存储后端)。

1.修改ivy/ivy.xml,设置可以使用的后端存储模块,可以多选,至于最后使用哪个存储模块,需要在conf/nutch-site.xml中指明。

找到如下信息:

找到如下:

去掉注释。

同时为了修复gora-hbase 0.6.1的BUG,需要在刚刚去掉注释的代码下面,增加如下一句:

2.配置conf/nutch-site.xml,指明需要的后端存储模块。

configuration字段中指明需要的后端存储类型(此处我们需要整合Solr,因此指定org.apache.gora.solr.store.SolrStore,具体配置的字符串,参考上面的conf/gora.properties中的gora.datastore.default字段),同时需要指明"http.agent.name"字段,否则运行时候会报错,没有设置"http.agent.name"。设置"plugin.includes"字段,否则在最后建立Solr索引的时候会报告"No IndexWriters activated - check your configuration"。

3.修改conf/gora.properties,打开需要的后端存储,单机情况下,一般默认即可,Apache Solr的监听端口,要根据自己机器的监听端口设置。

找到

最后一行增加:

4.修改ivy中配置的maven仓库地址,配置ivy/ivysettings.xml

找到如下代码:

把默认的maven中央库地址 http://repo1.maven.org/maven2/  替换成国内OSC提供的镜像:http://maven.oschina.net/content/groups/public/

编译Nutch,并下载依赖的Jar包

4.增加Nutch安装目录的环境变量${NUTCH_RUNTIME_HOME}


文件尾部增加

然后,重启机器。

5.检验Nutch安装


  • 运行"${NUTCH_RUNTIME_HOME}/bin/nutch"。如果您能看见下列内容说明您的安装是正确的:

一些解决问题的提示:

  • 如果您看见"Permission denied"那么请运行下列命令:

  • 如果您看见JAVA_HOME没有设置那么请设置JAVA_HOME环境变量。在Mac上,您可以运行下述命令或者把它添加到~/.bashrc里面去:

6.配置Apache Solr


1.备份需要修改的配置文件

2.复制Nutch运行目录下的schema.xml到我们设置的目录下。

3.重启Apache Solr

7.抓取您的第一个网站


  • 添加要抓取的URL(以自己的网站为例)

    seed.txt中添加需要抓取的地址:http://www.mobibrw.com/
  • 启动HBase

  • 使用如下命令进行网页的抓取(以百度为例)

    • ~/urls 是存放了种子url,也就是要抓取的网站地址的目录
    • StoreCrawl 是存放数据的根目录(在Nutch 2.x中,则表示crawlId,这会在HBase中创建一张以crawlId为前缀的表,例如StoreCrawl_Webpage
    • "http://localhost:9876/solr/collection1" Apache Solr的访问链接,此处注意,网页访问的链接是"http://localhost:9876/solr/#/collection1",但是Nutch上行数据的链接不可以有"#",否则会报告"Expected mime type application/octet-stream but got text/html"。
    • 2,numberOfRounds,迭代的次数,表明从根网页开始那应该被抓取的链接深度。

注意,如果执行sudo的话,一定要加-E参数,否则会导致提示找不到JAVA_HOME。原因是sudo出于安全原因,默认禁止环境变量输出到子进程中。

执行完成后,不应该出现任何的失败提示才对。

如果执行出错的话,详细的错误信息可以在${NUTCH_RUNTIME_HOME}/logs/hadoop.log中看到。

索引完成后,在Apache Solr中查询的结果如下图所示:

SolrNutch

参考链接


Ubuntu 15.10,12.04 安装Apache Solr 5.4.1

Apache Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。Apache Solr是一个独立的企业级搜索应用服务器,目前很多企业使用solr开源服务。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提 供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。

Apache Solr最新的版本是5.4.1,Ubuntu 15.10 ,12.04上安装的步骤如下:

1.下载Apache Solr 5.4.1

 

2.解压缩服务安装脚本

3.执行安装脚本

4.检查服务是否正确安装

如果正确安装,会出现如下的提示信息:

4.创建Solr实例,可以创建多个实例,在这里我们只创建一个

请注意实例的结果输出:

这意味着,访问实例的URL链接为http://localhost:8983/solr,而不是默认的8080端口,一般如果8080端口被Tomcat7占据的情况下,Apache Solr作为一个服务独立安装的时候,会随机选择一个没有占有的端口,注意这个情况。

ApacheSolr

4.配置刚刚创建的Solr实例

ApacheSolrCoreSeletor

如上图,选择"Core Selector"

ApacheSolrCoreSeletorDocuments

可以这这个页面中"Document Type"下拉框用来选择提交,文件,XML,JSON等等,"Submit Document"按钮,可以提交需要分析的内容。

参考链接:
How To Install Apache Solr In Ubuntu