Fedora安装Chromium浏览器

/**2014年10月16日
* Fedora在社区连接里面添加了新的内容,所以本文实际上已经少了很多参考价值。
* 社区连接: http://fedoraproject.org/wiki/Chromium
* 里面有PepperFlash的RPM包。
**/

在Fedora的默认仓库里面是没有Chromium软件包的,这是因为早期版本的Chromium在Fedora工作得不是很好,于是就交给社区仓库维护,到现在虽然已经步入Stable版本但依然放在社区仓库里面。

添加社区仓库请参考如下链接。
http://fedoraproject.org/wiki/Chromium

执行命令。

# yum install chromium -y

这里有一个问题,那就是新版的Chrome/Chromium浏览器移除了NPAPI插件接口,也就是说Flash插件不能用了,好在有谷歌提供的PPAPI接口的Flash插件,到现在已经更新到了ver15,非常的新。

添加google-chrome软件源。

# vi /etc/yum.repos.d/google-chrome.repo
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1

添加之后无需安装,下载安装包即可。

$ yumdownloader google-chrome-stable

下载下来后提取压缩包里面的/opt/google/chrome/PepperFlash/libpepflashplayer.so到某一目录。你当前用户必须拥有目录的完全读写权限,否则插件无法加载(这点有点奇怪)。

然后编辑浏览器启动脚本。

# vi /usr/bin/chromium-browser

找到这行。

CHROMIUM_FLAGS="--enable-plugins --enable-extensions --enable-user-scripts --enable-printing --enable-sync --auto-ssl-client-auth"

在这行下面添加如下几行。

flashso="/path/libpepflashplayer.so" # 改成你提取的文件的路径

if [ -f $flashso ]
then
        flashversion=`strings $flashso|grep "^\[@LNX"|sed -e "s/\[@LNX //"|sed -e "s/,/./g"`
        CHROMIUM_FLAGS="$CHROMIUM_FLAGS --ppapi-flash-path=$flashso --ppapi-flash-version=$flashversion"
fi

启动浏览器即可看到效果。如果出现Flash插件频繁crash事件,请更新显卡驱动,这里不详细说了。

I卡下的VMware Player 3D加速

一开始我以为显卡驱动问题导致不能开启,就跑到这里下载了驱动。

https://01.org/linuxgraphics/

然后发现还是不行。一番搜索发现了这个玩意。

http://askubuntu.com/questions/181829/how-to-fix-3d-acceleration-for-vmware-workstation-9

确保虚拟机是关闭的,在对应的vmx文件最后加入如下一行

mks.gl.allowBlacklistedDrivers = "TRUE"

启动虚拟机即可。

原来Intel核芯显卡被VMware认为不稳定,默认是不开启3D加速特性的,需要自行添加语句打开。

京东应用云初体验

现在国内各种应用云太多了,什么新浪百度各种,相比之下京东的应用云规模小很多,而且暂时还没有收费业务。

可以创建最多20个免费应用,可以申请最多2G应用内存,不可谓不大方。

初次使用京东云,遇到一个问题,那就是貌似应用的写操作不是恒久的,而是临时的,诸位可以看到现在我的星空画廊页面的图片都是挂掉了的,就是这个原因,需要注意下。

Nginx的301转向配置

由于dot.tk无故提前回收了我的免费顶级域名,并且觉得米国的vps最近实在是被墙得厉害,决定把博客迁回国内。
仔细考量了以下,就选择现在这家免费的京东云了,东哥的东西应该还算不错。
这时候遇到个蛋疼的问题,域名需要备案才能解析过来。我agrhrhj378t66c
那就从米国vps301回来吧,,先问问百度怎么说。
搜了一圈,国内博主的做法大抵的是这样的。

server {
    listen       80;
    server_name  www.example.org  example.org;
    if ($http_host = example.org) {
        rewrite  (.*)  http://www.example.org$1;
    }
    ...
}

因为觉得这样写实在是毫无美感,于是去nginx.org搜了一圈,正确的做法应该是这样的:

server {
    listen       80;
    server_name  example.org;
    return       301 http://www.example.org$request_uri;
}

事实证明国内博主不靠谱,有事翻翻官网的做法比较好。

xfs与ext4的效能比较

环境是vbox虚拟机下面的Ubuntu14.04LTS。
测试工具是iozone,使用如下指令。

time iozone -i0 -i1 -g16M -n16M -aI

先来看xfs下面的测试结果。

KB  reclen   write rewrite    read    reread
16384       4   19876   21476     9138     9301
16384       8   37581   40067    14217    17411
16384      16   73332   83779    27556    32186
16384      32  105489  113865    40962    54091
16384      64  134065  135160    68299    83021
16384     128  146964  149977   110950   141755
16384     256  149715  137343   160200   191708
16384     512  168248  144506   189436   248133
16384    1024  132793  139397   207721   277869
16384    2048  132949  133511   273983   331338
16384    4096  123000  148125   323698   352565
16384    8192  156489  123381   375348   393959
16384   16384  159037  148396   391325   410133
iozone test complete.
real	0m15.917s
user	0m0.248s
sys	0m2.841s

再来看看ext4的。

KB  reclen   write rewrite    read    reread
16384       4   18430   18480     6998     6775                       
16384       8   33112   36112    11438    12414                       
16384      16   68939   72004    22202    24436                       
16384      32   98636  117864    39044    43731                       
16384      64  133008  143006    68180    57096                       
16384     128  153730  147185   100729   118309                       
16384     256  137746  145158   150317   167784                       
16384     512  120772  137821   205707   222197                       
16384    1024  144137  134827   202466   287423                       
16384    2048  152712  142612   266181   338671                       
16384    4096  144987  148278   319171   345078                       
16384    8192  161927  139666   395033   403686                       
16384   16384  145343  144820   457691   445409                       
iozone test complete.
real	0m18.967s
user	0m0.268s
sys	0m2.889s

反复测试的结果相同。xfs效能优于ext4。

ISCSI Target的配置·二

现在来实际配置ISCSI Target了。
这里提一下,上一篇博文我用的虚拟机装的是centos6,内核是2.6的,而LIO的ISCSI驱动直到3.1才进内核(并且红帽没有将这一特性移植到2.6内核),所以实际上是犯了个二。
今天的虚拟机里面装载的是ubuntu14.04b2。
进入targetcli后。

/> iscsi/ create 
Created target iqn.2003-01.org.linux-iscsi.bogon.x8664:sn.14cf36c1f17c.
Selected TPG Tag 1.
Successfully created TPG 1.
/> ls iscsi
o- iscsi ............................................................ [1 Target]
  o- iqn.2003-01.org.linux-iscsi.bogon.x8664:sn.14cf36c1f17c ........... [1 TPG]
    o- tpgt1 ......................................................... [enabled]
      o- acls ......................................................... [0 ACLs]
      o- luns ......................................................... [0 LUNs]
      o- portals ................................................... [0 Portals]

可以看到这样就弄好了一个TPG,真是不要太简单。
TPG下属有三个目录,先弄LUN。

/> cd iscsi/iqn.2003-01.org.linux-iscsi.bogon.x8664:sn.14cf36c1f17c/tpgt1/
/iscsi/iqn.20...6c1f17c/tpgt1> luns/ create storage_object=/backstores/iblock/disk1
Selected LUN 0.
Successfully created LUN 0.
/iscsi/iqn.20...6c1f17c/tpgt1> ls
o- tpgt1 ............................................................. [enabled]
  o- acls ............................................................. [0 ACLs]
  o- luns .............................................................. [1 LUN]
  | o- lun0 .......................................... [iblock/disk1 (/dev/sdb)]
  o- portals ....................................................... [0 Portals]

这样就创建了一个LUN,哎,简单得有点低潮。
接下来是Portal。也是依样画葫芦。

/iscsi/iqn.20...6c1f17c/tpgt1> portals/ create 192.168.1.104
Using default IP port 3260
Successfully created network portal 192.168.1.104:3260.
/iscsi/iqn.20...6c1f17c/tpgt1> ls
o- tpgt1 ............................................................. [enabled]
  o- acls ............................................................. [0 ACLs]
  o- luns .............................................................. [1 LUN]
  | o- lun0 .......................................... [iblock/disk1 (/dev/sdb)]
  o- portals ........................................................ [1 Portal]
    o- 192.168.1.104:3260 .................................. [OK, iser disabled]

到现在为止,只剩下最后一步设置了。

/iscsi/iqn.20...6c1f17c/tpgt1> acls/ create iqn.1994-05.com.redhat:5b22253996
Successfully created Node ACL for iqn.1994-05.com.redhat:5b22253996
Created mapped LUN 0.
/iscsi/iqn.20...6c1f17c/tpgt1> ls
o- tpgt1 ............................................................. [enabled]
  o- acls .............................................................. [1 ACL]
  | o- iqn.1994-05.com.redhat:5b22253996 ........................ [1 Mapped LUN]
  |   o- mapped_lun0 ............................................... [lun0 (rw)]
  o- luns .............................................................. [1 LUN]
  | o- lun0 .......................................... [iblock/disk1 (/dev/sdb)]
  o- portals ........................................................ [1 Portal]
    o- 192.168.1.104:3260 .................................. [OK, iser disabled]

这里是设置了一个ACL权限,对LUN0有RW权限。这里只设置了一个LUN所以其实没什么意义。
那一串数值不可以乱设,需要对应客户端/etc/iscsi/initiatorname.iscsi里面的数值。
接下来设置用户名,密码。

/iscsi/iqn.20...6c1f17c/tpgt1> acls/iqn.1994-05.com.redhat:5b22253996 set auth userid=test password=test
Parameter password is now 'test'.
Parameter userid is now 'test'.

这里的用户名,密码也要对应客户端/etc/iscsi/iscsid.conf里面的数值。
一切就绪。开另一台虚拟机。

# iscsiadm -m discovery -t st -p 192.168.1.104
正在启动 iscsid:                                          [确定]
192.168.1.104:3260,1 iqn.2003-01.org.linux-iscsi.bogon.x8664:sn.14cf36c1f17c

可以看到已经可以顺利找到刚配好的ISCSI Target了。

# iscsiadm -m node --login
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.bogon.x8664:sn.14cf36c1f17c, portal: 192.168.1.104,3260] (multiple)
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.bogon.x8664:sn.14cf36c1f17c, portal: 192.168.1.104,3260] successful.

好了,到此为止已经算是搞定了。

ISCSI Target的配置

LIO已经成为事实上的最好用的ISCSI Target,开发活跃,性能我还没尝试,据说卓越。
红帽即将在RHEL7上面使用LIO取代古老的tgtd。
依然在虚拟机上折腾,进入到LIO的配置工具targetcli。

# targetcli 
targetcli shell version 2.0rc1.fb16
Copyright 2011 by RisingTide Systems LLC and others.
For help on commands, type 'help'.

/> 

先创建一个backstore。

/> cd backstores/block 
/backstores/block> create name=disk1 dev=/dev/sdb
Created block storage object disk1 using /dev/sdb.
/backstores/block> ls
o- block .................................................... [1 Storage Object]
  o- disk1 .......................... [/dev/sdb (8.0GiB) write-thru deactivated]

只要两行命令,就添加了一个块设备作为backstore,回忆起读tgtd时候的头昏眼花简直让人泪流满面。
当然,不忘要保存一下,这里有点奇怪,必须要回到上级目录才能保存。

/backstores/block> cd /
/> saveconfig 
Configuration saved to /etc/target/saveconfig.json

配置文件竟然是用的json保存的,比较少见,但是无所谓,很可能根本没有机会打开这个配置文件。
这里必须要吐槽一下。
很多不明真相的群众说linux难用,是的,也许我能找到很多理由反驳,但我自己心里也清楚,里面有些东西是真的难用。
比如前两天尝试搭建tgtd+DRBD+HeartBeat高可用存储服务器,写配置写得要吐血。
写配置是基本素质没错,但并不是必须的。很多高度复杂的应用动不动就是几百上千行的配置文件,简直是折腾这些搞运维的脑子。
事实上,手动编辑配置文件是个具有危险性的行为,手抖,手滑,屡见不鲜。
当然,造成这种情况的不是Linux,是软件包开发者。
LinuxKernel提供了一个很好的交互式配置编辑器,很值得上层应用开发者借鉴。
但是很多开发者其实在应用还没准备好面世的时候就把它发布了出来。
我见过很多从源里面安装的二进制包默认不生成配置文件,需要完全手写。
这其中好一点给你在/usr/share/doc里面放一个模板,或者man里面,事实上谁知道它有模板在那?
恶劣点的啥都没(比如前几天折腾的ntop-ng)。
还有好多以源码发布的软件包根本不告诉你依赖,浪费你大把的时间。
这些玩意只能说是开发者折腾着自用的,不能说达到了发布标准。
吐槽这些,只是想感叹,好多开发着就是不愿意多写几行代码做个交互式的自动生成配置文件的界面。
下篇再弄其他,肚子饿了。

CLI程序科学上网

CLI程序中的大多数本身并不带有使用代理功能,但是有很多好东西可以为它们添加这个功能。

# yum install proxychains

同类的软件很多,我选择这个原因或许是因为它名字比较好听。
安装好后,需要对其进行配置。

# vim /etc/proxychains.conf
strict_chain
proxy_dns
[ProxyList]
socks5  127.0.0.1 7070

[ProxyList]下面可以配置多个代理,应用方式取决于上方的配置,这里不细说。
然后就可以进行科学上网了,前提是代理要上线。

# ping www.facebook.com
PING www.facebook.com (78.16.49.15) 56(84) bytes of data.
^C
--- www.facebook.com ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 2999ms

# proxychains ping www.facebook.com
ProxyChains-3.1 (http://proxychains.sf.net)
|DNS-request| www.facebook.com 
|S-chain|-<>-127.0.0.1:7070-<><>-4.2.2.2:53-<><>-OK
|DNS-response| www.facebook.com is 173.252.74.22
PING  (173.252.74.22) 56(84) bytes of data.
64 bytes from 173.252.74.22: icmp_seq=1 ttl=76 time=324 ms
64 bytes from 173.252.74.22: icmp_seq=2 ttl=76 time=325 ms
64 bytes from 173.252.74.22: icmp_seq=3 ttl=76 time=325 ms
64 bytes from 173.252.74.22: icmp_seq=4 ttl=76 time=323 ms
^C
---  ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 323.701/324.529/325.141/0.916 ms