分类: *BSD

学习BSD-UNIX系统

  • 安装配置zhcon

    什么是zhcon?

    经常有人提问在字符界面下无法显示中文,zhcon是解决方法之一。

    如何安装zhcon?

    zhcon已有rpm包,我更喜欢源码安装。

    下载:

    wget http://sourceforge.net/projects/zhcon/files/zhcon/0.2.6/zhcon-0.2.5.tar.gz

    wget http://sourceforge.net/projects/zhcon/files/zhcon/0.2.6/zhcon-0.2.5-to-0.2.6.diff.gz

    安装:

    第二个为一个补丁包。

    tar zxvf zhcon-0.2.5.tar.gz

    # gunzip zhcon-0.2.5-to-0.2.6.diff.gz

    # cd zhcon-0.2.5/

    # patch -p1 < ../zhcon-0.2.5-to-0.2.6.diff

    #./configure

    # make && make install

    # whereis zhcon

    zhcon: /usr/local/bin/zhcon /usr/local/etc/zhcon.conf /usr/local/lib/zhcon

     

    # vim /usr/local/etc/zhcon.conf

    #x_resolution = 640

    #y_resolution = 480

    x_resolution = 800 //修改分辨率

    y_resolution = 600

     

    #color_depth = 4

    color_depth = 8

    如何使用zhcon?

    在字符终端下

    #zhcon –utf8

    效果:

  • Freebsd8.2 32位ports安装php5.2+fpm+mysql5.1+nginx+Zend

    一、安装软件前的准备:

    系统的安装:让机房最小化安装32位freebsd8.2系统。

    ports的安装:机房装好系统后,远程登录,自己在线安装ports

    命令:

    sysinstall->Configure->Distributions->ports->FTP->China->OK

    修改系统密码:passwd回车

    二、手动安装nginx+php

    (1) 进入系统后,准备cvs更新:

    1. cd /usr/ports/net/cvsup-without-gui

    # make install clean

    2. cp /usr/share/examples/cvsup/ports-supfile /etc/ports-supfile

    3. # ee /etc/ports-supfile

    将其中的#*default host=CHANGE_THIS.FreeBSD.org一行改为:

    *default host=cvsup4.FreeBSDchina.org

    {也可以指定更新版本日期,例如加上:*default date=2009.10.05.00.00.00

    (这个可以省略)

    }

    4. 更新ports

    /usr/local/bin/cvsup -g -L 2 /etc/ports-supfile

    2) 安装mysql

    #cd /usr/ports/databases/mysql51-server

    #make WITH_CHARSET=gbk WITH_XCHARSET=all WITH_PROC_SCOPE_PTH=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes SKIP_DNS_CHECK=yes WITHOUT_INNODB=yes install clean

    #cp /usr/local/share/mysql/my-large.cnf /usr/local/etc/my.cnf ##mysql的优化参数,也可以手动修改

    #rehash

    # mysql_install_db –user=mysql ##初始化mysql

    #/usr/local/bin/mysqld_safe & ##启动mysql

    #/usr/local/bin/mysqladmin -u root password ‘newpass’

    ##设置root密码,newpass是你需要设置的密码

    关闭mysql可以使用mysqladmin -uroot -p shutdown

    mysqladmin -uroot -p password ‘新密码’ 回车后输入旧密码

    mysql -uroot -p #登陆mysql monitor.

    3) 安装php

    # cd /usr/ports/lang/php52装的是5.2版本,后装php5-extensions的时候对应的要cd /usr/ports/lang/php52-extensions

    #make config ##配置编译参数

    [X] CLI Build CLI version

    [X] CGI Build CGI version

    [ ] APACHE Build Apache module

    [ ] DEBUG Enable debug

    [X] SUHOSIN Enable Suhosin protection system

    [X] MULTIBYTE Enable zend multibyte support

    [ ] IPV6 Enable ipv6 support

    [ ] REDIRECT Enable force-cgi-redirect support (CGI only)

    [ ] DISCARD Enable discard-path support (CGI only)

    [X] FASTCGI Enable fastcgi support (CGI only)

    [X] FPM Build FPM version //php5.2 FPM依赖FASTCGI

    [X] PATHINFO Enable path-info-check support (CGI only)

    #make install clean

    # cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini

    4)升级libtool

    #cd /usr/ports/devel/libtool/ && make reinstall clean

     

    5) 安装php52-extensions

    #cd /usr/ports/lang/php52-extensions //5.2版本的php必须对应装5.2版本的扩展

    #make config

    Options for php5-extensions 1.1

    ————————————————-

    [X] CURL CURL support

    [ ] FTP FTP support//咱们不要

    [X] GD e in

    [X] GETTEXT

    [X] MBSTRING multibyte string support

    [X] MCRYPT Encryption support

    [X] MYSQL

    [X] MYSQLi

    [ ] PCRE Perl Compatible Regular Expression support

    [ ] POSIX //去掉.

    [ ] SQLITE //去掉.

    [X] ZIP ZIP support

    [X] ZLIB

    # make install clean

    不同以前版本,安装完php52-extensions发现很多扩展并没有安装,手动挨个去安装吧,包括:mysql、mysqli、gd、mbsting、curl,其中,安装gd扩展耗时较长,下载依赖类库较多,多次弹出选择框。

    # cd /usr/ports/databases/php52-mysql

    # make install clean

    # cd /usr/ports/databases/php52-mysqli

    # make install clean

    # cd /usr/ports/graphics/php52-gd

    # make install clean

    # cd /usr/ports/converters/php52-mbstring

    # make install clean

    # cd /usr/ports/ftp/php52-curl

    # make install clean

     

    6) 安装Zend Optimizer

     

    #cd /usr/ports/devel/ZendOptimizer/

     

    #make #不要安装,只需要下载解包

     

    #cd /usr/ports/devel/ZendOptimizer/work/ZendOptimizer-*

     

    #./install-tty ##会出现一个文字的安装界面,只是最后一步,不要选择apache就可以了

    6)        安装nginx

    #cd /usr/ports/www/nginx/

    #make install

     

    配置nginx

    在index.html前面添加一个index.php

     

    location / {

    root   /usr/local/www/nginx; #虚拟目录名

    index   index.html index.htm;

    }

    #location ~ \.php$ {

    #    fastcgi_pass    127.0.0.1:9000;

    #    fastcgi_index   index.php;

    #   fastcgi_param     SCRIPT_FILENAME     /scripts$fastcgi_script.name;

    #    include     fastcgi_params;

    #}

    将前面的#去掉,修改为

    location ~ \.php$ {

    fastcgi_pass    127.0.0.1:9000;

    fastcgi_index   index.php;

    fastcgi_param CRIPT_FILENAME     /usr/local/www/nginx$fastcgi_script_name;

    include     fastcgi_params;

    }

    /usr/local/sbin/php-fpm  //手动启动php-fpm

    /usr/local/sbin/nginx  // 手动启动nginx

    7)添加开机自启动:

    在/etc/rc.conf中加入下面三行内容:

    mysql_enable=”YES”

    nginx_enable=”YES”

    php_fpm_enable=”YES”

  • 关于FORCE_PKG_REGISTER

    当你先已用ports安装过某一软件,再次安装同一项时,会出现类似:You may wish to “make deinstall” and install this port again

    by “make reinstall” to upgrade it properly.

    If you really wish to overwrite the old port of PORTS資料夾位置

    without deleting it first, set the variable “FORCE_PKG_REGISTER”

    in your environment or the “make install” command line.

    的错误。

     

    解决办法:只要在make install 时加上 FORCE_PKG_REGISTER=”yes” 就可以强制安裝

  • FreeBSD防火墙Firewall(ipfw)

    先將kernel複製出來

    mkdir /usr/local/etc/FreeBSD

    cd /usr/src/sys/i386/conf

    cp GENERIC /usr/local/etc/FreeBSD/MYKERNEL

    ln -s /usr/local/etc/FreeBSD/MYKERNEL

    vi /usr/local/etc/FreeBSD/MYKERNEL

    加入

    options IPFIREWALL #firewall

    options IPFIREWALL_VERBOSE #enable logging to syslogd(8)

    options IPFIREWALL_FORWARD #packet destination changes

    options IPFIREWALL_DEFAULT_TO_ACCEPT #allow everything by default

    cd /usr/src;make kernel

    完成後開始設定

    vi /etc/rc.conf

    加入

    #firewall

    firewall_enable=”YES”

    firewall_logging=”YES”

    firewall_script=”/etc/rc.firewall”

    vi /etc/rc.firewall

    將內容全部刪除改為

    #!/bin/sh

    fwcmd=”/sbin/ipfw”

    Trust_IP1=”127.0.0.1″ #這裡要換成server本身的IP

    Trust_IP2=”120.119.1.0/24″ #可通過的網段

    UnTrust_IP1=”192.83.191.0/24″

    Allowed_TCP_In_1=”22,25,53,80,443″

    #you want to open port

    Traceroute=”33433-33499″

    Allowed_UDP_Out=”20,21,53,113″

    Allowed_UDP_In=”20,21,53,113″

    Allowed_UDP_ftp_Out=”65000-65500″

    Allowed_UDP_ftp_In=”65000-65500″

    Allowed_TCP_ftp_Out=”65000-65500″

    Allowed_TCP_ftp_In=”65000-65500″

    #ipfw [add/del/fwd] [serial] [allow/deny] [protocol] [from] [ports] to [destation] [ports]

    $fwcmd -f flush

    #flush ipfw tables

    $fwcmd add 1 allow ipv6 from any to any

    $fwcmd add 00010 allow tcp from me to any setup keep-state

    $fwcmd add 00021 check-state

    $fwcmd add 00030 allow ip from ${Trust_IP1} to any

    $fwcmd add 00031 allow ip from ${Trust_IP2} to any

    $fwcmd add 00060 allow icmp from any to any

    $fwcmd add 00061 allow udp from any to any $Traceroute

    $fwcmd add 00120 deny ip from ${UnTrust_IP1} to me

    $fwcmd add 00121 deny tcp from ${UnTrust_IP1} to me 25

    $fwcmd add 56000 allow tcp from any to any ${Allowed_TCP_In_1}

    $fwcmd add 56003 allow udp from any ${Allowed_UDP_In} to any

    $fwcmd add 56004 allow udp from any to any ${Allowed_UDP_ftp_Out}

    $fwcmd add 56005 allow tcp from any to any ${Allowed_TCP_ftp_Out}

    $fwcmd add 65534 deny log ip from any to any

    #deny all ip

    $fwcmd zero

    #clean counter

    sh /etc/rc.firewall &

    reboot

  • FreeBSD安裝sshguard-ipfw

    請先完成ipfw設置

    cd /usr/ports/security/sshguard-ipfw;make install clean

    在/etc/syslog.conf 中

    #auth.info;authpriv.info |exec /usr/local/sbin/sshguard

    註解去掉

    也可以自由設定鎖定時間

    例如:

    auth.info;authpriv.info |exec /usr/local/sbin/sshguard -a 5 -p 7200 -s 3600

    (a:失敗多少次 p:被擋多久(秒) s:多少秒忘記攻擊)

    最後/etc/rc.d/syslogd restart

    接著你可以tail -f /var/log/auth.log,然後用putty連線,密碼請故意打錯四次,就會出現:

    Jan 26 13:31:05 earth sshguard[40059]: Blocking 210.71.11.116:4 for >420secs: 4 failures over 2 seconds.

    解除鎖定:

    使用另一個IP登入

    ipfw show

    ipfw delete xxxxx

  • FreeBSD安装pure-ftpd

    cd /usr/ports/ftp/pure-ftpd

    make install clean(選UTF-8)

    cd /usr/local/etc

    cp pure-ftpd.conf.sample pure-ftpd.conf

    vi /etc/rc.conf

    加入

    pureftpd_enable=”YES”

    ftp傳輸檔案時是有特定的port,

    如果防火牆有擋port,可以自行設定ftp檔案傳輸的port

    vi /usr/local/etc/pure-ftpd.conf

    將PassivePortRange這行改成

    PassivePortRange 65000 65500

    啟用ftp

    /usr/local/etc/rc.d/pure-ftpd start

  • FreeBSD Samba安装及设定

    cd /usr/ports/net/samba34

    make install clean

    (選擇 LDAP、ADS、CUPS、WINBIND、ACL_SUPPORT、SYSLOG、UTMP)

    vi /etc/rc.conf

    samba_enable=”YES”

    vi /usr/local/etc/smb.conf

    #加入工作群組

    workgroup = WORKGROUP

    #主機名稱

    server string = %h Samba Server

    (%h為主機名稱變數)

    #設定使用者家目錄

    原為:

    [homes]

    comment = Homes Directories

    browseable = no

    writable = yes

    更改為:

    [homes]

    comment = Home directory for %u on %h

    browseable = no

    writable = yes

    path = /usr/home/%u/

    valid users = %S

    #設定共享資料夾

    [public]

    comment = %h Shared Public Directory

    path = /usr/home/samba/public

    force directory mode = 0777

    force create mode = 0777

    force group = nobody

    force user = nobody

    public = yes

    writeable = yes

    read only = no

    #測試Samba conf中語法有無錯誤

    /usr/local/bin/testparm | more

    mkdir /usr/home/samba

    mkdir /usr/home/samba/public

    chmod 777 /usr/home/samba/public

    #新增Samba帳戶

    使用者必須同時設定兩種帳號: FreeBSD 的使用者帳號、 Samba 的使用者帳號 才能正常登入 Samba 伺服器。

    smbpasswd -a 帳號

    /usr/local/etc/rc.d/samba restart

    #個別設定資料夾設定

    [aaa]

    comment = aaa

    path = /home/samba/my2075/aaa

    valid users = aaa, admin2075

    write list = aaa, admin2075

    browseable = No

    [bbb]

    comment = bbb

    path = /home/samba/my2075/bbb

    valid users = bbb, admin2075

    write list = bbb, admin2075

    browseable = No

    [ccc]

    comment = ccc

    path = /home/samba/my2075/ccc

    valid users = ccc, admin2075

    write list = ccc, admin2075

    browseable = No

    #samba變數

    %S: 取代目前的「資源名稱」,所謂的「資源名稱」就是在 [ ] 裡面的內容。ex: valid users = %S

    %U: 代表目前登入的使用者的使用者名稱。

    %m: 代表 Client 端的 NetBIOS 名稱。

    %g: 代表登入的使用者的群組名稱。

    %M: 代表 Client 端的 Internet 主機名稱,就是 HOSTNAME。

    %L: 代表 SAMBA 主機的 NetBIOS 名稱。

    %h: 代表目前這部 SAMBA 主機的 HOSTNAME。

    %H: 代表使用者的家目錄。

    %I: 代表 Client 端的 IP。

    %T: 代表目前的日期與時間。

    #Samba 使用下列的通訊埠:

    Port 135/TCP – used by smbd

    Port 137/UDP – used by nmbd

    Port 138/UDP – used by nmbd

    Port 139/TCP – used by smbd

    Port 445/TCP – used by smbd

    #Windows網路芳鄰切換使用者

    進cmd模式

    net use * /delete

  • FreeBSD MySQL忘记密码

    今天使用時出現

    ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (61)

    其實是忘記密碼啦XDD

    #背景執行mysql安全模式

    mysqld_safe -u root –skip-grant-tables &

    #登入mysql(不用密碼)

    mysql -u root -p

    >use mysql

    >UPDATE user SET password=password(‘這裡輸入你的密碼’) where user=’root’;

    >FLUSH PRIVILEGES;

    >exit

    /usr/local/etc/rc.d/mysql-server restart

  • FreeBSD安裝phpmyadmin

    cd /usr/ports/databases/phpmyadmin

    make install clean

    cp -r /usr/local/www/phpMyAdmin /usr/local/www/apache22/data/phpmyadmin

    cd /usr/local/www/apache22/data/phpmyadmin

    cp config.sample.inc.php config.inc.php

    chmod 644 config.inc.php

  • FreeBSD入门级命令查阅表

    下面这份表单列出了FreeBSD入门所需要了解的大部分命令。列表按命令功能列出,括号中为命令的执行指令。如果想要进一步了解每个命令的用法,可以使用man命令进行查阅(用法:man xxx,xxx为你想要了解的命令)。以下,列表开始。

    我如何离线?(exit)

    我如何停止电脑?(shutdown -h now)

    我如何重新激活计算机? (shutdown -r now)

    我如何在单使用者模式下停止系统? (shutdown now)

    我如何切换终端机? (ALT-F*)

    文件

    我如何阅读用户手册? (man)

    使用者管理

    我该如何增加一个使用者? (adduser)

    我如何移除使用者? (rmuser)

    我如何改变我的密码? (passwd)

    我如何查看所有的使用者?(logins)

    “su” 指令

    我如何 “su” 至 root 帐号? (su)

    我如何 “su” 至其它使用者的帐号? (su username)

    四处观察

    我在哪? (pwd)

    我如何观察目录下有什么? (ls)

    我如何看到以点开始的隐藏档? (ls -a)

    我如何看到更多的讯息 (存取许可,拥有者,群组,大小,日期)? (ls -l)

    我如何看出那些档是什么? (ls -F)

    这些是什么档: “..” 与 “.”? (ls -aF)

    四处移动

    我该如何改变工作目录? (cd)

    如何回到上一层目录? (cd ..)

    我如何回到自己的工作目录? (cd, cd ~/)

    屏幕控制

    我如何卷回 (在终端机中,非 X)? (The Scroll Lock Key)

    我该如何清除屏幕? (clear)

    文章

    我如何不使用文书编辑器就可以观看小的档案? (more)

    最普遍的文书编辑器是? (vi)

    “vi” 看起来有点难,我可以从 “ee” 开始吗? (ee)

    “visual” 编辑器

    学习 “vi” 最有效的方法为何? (vilearn)

    “vi” 是如何工作的? (man vi)

    什么是储存指命? (:w)

    什么是离开指令? (:q)

    什么是可以储存与离开的命令? (:wq)

    如何离开而不使用储存指令? (:q!)

    我如何移动? (h, j, k, and l)

    Esc 键有什么用途? (The Esc Key)

    我如何加入新的文字? (a and i)

    我如何建立新的一行? (o and O)

    我如何删除文字? (x and dd)

    我如何拷贝文章内容? (yy and p)

    我如何使用数个指令? (nCommand)

    我如何搜寻文章? (/text)

    我如何起动 “vi” 于只读模式? (view)

    计算机信息

    我如何能观看开机记录文件? (dmesg)

    有什么方法可以让我慢慢地观看开机记录文件吗? (dmesg │more)

    显示谁在系统上? (who)

    他们正在做什么?? (w)

    “w” 可以显示出所有的处理吗? (w)

    何时

    我如何显示或设定日期时间? (date)

    我如何显示月历? (cal)

    有什么方法可以让我慢慢地观看月历吗? (cal │ more)

    通讯

    我如何显示 (或不显示) 其它使用者送来的讯息? (mesg y, mesg n)

    我如何传送讯息到其使用者的屏幕? (write)

    我如何送讯息到每一个人的屏幕? (wall)

    我如何与他人交谈 (chat)? (talk)

    档案管理

    我如何建立一个空档案? (touch)

    我如何删除档案? (rm)

    我如何建立一个目录? (mkdir)

    我如何移除一个空的目录? (rmdir)

    我如何移除一个目录包括里面所有的东西 (包括子目录)? (rm -r)

    我如何移除以 “-” 起头的档案? (rm — -filename)

    我如何拷贝档案? (cp)

    我如何拷贝整个目录包括它所有的内容? (cp -R)

    我该如何搬移档案与目录? (mv)

    我如何改变档案/目录名称? (mv)

    我如何执行 rm、cp 与 mv 时,须要我的许可? (-i)

    我如何执行 rm、cp 与 mv 时,不须要我的确认? (-f)

    档案连结

    我如何连结一个档案或目录? (ln -s)

    我如何 hard link 一个档案? (ln)

    档案拥有权/存取许可

    我如何观察谁是档案拥有者? (ls -l)

    我如何观察档案/目录的存取许可? (ls -l)

    我如何改变档案/目录的使用者拥有人? (chown)

    我如何改变档案/目录的群组拥有人?s group owner? (chgrp)

    我如何改变档案/目录的使用者与群组拥有人? (chown user:group)

    我如何改变存取许可? (chmod)

    如果我拥有这个目录,我可否修改不是我的档案? (yes)

    软盘机装置

    我如何挂上我的软盘? (mount)

    我如何挂上 MS-DOS 格式的软盘机? (mount -t msdos)

    我如何卸下我的软盘? (umount)

    应用程序

    我如何起动应用程序? (./)

    我如何由文件名称来起动应用程序? (PATH)

    我如何在背景起动应用程序? (&)

    我如何知道我的 PATH 是? (echo $PATH)

    所有的应用程序在那? (The FreeBSD Ports Collection)

    我如何安装一个 port? (make install clean)

    那里有编辑好的二进制文件? (The FreeBSD Packages Collection)

    我如何移除应用程序? (pkg_delete)

    使用者环境

    使用者的 profile 档案在那? (vi ~/.profile)

    我如何改变我的 shell? (chsh)

    处理管理

    我如何列出处理? (ps)

    我如何列找到处理? (ps -waux │ grep “name of the process”)

    我如何砍掉处理? (kill)

    磁盘管理

    我如何检查可用的磁盘空间? (df)

    我如何检查每个目录下用了多少磁盘空间? (du)

    工具

    哪里有计算器? (bc)