最近迷上了Docker,偷得两日闲想把Docker与公司的开发流程结合。下午手贱把试验的Ubuntu 14.04的版本升级至16.04LTS,更贱的顺手把公司的文件服务器也同时进行升级。

[highlight dark=”no”]sudo do-release-upgrade -d[/highlight]

升级完成后提示需要重启,于是当然的

[highlight dark=”no”]sudo reboot now[/highlight]

结果印证了什么叫No Zuo No Die, 系统报了个错就再也连不上了。

[highlight dark=”no”]Failed to start reboot.target: Failed to setup environment correctly
See system logs and ‘systemctl status reboot.target’ for details.[/highlight]

u1

这下傻眼了,还有公司的文件服务器也是同样的问题。这SSH连接不上,只好乖乖地起个VMware vSphere Client连到公司的ESX服务器上去查怎么回事。发现原来的网卡eth0不见了,取之是一个名为ens32的网卡,想手工启动这个网卡,但系统报没有权限,用root用户也不行,看来此路不通。把虚拟机的网卡删除再重新安装,重启除了网卡名字变了外,还是然并卵。

u2

傻眼了,肠子都悔青了。自己做的坏事,怎么着也只能自己解决了。查了各种资料、各种折腾,最后总算搞明白是因为ubuntu 15版本的-udev升级,导致出现这个网卡丢失的问题。多种尝试后用以下方法解决。

1.先取得网卡的MAC地址

[highlight dark=”no”]ip link[/highlight]

u3

由上图可知00:0c:20…..是俺丢掉的宝贝网卡的地址,把此地址记下来。

2. 创建/etc/udev/rules.d/10-network.rules 文件,增加网卡信息。

[highlight dark=”no”]sudo vim  /etc/udev/rules.d/10-network.rules [/highlight]

在文件中增加以下一行,保存并退出。

[highlight dark=”no”]SUBSYSTEM==”net”, ACTION==”add”, ATTR{address}==”00:0c:29:de:d9:c1″, NAME=”eth0″[/highlight]

3.重启系统,可以发现丢失的网卡又回来了。

u4

NND,吓出一身冷汗。:)

Note: If no DNS resolution after upgraded, solve the problem as following code:

[highlight dark=”no”]sudo rm /etc/resolv.conf
sudo ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf
sudo resolvconf -u[/highlight]

俺的解法是简单粗暴直接,删掉了resolv.conf后直接创建一个新的:)。

 

家里的无线路由已经用了接近10年,加上随着设备的日渐增多,每次访问Google都要翻墙实在是一件麻烦的事情,于是动了自己写个DD-WRT的念头路由器。刚好公司有个TP-LINK的TL-WRD3310旧路由,刚好利用周五下午无心工作的时间做做试验。

上网找了一下,没能找到WRD3310的rom(严重鄙视)。继续Google,得知WRD3310在国外的对应型号是WRD3600,在DD-WRT官网可以找到WRD3600的rom,所以打着用这个rom刷到WRD3310的念头。翻墙下载了最新的Beta rom,连上WRD3310,选择刚下载的rom升级,结果报了一个“上传文件版本与机型不符”的错误,升级自动退出。

上传文件的版本与机型不符

一时卡壳了,但如果这样就认输不弄了,怎么能称爱折腾呢?重新上TP-Link的中国官网,下载了官方固件,用WinHEX打开固件文件,与DD-WRT的固件比较,终于找出通过修改固件写入的办法。

首先,把DD-WRT固件文件开头Offset=0x00000040处把机型从3600改为3100.

3

 

WRD3310

再把Offset=0x0000004C开始的16个字节暂时改为DC D7 3A A5 C3 95 98 FB DD F9 E7 F4 0E AE 47 38,然后保存。

MD5

用Hash计算出修改后固件文件的MD5,并复制下来。

Hash

再次用WinHex打开修改后的固件文件,用上面算出来的MD5替换掉刚才修改过的从Offset=0x0000004C开始的16个字节并保存。

更新MD5

再次通过网页连接WRD3310,用修改后的固件升级,这次顺利升级成功。

Update

升级成功后第一次登录设置路由器的用户名与密码,可以玩DD-WRT的各项设置了,把Shadowshocks写入,就可以实现自动翻墙功能了。同时,设备型号也变成了WRD3600了。

DD-WRT

 

[highlight dark=”no”]PS: 别说我没提醒你,这个方法适用于所有型号的无线路由写入固件:)[/highlight]

1.安装配置LAMP Server

  • 进入root用户模式

[highlight dark=”no”] sudo –s –H [/highlight]

  • 安装MySql 

[highlight dark=”no”]    apt-get install mysql-server mysql-client [/highlight]

  • 安装Apache

[highlight dark=”no”]apt-get install apache2 [/highlight]

  • 安装PHP支持 

[highlight dark=”no”]  apt-get install php5 libapache2-mod-php5 [/highlight]

  • 创建info.php文件,确认PHP文件能够正常解析 

[highlight dark=”no”]  vi /var/www/info.php [/highlight]

           <?php

               phpinfo();

            ?>   

[highlight dark=”no”]/etc/init.d/apache2 restart [/highlight]

http://localhost/info.php

2. 安装并配置Wordpress

  • 安装Wordpress 

[highlight dark=”no”]apt-get install wordpress [/highlight]

  • 创建web要目录与wordpress的软链接 

[highlight dark=”no”] ln –s /usr/share/wordpress  /var/www [/highlight]

  • 解压并安装wordpress数据库 

[highlight dark=”no”]gzip -d /usr/share/doc/wordpress/examples/setup-mysql.gz[/highlight]

[highlight dark=”no”]bash /usr/share/doc/wordpress/examples/setup-mysql -n wordpress localhost [/highlight]

  • 重启web服务,确认wordpress可以访问 

[highlight dark=”no”] /etc/init.d/apache2 restart[/highlight]

访问 http://localhost/wordpress可进行wordpress的设置.

3. 注意事项

  • 如果要使用WordPress的自动更新功能,必须把WordPress安装文件夹的所有权改为www-data用户 

[highlight dark=”no”]chown -R www-data /usr/share/wordpress [/highlight]

  • 若是要使用IP地址访问WordPress,必须做以下设置 

a).更改数据库中wp_options表下的siteurl内容,将其更改为宿主机的ip。如http://192.168.2.16/wordpress

b).更改数据库中wp_options表下的home内容(这个大概在第二页),同样改为http://192.168.2.16/wordpress

c).连接配置文件

[highlight dark=”no”] ln -s /etc/wordpress/config-localhost.php /etc/wordpress/config-default.php [/highlight]

  • 如果模板或插件不能上传,需要改变wordpress配置文件WP_CONTENT_DIR指向到实际目录 

[highlight dark=”no”]vi /etc/wordpress/config-localhost.php [/highlight]

define(‘WP_CONTENT_DIR’, ‘/var/www/wordpress/wp-content’);

 

习惯了用yum来安装东西,试了下这篇文章提到的做法workable,再做一次搬运工。
原文出处: http://www.rackspace.com/knowledge_center/article/installing-rhel-epel-repo-on-centos-5x-or-6x

  • Authored by: Rackspace Support

How to install RHEL EPEL repository on Centos 5.x or 6.x

The following article will describe how to configure a CentOS 5.x-based or Centos 6.x-based system to use Fedora Epel repos and third party remi package repos. These package repositories are not officially supported by CentOS, but they provide much more current versions of popular applications like PHP or MYSQL.

Install the extra repositories

The first step requires downloading some RPM files that contain the additional YUM repository definitions. The instructions below point to the 64-bit versions that work with our Cloud Server instances.

Centos 5.x

wget http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
sudo rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

Centos 6.x

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm

Once installed you should see some additional repo definitions under the /etc/yum.repos.d directory.

$ ls -1 /etc/yum.repos.d/epel* /etc/yum.repos.d/remi.repo
/etc/yum.repos.d/epel.repo
/etc/yum.repos.d/epel-testing.repo
/etc/yum.repos.d/remi.repo

Enable the remi repository

The remi repository provides a variety of up-to-date packages that are useful or are a requirement for many popular web-based services. That means it generally is not a bad idea to enable the remi repositories by default.
First, open the /etc/yum.repos.d/remi.repo repository file using a text editor of your choice:

sudo vim /etc/yum.repos.d/remi.repo

Edit the [remi] portion of the file so that the enabled option is set to 1. This will enable the remi repository.

name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority

You will now have a larger array of yum repositories from which to install.

    为了测试Oracle的虚拟化解决方案,随便装了一台新的Linux虚拟,安装时报swap空间不够,通过以下步骤增加swap空间:

    修改/etc/fstab文件,增加如下一行:

    /opt/swap              swap                    swap    defaults        0 0

    使系统重启后swap设置生效。

    客户系统上线前,发现在生产环境的Oracle Enterprise Linux 6.1上的UCM 11gR5打开文件时,一直显示索引错误,信息“Text conversion of  the file …… failed. Content has been indexed with Info only. Resubmit should only be performed if the problem has been resolved.”如下图所示:

    打开indexer的trace,点击重新提交后,得到以下信息,初步判断是因为textexport找不到必要的库文件导致。

    >indexer/7 01.13 14:10:03.450   index update work InputFilePath is:   indexer/7  01.13 14:10:03.450   index update work OutputFilePath is: >indexer/7    01.13 14:10:03.450   index update work Sending document to conversion >(internal)/7  01.13 14:10:03.496  TextExport #7531#8FDB#7A0B ‘TextExport’ #610F#5916#4E2D#6B62#3002 intradoc.common.ServiceException: !csErrorReturnedByProcess,TextExport!$/u01/app/oracle/Middleware/Oracle_ECM1/ucm/idc/components/ContentAccess-linux/linux/lib/contentaccess/textexport: error while loading shared libraries: libz.  (internal)/7   01.13 14:10:03.496   TextExport         at intradoc.taskmanager.TaskLauncher.launchExe(TaskLauncher.java:381)  (internal)/7  01.13 14:10:03.496  TextExport         at intradoc.taskmanager.TaskMonitor$1.run(TaskMonitor.java:116)  (internal)/7  01.13 14:10:03.496   TextExport         at java.lang.Thread.run(Thread.java:662)

    没有仔细看trace信息内容,开始在网上和oracle support网站找text conversion相关的信息,相关的解决方案主要是确认textexport的执行权限或者是设置LD_LIBRARY_PATH和ContentAccessExtraLibDir(在intradoc.cfg文件)几种方式,但是试过这几种方式都不奏效,如此试了几次,也只好放弃。

    再一次回到正常分析的路子上来,从trace信息中可以看出是找到到共享库libz.,尝试在/usr/lib和/usr/lib64找libz.so,有64位的文件,但是没有32位的文件。难道象很多程序一样,UCM也是用32位的libz.so来执行text conversion的命令,google了一把,发现libz.so是zlib包里,用yum install zlib.i686实现相关包的安装,确认libz.so存在于相关的文件夹下,重新启动Content Server,再点击重新提交,问题解决。

    Repository Manager重新提交所有文档,再重建索引,完成已检入文件的全文索引支持。

    1.下载Oracle OTN下载最新的jRockit安装包;
    2. 运行“chmod +x jrockit-jdk1.6.0_29-R28.2.0-4.1.0-linux-x64.bin”,使安装文件有执行权限;
    3.执行安装,“./jrockit-jdk1.6.0_29-R28.2.0-4.1.0-linux-x64.bin”,一路Next,选择安装路径为“/usr/lib/jvm/jrockit-jdk1.6.0_29”,完成安装。
    4.使用alternatives配置使用的JDK;

      alternatives –install /usr/bin/java java /usr/lib/jvm/jrockit-jdk1.6.0_29/bin/java 1000
     alternatives –display java (看当前使用何版本JDK)
     alternatives –config java  (选择JDK)

    java -version看当前使用的java版本。

    在虚拟机上安装Oracle数据库11gR2,当运行到“Link binaries”环节时出现“Error in invoking target ‘mkldflags ntcontab.o nnfge.o’ of makefile”错误,折腾了老半天,发现是缺少gcc运行库引起。

    安装时按照Oracle Database 11g Release 2 (11.2) Installation On Oracle Linux 6 一文介绍的步骤进行,但死活都出错。到Metalink查答案,确认是gcc运行环境引起的,只好一个个包对过去。发现在是文章中是以着安装“rpm -Uvh gcc-4*x86_64*”,而系统上的包名应该是“gcc.x86_64 0:4.4.5-6.el6”,安装该包后重试,安装程序正常运行。

    教训:如果出错,运行“gcc –version ”,会显示当前的gcc版本信息,运行“rpm -qa –queryformat “%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n” | grep glibc-devel
    ”结果显示如下:

    glibc-devel-2.12-1.25.el6 (x86_64)
    glibc-devel-2.12-1.25.el6 (i686)

    在OEL 6创建Oracle WebCenter Content(ECM)域时,报”Domain Creation Failed error.“的错误。

    Domain Creation Failed error.
    Reason: null
    Exception: Traceback (innermost last):
    File "", Line 17, in ?
    TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

    确认config.sh是从ECM的home目录下运行,试了几次还是报同样的错。 反复查了几次原因,发现是因为OEL自带的Open JDK会使Weblogic域不能启动,重新安装了JRockit,但是Weblogic的环境变量里没有把JAVA_HOME路径更新过来,导致域创建出错。


    更新“ Middleware Home/wlserver_10.3/common/bin/ commEnv.sh”,设置JAVA_HOME为JRockit的安装路径,重新运行config.sh,成功建设ECM的域。

    客户的服务器估计是因为VMware虚拟机的原因,无论怎么样都没法通过VNC连接。要在机器使用图形界面安装Oracle软件,只能退求其次使用XManager连接了。操作步骤如下:
    1.改变系统的runlevel到5.
    打开/etc/inittab,确认初始的runlevel为5

    id:5:initdefault:

    2.打开XDMCP
    【使用GDM】:
    打开”/etc/gdm/custom.conf“,把[xcmcp]节设置为1

    [xdmcp]

    Enable=1

    【使用KDM】:
    打开”/usr/share/config/kdm/Xaccess“文件,下除下列行前面的”#“号:

    #* #any host can get a login window ==>
    * #any host can get a login window

     打开”/usr/share/config/kdm/kdmrc“文件,把[xdmcp]节设置为true

     [xdmcp]
    Enable=true

    3.确认防火墙的UDP端口177打开;
    4.重启服务器并使用Xmanager进行连接。