在ubuntu 14.04 server使用pure-ftpd

install

 apt-get install pure-ftpd

用户

groupadd ftpgroup
useradd -g ftpgroup -d /dev/null -s /etc ftpuser
mkdir /home/ftpusers
mkdir /home/ftpusers/ftp
pure-pw useradd ftp -u ftpuser -d /home/ftpusers/ftp
pure-pw mkdb ## 执行过pure-pw useradd等用户操作之后要进行更新数据库
ln -s /etc/pure-ftpd/pureftpd.passwd /etc/pureftpd.passwd
ln -s /etc/pure-ftpd/pureftpd.pdb /etc/pureftpd.pdb
ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/PureDB
chown -hR ftpuser:ftpgroup /home/ftpusers/

新增readonly账户

useradd -g ftpgroup -d /dev/null -s /etc ftpuser_readonly
pure-pw useradd ftp_guest -u ftpuser_readonly -d /home/ftpusers/ftp
pure-pw mkdb

参考

  1. https://help.ubuntu.com/community/PureFTP
  2. http://download.pureftpd.org/pub/pure-ftpd/doc/README.Virtual-Users
  3. http://marc.info/?l=pureftpd-list&m=128345058000347

在ubuntu 14.04 server使用KVM

KVM本身可以很复杂,也可以很简单。如果要求没有那么多,像我这样,能顺利安装虚拟机,之后启动用,对性能无要求,然后就可以看看下面了。

现在主流的CPU都支持了虚拟化了,记得在BIOS设置那里打开CPU虚拟化,不然虚拟机会慢半拍的,卡顿。

下面无特殊说明的话,全部命令使用root账户运行。

安装需要的包

apt-get install qemu-kvm libvirt-bin bridge-utils virtinst

编辑/etc/libvirt/qemu.conf,然后将user和group设为root,重启libvirt服务。不然virt-install执行会报权限有问题。

配置网桥

我想把虚拟机暴露到局域网供其他机子访问,而默认的是NAT方式,所以要改下。

vim  /etc/network/interfaces

内容大致如下

auto lo eth0 br0
iface lo inet loopback
iface br0 inet dhcp
  bridge_ports eth0
iface eth0 inet manual

然后重启机子或者

ifdown eth0 && sudo ifup br0 && sudo ifup eth0

创建虚拟机

下面创建一个虚拟机名字是redmine-host,img路径是/root/kvm_image/redmine-host.img,iso路径是/root/Downloads/ubuntu-14.04.1-server-amd64.iso。

virt-install -n redmine-host --vcpus 2 -r 1024 --disk path=/root/kvm_image/redmine-host.img,bus=virtio,size=100 -c /root/Downloads/ubuntu-14.04.1-server-amd64.iso --network bridge=br0,model=virtio --graphics vnc,listen=0.0.0.0,port=5901 --noautoconsole -v

然后,找个VNC客户端,打开HOST_IP:5901这个vnc服务来进行安装系统。后面就按照普通安装linux流程就可以了。

virsh

virsh可以看文档,但是常用的并不多。

virsh edit Domain ## 修改配置,内存,cpu核数什么的,记住要先shutdown
virsh list --all

参考

funtoo在Y400的安装及其相关配置

好久没更新了,国庆放假更新下,意思意思。

最近入手了台主流笔记本联想的Y400,但是安装起Linux,就不像之前那么主流了。

BIOS设置

首先,这台设备是通过UEFI启动win8的,所以好像安装的Linux也只能通过UEFI来启动,至少我是通过UEFI来搞的,也搞成了,有疑问的同学试试不用UEFI。不过并不是pure UEFI,pure UEFI压根没法进去SystemRescueCd。所以Secure Boot设置为Disabled,并且BIOS启动改成Legacy,UEFI first,不然是没法进win8系统。

上面是关于BIOS的设置,附加说明,联想这款机子是没办法用过F2来boot不同的系统,必须关机按修复键(插电源)来启动,然后就可以boot了。类似的帖子有{Y400} Y400成功安装双系统,原装WINDOWS 8 + UBUNTU 12.10 64位版本

我是保留原有的win8,然后在这个基础安装Funtoo的,通过SystemRescueCd UEFI启动进入(一定要这个),传统非UEFI启动我们看到的底色是蓝色,UEFI的话是黑色。最后能正常启动进入了SystemRescue的话,那就检查下/sys/firmware/efi存在不,否则回头检查是不是UEFI启动的。

分区

现在可以考虑分区的事情了,可以参考官方文档UEFI Install Guide。 预装的win8会有各种奇奇怪怪的分区,我用gdisk将win8最大的盘(就是D盘),分一半出来给Linux,最后用gdisk的p打印出来大概这样。

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2050047   1000.0 MiB  2700  Basic data partition
   2         2050048         2582527   260.0 MiB   EF00  EFI system partition
   3         2582528         4630527   1000.0 MiB  FFFF  Basic data partition
   4         4630528         4892671   128.0 MiB   0C01  Microsoft reserved part
   5         4892672       214607871   100.0 GiB   0700  Basic data partition
   6       214607872      1263183871   500.0 GiB   0700  Microsoft basic data
   7      1929711616      1953523711   11.4 GiB    2700  Basic data partition
   8      1263183872      1264207871   500.0 MiB   EF00  EFI System
   9      1264207872      1280985087   8.0 GiB     8200  Linux swap
  10      1280985088      1929711615   309.3 GiB   8300  Linux filesystem

具体分区还可以参考Funtoo Linux Installation,分完区之后的事情参考这篇文档把内核安装好就差不多了。下面记录点略坑的,可能并不是所有人都会遇到。

在SystemRescueCd使用无线

先关了Netxxx,/etc/init.d/Net字样的玩意,具体是啥就忘记了,必须关了,然后再关wpa_supplicant,/etc/init.d/wpa_supplicant stop,不然wpa_supplicant stop之后还在的。接着将ctrl_interface=/var/run/wpa_supplicant写入/etc/wpa_supplicant/wpa_supplicant.conf,然后 wpa_passphrase <ssid> <passphrase> >> 入/etc/wpa_supplicant/wpa_supplicant.conf,然后再start wpa_supplicant,再dhcpcd your_interface_name就可以了。这样就连上,才可以继续安装的步骤,之前没关Netxxx,老是没法连上。接着,如果有其他Linux的设备的话,可以开sshd,在其他Linux完成下面的安装步骤。如果/etc/init.d/sshd启动的时候,提示Netxxx之类的错误的话,可以直接/usr/bin/sshd来启动,如果报ssh_host_dsa_key之类的文件找不到,就可以init.t/sshd脚本内容去生成个。至于为毛启动个sshd都依赖个Netxxx,真是没想明白。

编译内核

这个嘛,多搞几次,就明白了,我当时用我台式机的.config拿过去,将驱动那些改改。 要连上无线,记得将Networking support中Wireless的cfg80211 extensions钩上,默认没钩,不然驱动什么的搞好也是无法连接。

[*]     cfg80211 wireless extensions compatibility

先编译个大概,能正常开机,以后缺什麼再编什么。

/etc/boot.conf

这个玩意应该funtoo特有。grub的安装参考官方文档UEFI Install Guide ,make.conf加了GRUB_PLATFORMS="efi-64"之后,重新编译,好多依赖要装。 安装grub,大概就是这么一句命令grub-install –target=x86_64-efi –efi-directory=/boot /dev/sda 我的boot.conf配置如下,分区你们上面也看了,大概参考下。 其中,params += acpi_osi=Linux和params += acpi_backlight=vendor,是解决调屏幕亮度,你妈acpi自己调不了。 亮度解决方案详细可以参考Arch Wiki Backlight

boot {
        generate grub
        default "Funtoo Linux On Roo"
        timeout 3
}
 
"Funtoo Linux On Roo" {
        kernel vmlinuz[-v]
        initrd initramfs[-v]
        params = quiet rootfstype=ext4
        params += root=/dev/sda10
        params += acpi_osi=Linux
        params += acpi_backlight=vendor
}
"Windows 8" {
        type win8
        params root=/dev/sda2
}

boot-update之后,/boot/grub/grub.cfg的Win8的配置还是要改下chainloader后面,默认win8后面是+4,没懂,看了代码实现,是写死(也就是没法通过配置传过去,有人知道的可以告诉我一声),手动修改grub.cfg,将+4改为/EFI/Microsoft/Boot/bootmgfw.efi,改完之后如下。不改,win8进不去,回头有空再研究下,考虑给官方提个patch啥的。至于这么改的原因是看到Arch论坛有人的配置就是如此。 1、https://bbs.archlinux.org/viewtopic.php?id=150183 ;2、 https://bbs.archlinux.org/viewtopic.php?id=164486

menuentry "Windows 8" {
  insmod part_gpt
  insmod fat
  set root=(hostdisk//dev/sda,gpt2)
  search --no-floppy --fs-uuid --set E45E-3CC2
  chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

grub这样就安装好了,可以考虑重启机子了。记得设置root的密码,否则有得chroot进去加密码。

Linux安装完成之后

如果能顺利进入win8和Funtoo,可以看看Funtoo Linux First Steps ,来进行下一步的折腾步骤,安装X和自己平时使用的桌面环境,工具,驱动之类的。 下面贴下搜索到,我觉得有用链接供大家参考,我这里就不细说了,每个都不一样,多看自己需要的文档吧。回头,有空我考虑分享下安装在funtoo安装xmonad和及其配置。

Xmonad相关

http://wiki.gentoo.org/wiki/Xmonad

安装 emerge –ask xmonad xmonad-contrib

温度相关

http://wiki.gentoo.org/wiki/Lm_sensors

会一直报找不到MODULE_0,我将它加上了

[00:41:36] root@Laptop-Y400 /home/roowe# cat /etc/conf.d/lm_sensors
LOADMODULES=yes
INITSENSORS=yes
HWMON_MODULES="coretemp"
MODULE_0=coretemp

触摸板

http://ar.newsmth.net/thread-ca2723e71dad7d.html PS扩展要内核支持 https://wiki.archlinux.org/index.php/Touchpad_Synaptics_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) http://wiki.gentoo.org/wiki/Synaptics http://apt-blog.net/configuring_laptop_synaptics_touchpad_in_linux

[00:25:00] root@Laptop-Y400 /home/roowe/Dropbox# cat /home/roowe/bin/touchpad_args.sh
#!/bin/bash
export DISPLAY=:0.0
synclient \
CircularScrolling=1 \
TapButton1=1  \
EmulateTwoFingerMinZ=50 \
EmulateTwoFingerMinW=6 \
VertTwoFingerScroll=1 \
HorizTwoFingerScroll=1 \
VertScrollDelta=75 \
HorizScrollDelta=100 \
;

install nagios with nginx in gentoo/funtoo

nagios就不多做介绍了,*nix下有名的监控软件,如果nagios的web界面使用apache,或许没有这么折腾,在nginx就有点小折腾了,nagios想在nginx上跑,就得有perl cgi和php cgi的环境。

funtoo的nginx安装就不说了,直接emerge即可。启动和重启在/etc/init.d/nginx,开机自启用rc-update add nginx。

php cgi环境可以使用php-fpm,这个在之前的blog也有提及,在package.use为了php添加fpm,最后样子大概像。

[17:06:41] roowe@r-funtoo ~/workspace/GServer_tool$ grep php /etc/portage/package.use
dev-lang/php mysql pdo mysqli fpm
然后,重新emerge下php,然后php-fpm的配置在/etc/php/fpm-php5.4/php-fpm.conf,我的配置如下,参考了PT酱的,我也不是很清楚为啥这样,我也只是安装来玩玩的。
[17:06:33] roowe@r-funtoo ~/workspace/GServer_tool$ egrep -v ";|^ *$" /etc/php/fpm-php5.4/php-fpm.conf
[global]
error_log = /var/log/php-fpm.log
[www]
listen = 127.0.0.1:9000
user = nginx
group = nginx
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.max_requests = 300
slowlog = /var/log/php-fpm-$pool.log.slow
启动和重启在/etc/init.d/php-fpm,开机自启通过rc-update。

perl的cgi,这个嘛,还真第一次接触,小小蛋疼了下,喵呜。

要安装spawn-fcgi和fcgiwrap,前者是管理fcgi启动什么的,gentoo的Portage有这两货,直接emerge即可。

然后对spawn-fcgi做个链接,复制下配置。

sudo ln -s /etc/init.d/spawn-fcgi  /etc/init.d/spawn-fcgi.pl
cp /etc/conf.d/spawn-fcgi /etc/conf.d/spawn-fcgi.pl

我的spawn-fcgi.pl配置如下。

[17:34:45] roowe@r-funtoo ~/workspace/GServer_tool$ egrep -v "#|^ *$" /etc/conf.d/spawn-fcgi.pl
FCGI_SOCKET=/var/run/fcgiwrap.sock
FCGI_PORT=
FCGI_PROGRAM=/usr/sbin/fcgiwrap
FCGI_CHILDREN=1
FCGI_CHROOT=
FCGI_CHDIR=
FCGI_USER=nginx
FCGI_GROUP=nginx
FCGI_EXTRA_OPTIONS="-M 0700"
ALLOWED_ENV="PATH"
最后就是安装nagios了,直接emerge就可以了。

配置文件/etc/nagios/,记得将nginx加入到nagios组里面,不然nginx没法打开这些配置文件,记得重启机子,再不行的话,就暴力chmod -R a+r吧。

usermod -a nginx -G nagios
cgi文件在/usr/lib64/nagios/cgi-bin/

php和资源文件都在/usr/share/nagios/htdocs/

最后就是nginx配置文件,/etc/nginx/sites-enabled/nagios,内容如下:

server {
        listen   81;
        access_log /var/log/nginx/nagios.access_log main;
        error_log /var/log/nginx/nagios.error_log info;
        server_name localhost;
        root /usr/share/nagios/htdocs/;
        index index.php;
        #php文件
        location ~ .*\.php$ {
                root /usr/share/nagios/htdocs/;
                fastcgi_intercept_errors on;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include /etc/nginx/fastcgi_params;
        }
        #cgi文件
        location ~ .cgi {
                include /etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/fcgiwrap.sock-1;
                fastcgi_param  SCRIPT_FILENAME /usr/lib64$fastcgi_script_name;
        }
        #资源
        location /nagios/ {
                alias /usr/share/nagios/htdocs/;
        }
}
然后开启之后,就试着访问localhost:81,出错的话就看/var/log/nginx/nagios.error_log,根据错误提示应该能解决问题的。好了,继续看看nagios,怎么玩。

http authentication应该很简单就能加上去了,这里就不细说,反正是在本机装着玩。

Linux坑爹技能之各种命令

十分简短的命令,不值得写一篇blog的东东,全部仍在这里。

1、avi格式转mp4

[roowe@localhost tmp]$ ffmpeg -i Reflets3-3.avi -f mp4 -vcodec libxvid -maxrate 1000 -qmin 3 -qmax 5 -bufsize 4096 -g 300 -acodec aac -strict experimental -mbd 2 -s 320x240 -ab 128 -b 400 test.mp4

2、执行history的第1234条到第1238条命令命令

for x in {1234..1238}; do fc -s $x; done

3、在gnome3设置动态背景

git clone https://github.com/ametaireau/gnome-background-generator.git
cd gnome-background-generator/
./gnome-background-generator -p ../../Photos/wallpaper/ -o ../../Photos/wallpaper/background-1.xml
GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.background picture-uri 'file:///home/roowe/Dropbox/Photos/wallpaper/background-1.xml'
GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.background picture-options 'zoom'
 ## Possible values: centered, none, scaled, spanned, stretched, wallpaper, zoom

4、sudo无需输入密码,在root下visudo之后,在root ALL=(ALL) ALL下一行添加yourusername ALL=(ALL) ALL,同时取消%wheel ALL=(ALL) NOPASSWD: ALL的注释,最后gpasswd -a YourUserName wheel就OK了。

5、远程关掉一台Windows机器

net rpc shutdown -I IP_ADDRESS -U username%password
刚刚就把师兄的机子给关了,喵哈哈

6、以HTTP方式共享当前文件夹的文件

python -m SimpleHTTPServer

7、在以普通用户打开的vim当中保存一个root用户文件

:w !sudo tee %

%是vim当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径。

8、快速备份一个文件

 cp filename{,.bak}

9、免密码ssh登录主机,前提当前用户要有公钥,没有就执行ssh-keygen生成个吧。

ssh-copy-id host

然后以后ssh host的时候就不输入密码

10、wget下载

wget -c -r -np --restrict-file-names=nocontrol  --accept=pdf,chm,zip,ppt,rar,doc  url

简单解释下,-c是断点续传,-r是递归,-np不到父目录去,如果不想创建目录就加个-nd

11、画ascii码,详细见:http://search.cpan.org/~tels/Graph-Easy/

[roowe@localhost ~]$ echo "[ Bonn ] -> [ Berlin ] [ Freiburg ] -> [ Hamburg ]" | graph-easy 
+----------+     +---------+
|   Bonn   | --> | Berlin  |
+----------+     +---------+
+----------+     +---------+
| Freiburg | --> | Hamburg |
+----------+     +---------+

12、用yum-utils的repoquery查询包中的所有文件。

repoquery –l packname

13、SDB:Clean the swap superblock 出错的提示大概内容如下。 "The superblock could not be read or does not describe a correct ext2 filesystem. If the device is valid and it really contains an ext2 filesystem (and not swap or ufs or something else), then the superblock is corrupt, and you might try running e2fsck with an alternate superblock: e2fsck -b 8193 " 解决方案见http://en.opensuse.org/SDB:Clean_the_swap_superblock 我的大概记录如下:

fdisk -l
dumpe2fs /dev/sda1
dumpe2fs /dev/sda3
e2fsck -c -f -v /dev/sda1
e2fsck -c -f -v /dev/sda3
swapoff -a /dev/sda2
mkswap /dev/sda2 -L swap

14、新建mysql访问的账户

mysql> grant all on db_name.* to 'db_name'@'ip' identified by 'passwd';
mysql> flush privileges;

15、简易计时器

[roowe@localhost ~]$ time read

16、lftp上传文件夹用mirror。

lftp jiaofeng@172.16.0.2:~> mirror -R /etc/openvpn/sj-vpn/
Total: 1 directory, 7 files, 0 symlinks
New: 7 files, 0 symlinks
286290 bytes transferred

17、ubuntu下看应用程序xxx安装路径

dpkg -L xxx

17、debugging NetworkManager-pptp

/usr/libexec/nm-pptp-service --debug

18、合并图片

montage *.jpg -geometry +0+0 -tile 1x6 a.png

19、查看命令输出变化

watch -d -n 1 cmd

20、清理最近使用的文件

echo "" > ~/.local/share/recently-used.xbel

21、查看系统网络端口暂用情况

sudo netstat -tulnp

22、关闭TAB的错误警告声音,修改文件/etc/inputrc,讲下面语句前的注释去掉

set bell-style none

23、搓搓的查IP,改天再用sed,awk什么的美化下

[roowe@roowe-fedora tmp]$ lynx --dump  http://www.123cha.com/ip/?q=123.125.114.144  | grep "参考数据" 
     * 参考数据一:
     * 参考数据二:
   [参考数据一]: 北京市 百度公司
   [参考数据二]: 北京市 联通

installs Trac with uWSGI and Nginx in gentoo/funtoo

最近团队打算使用Trac作为项目缺陷跟踪系统,唔,老大在安装Trac的时候,我已经将Redmine安装好了,基本处于能用的状态了,不过我也没有什么充足的理由说服老大用Redmine,毕竟这两个我都是听过,也是第一次安装和使用什么的,都试试看吧,Redmine的安装方式或许不对,应该还可以优化,不然用起来有点慢(已经用nginx和passenger跑Redmine),相比之下,Trac不用nginx跑都没有觉得慢,或许是我当时的网络问题吧,安装Redmine和使用Trac不是同一天。

我们的服务器是CentOS 5,然后我在上面安装Trac的插件Account Manager Plugin,死活跑不起来,咱不想用http authorization嘛,不然都没有办法logout,可能认证是nginx做的,然后Trac管不到那里去,就没有办法logout了吧。服务器的库类各种旧,开始怀疑是不是库类的问题,然后就尝试在我的funtoo安装个Trac,这样做的话,也方便调试插件,部署在服务器上的Trac已经投入使用了,不怎么敢在上面安装和测试插件,这样导致其他同事没法使用Trac就不好了,T_T。

安装步骤如下。

sudo su -
 
#安装基本程序
emerge uwsgi nginx virtualenv
 
#配置uwsgi
ln -s /etc/init.d/uwsgi /etc/init.d/uwsgi.trac
#cp /etc/conf.d/uwsgi /etc/conf.d/uwsgi.trac
cat > /etc/conf.d/uwsgi.trac <<EOF
UWSGI_SOCKET=127.0.0.1:3000
UWSGI_THREADS=1
UWSGI_PROCESSES=6
UWSGI_LOG_FILE=/var/log/uwsgi.log
UWSGI_EXTRA_OPTIONS="--plugin python27"
EOF
 
#创建virtual python env
virtualenv -p python2.7 /opt/trac-python27
source /opt/trac-python27/bin/activate
#安装Trac和其依赖
easy_install Genshi Babel Trac
 
#项目目录/var/lib/trac/jy_test/,并初始化
trac-admin /var/lib/trac/jy_test/ initenv
#输入一些项目必要的信息即可
trac-admin /var/lib/trac/jy_test/ deploy /var/lib/trac/jy_test/deploy
#获取wsgi脚本
cd /var/lib/trac/jy_test/deploy/cgi-bin && cp trac.wsgi trac_wsgi.py
cat >/etc/nginx/sites-enabled/trac-test  <<EOF
server {
    listen   80;
    server_name localhost;
    location / {
                include  /etc/nginx/uwsgi_params;
                uwsgi_pass 127.0.0.1:3000; 
                uwsgi_param UWSGI_PYHOME /opt/trac-python27;
                uwsgi_param UWSGI_CHDIR /var/lib/trac/jy_test/deploy/cgi-bin;
                uwsgi_param UWSGI_SCRIPT trac_wsgi;
                uwsgi_param UWSGI_SCHEME $scheme;
                uwsgi_param REMOTE_USER $remote_user;
                uwsgi_param AUTH_USER $remote_user;
        }
}
EOF
/etc/init.d/uwsgi.trac start
/etc/init.d/nginx start
打开浏览器,这样应该可以跑起来的,如果不行就去看/var/log/nginx下的日志和/var/log/uwsgi.log。

好了,继续尝试Account Manager Plugin的配置和使用,下一篇blog写这个。

更多阅读:

  1. uWSGI Quick Start
  2. Trac 运营环境最简易配置(uwsgi+nginx)
  3. Trac Installation Guide for 1.0
  4. Gentoo下搭建python web环境(nginx+bottle+virtualenv+uwsgi)

在Linux使用打印机

有时候,我们不想看电子版的东西,想打印出来看,比如《Real World Haskell》这种茶余饭后的书,就得打印出来,国内买不到,T_T只有万惡资本主义才有。

但是,想到我们是Linuxer,不知道打印机的打印协议支不支持Linux,只是依稀记得有cups这种跟打印有关东西。没错,我们就是打算用这货让Linuxer可以打印东西。

印象中,这货好像是默认就装上了,gentoo/funtoo/debian/fedora什么的默认都有这货,开启的话,就像平时开启服务一样,这里不过多的描述了,gentoo/funtoo的话/etc/init.d/cupsd start就可以了。

接着,我们用浏览器打开127.0.0.1:631,默认是这个端口,如果你改过cups的配置的话,那就使用你改动过的端口咯。看到界面之后,没事可以去看看help,慢慢挖掘cups的功能,急的话,1、可以打开administration之后看到类似add printer字样的东西来添加打印机,2、这个时候会让你登入,怕惹麻烦的话,直接root登陆就是了,3、然后选LPD/LPR Host or Printer,4、接着输入打印机所在的socket://ip,5、一直continue,然后配置选Generic和Generic PCL Laser Printer的就可以了。最后就点击下add就OK了,然后去打印下test page试试。

使用ssh作为代理(for portage and git)

为浏览器代理

我用ssh的时候最先学会用的一种代理

ssh  -D 7070 user@your_ssh_machine_ip
然后,在浏览器设置代理地址为127.0.0.1:7070,类型是socks v5,建议安装插件,firefox可以使用auto-proxy,google-chrome可以使用SwitchySharp,至于怎么用就去google吧,不细说。

为wget做代理

这个需求在我最近一个多月使用校园网的时候才出现的,你妹的校园网。

我之前没有修改gentoo的distfiles的url,用的是http://distfiles.gentoo.org ,所以会慢,如果改为http://mirrors.163.com/gentoo/ 会好点。还是假设我们希望用http://distfiles.gentoo.org

wget不支持socks v5,所以要绕个圈子,有个两个方式。

使用tsocks

安装tsocks就不用说了,各自Linux发行版懂得怎么安装软件。Funtoo用户直接emerge tsocks即可。

ssh  -qfTnN -D 7070 user_name@your_ssh_machine_ip
mv /etc/socks/tsocks.conf /etc/socks/tsocks.conf.bak
cat >> /etc/socks/tsocks.conf << EOF
server = 127.0.0.1
server_type = 5
server_port = 7070
EOF
tsocks wget -c your_file_url
大概过程就像上面,挺简单的,配置好tsocks,开启ssh,然后tsocks wget调用wget。

唔,我也就是嫌emerge过程下载嘛,其下载是使用wget的,所以要改变下。 通过/etc/make.globals,我们知道FETCHCOMMAND和RESUMECOMMAND是用来控制wget的参数的,所以我们在/etc/make.conf添加下面两行即可。

FETCHCOMMAND="tsocks wget -t 3 -T 60 --passive-ftp -O \"\${DISTDIR}/\${FILE}\" \"\${URI}\""
RESUMECOMMAND="tsocks wget -c -t 3 -T 60 --passive-ftp -O \"\${DISTDIR}/\${FILE}\" \"\${URI}\""
这样,我们的emerge过程中调用wget来下载的时候就会走ssh proxy了,这样网速会快点,如果你的网络到外网很慢,但是你的网络到ssh-server很快,ssh-server到外网又很快。

不是很好的方法

大概原理如下,不用安装其他软件。

ssh -L 8888:distfiles.gentoo.org:80 user@your_ssh_machine_ip
wget -cheader="Host:distfiles.gentoo.org:80" “http://127.0.0.1:8888/filepath”

在emerge下,这样只能下载distfiles.gentoo.org里面的东西了,做法如下:

开ssh。

ssh -L 8888:distfiles.gentoo.org:80 user@your_ssh_machine_ip

改/etc/wgetrc的配置。

header = Host:distfiles.gentoo.org:80
http_proxy=http://127.0.0.1:8888
然后emerge的时候wget下载distfiles.gentoo.org里面的东西的时候就会走ssh路线了,但是,万一404了,跳到其他源或者项目主页去的话,这个时候就悲剧了,这是十分不好的地方。

为git作代理

目前,我是用tsocks git的方式来pull和push,我搞了半天都不知道portage是用哪个变量(天知道有没有呢)控制git的选项,所以手动git pull代替emerge –sync了。

update: Tue Oct 9 23:47:47 2012

后来我无意中,发现emerge过程中,git是通过/usr/portage/eclass/git-2.eclass和/usr/portage/eclass/git.eclass来控制,所以将里面的git pull,git fetch什么前面都给加上tsocks就可以了。

我修改后的文件在https://gist.github.com/3859695

update:Thu Oct 11 00:48:39 2012

layman用git或者svn来同步代码的话,要想使用tsocks的话,可以在/etc/layman/layman.cfg那里配置下git的路径,从而可以写个git.wrap替换git,例子如下。

[00:51:04] root@orr-funtoo /usr/portage# cat /usr/bin/git.wrap
#!/bin/bash
tsocks git $*

在VirtualBox使用招商银行的网银

起因

办理了工资卡,什么网银,信用卡什么的都给办了。本来还想着能不能不办,因为办了,我还得安装个windows虚拟机,不过最后还是办了。幸好windows虚拟机很顺利打开了网银界面,下面大概记录下。

工作原理

要使用招商银行给的USB Key才能登陆和访问我们的网银。

所以,也就是让虚拟机能访问宿主机的USB,VirtualBox默认木有这个功能,所以每次打开都报关于USB的错误,要安装VirtualBox Extension Pack才行,不过中间有点小麻烦,下面一一说明。

下载与安装

https://www.virtualbox.org/wiki/Downloads 这个页面,下载对应VirtualBox版本的VirtualBox Extension Pack,然后打开VirtualBox,按Ctrl+g来打开全局设定,或者点击管理->全局设定来打开,然后找到一个扩展,然后添加,选择那个下载好的Extension Pack即可,然后会提示你输入密码,输入完,就搞定安装了。

配置

我的系统是Fedora 17,安装好之后,打开虚拟机XP的设置,提示我没有权限访问USB,建议我将登陆的用户加到vboxusers这个group。囧死,我没有这个叫作vboxusers的group,所以先添加下。

groupadd vboxusers
usermod -a -G vboxusers roowe
su roowe

但是添加完,还是不行,只能去google了,后来发现要修改/etc/fstab,囧!

echo "none /proc/bus/usb usbfs devgid=1002,devmode=664 0 0" >> /etc/fstab

那个devgid=1002是根据/etc/group来的。

[21:41:12] root@roowe-fedora /home/roowe# grep "vbox" /etc/group
vboxusers:x:1002:roowe
重启机子,然后打开虚拟机的设置就不会再提示任何和USB有关错误信息了,good luck!

Update: "Tue Oct 23 10:39:02 2012"

在funtoo安装好的VirtualBox,一直没法正常使用USB。google了一个晚上,意外发现几个东西,kernel3.5之后就不支持usbfs了,我这样就没有办法使用之前的方法,在/etc/fstab添加东西了。从大部分人的描述来说,直接将用户名添加到vboxusers组就可以了,但是我加了无效,肯定哪里打开方式不对。无意中看到有人说,要logout(或者再次登陆su your_name)才能让添加到组生效,囧!之后,我试了下,确实是这样的。

groupadd vboxusers
usermod -a -G vboxusers roowe
su roowe

一个轻量级MySQL工具adminer

来源

去年在PT酱的公司实习的时候就知道adminer了,不过当时我不需要接触MySQL,使用的是SQLite3,而且对数据库操作也不是很频繁,所以就没怎么用,倒是看到maomaol在用。

这个工具是类似phpmyadmin,不过比phpmyadmin更轻量级,看安装包的大小就知道了嘛,adminer就一个单文件。据说,功能上,adminer也比phpadminer丰富(详细见:http://www.adminer.org/en/phpmyadmin/),但是我没怎么用过phpmyadmin,就不对phpmyadmin多做说明了。

在新的团队,使用的是MySQL,由于项目比较紧张,木有用高级玩意ORM什么的,数据库逻辑没有封装,数据库操作全部是SQL语句(这时,我为我们的项目捏了一把汗)。所以操作MySQL频繁很多,苦于mysql cli界面实在不怎么样,不过还好有表名和字段名在输入的时候自动補全,但是有时候就是简单看下数据,修改下表名,字段名什么,就不想写SQL语句了,所以需要找个简单的工具配合下,但是Linux好像木有啥好用的MySQL工具,臃肿居多(我又不是DBA,不需要那么多功能,重要的是机子太烂了,i3/4G),所以就去试试了adminer,发现正好满足需求。团队的大叔看了几次我在用adminer,也觉得这个工具不错。现在,我就忽悠了老大(用debian的家伙)用了这个作为辅助工具,大叔就用windows,貌似windows有几款不错的工具。上次在老大面前用了不到5min就安装配置好nginx+php5-fpm(我会告诉你们,当时我第一次用nginx的时候,搞了好几天吗?),其实熟悉了真的很简单吧,老大工作了这么久,估计是以开发为主,运维那些玩意或许就不怎么熟悉吧。XDDD

INSTALL

安装过程很简单,如上文所说,需要安装nginx+php5-fpm,其实,本质就是需要一个php的环境就好了,这点就不说了,我的blog没有写过怎么安装nginx,不过有LAMP,参考Fedora下LAMP的安装 和PT的blog Nginx + PHP (via php-fpm) on Ubuntu 环境最佳实践12.04版 吧。

搭建好php环境,需要安装个php连接mysql的库类,php-mysql。接着去http://www.adminer.org/ 下载一个adminer,然后放在php环境的root目录就好了。这样就安装完成了,很简单吧?比phpmyadmin简单多了吧?

使用

这个不用教了吧?打开就会用了吧,XDDD。