[筆記][FreeBSD] 升級系統 upgrade FreeBSD 6.2 release to 7.0 release

今天在 Sayya BBS 看到 JoeHorn 的個人版,裡面寫到 “[筆記] remote upgrade FreeBSD 6.2 -> 7.0” 這一篇文章,裡面寫的作法,我自己實做到我自己的機器,就成功了,作法如下 首先修改 /usr/share/examples/cvsup/stable-supfile,找到

# Defaults that apply to all the collections
#
# IMPORTANT: Change the next line to use one of the CVSup mirror sites
# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
*default host=CHANGE_THIS.FreeBSD.org
*default base=/var/db
*default prefix=/usr
# The following line is for 7-stable.  If you want 6-stable, 5-stable,
# 4-stable, 3-stable, or 2.2-stable, change to "RELENG_6", "RELENG_5",
# "RELENG_4", "RELENG_3", or "RELENG_2_2" respectively.
*default release=cvs tag=RELENG_6
*default delete use-rel-suffix
[Read More]

[Apache] mod_rewrite 進階用法,網域 redirect

我對 mod_rewrite 的技術相當有興趣,最近又有人在 ptt Linux 版上問到這相關的問題,如下

我用的是虛擬主機 (web hosting) 他的管理是這樣的, 不論代管哪個domain 一律都是對應到 /home/user/public_html 這個目錄下 也就是說, 1.com 跟 2.com 都會對到 ~/public_html 問題是: –> 我希望有人輸入 “1.com” 時, 就是讀 ~/public_html/data1 –> 有人讀 “2.com” 時, 就是讀 ~/public_html/data2 當然目前如果都不做設定, 那就是要用 http;//1.com/data1/ 跟 http;//2.com/data2/ 才能答成相同功能. 請問 .htaccess 有辦法改寫這樣的狀況嗎.

[Read More]

[MySQL] 取代部份字串問題

剛剛在 ptt 遇到之前當兵的工作同事,話說他要去中華電信工作了,還真是不錯,他在 database 版問一個取代的問題,然後我幫他找一下答案,解決了,這可以用 sql 語法解決,或者是用程式都可以 問題:

在MySQL 我有大約50000筆資料 有個欄位像這樣 00400000010040050000 現在因故要把 004改成005 變成像這樣 00500000010050050000 我的解法:

UPDATE `test` SET `test` = CONCAT( '005', SUBSTRING( `test` , 4 ) )  WHERE
SUBSTRING( `test` , 1, 3 ) = '004'
有更快解法嗎? REPLACE 好像不行,因為後面數字也會被改到,不過還是主要用 SUBSTRING

[Proftpd] 如何讓 /bin/false 跟 /sbin/nologin 連上 Proftpd

昨天遇到這個問題,不過其實之前就有解決過這問題,只是忘記怎麼解決,之前是利用 MySQL 的方式建立帳號,因為相當方便,請參考這篇 [Linux] Ubuntu 6.06 Proftpd + Mysql 安裝方式,支援 /bin/false 跟 /sbin/nologin 也相當簡單 只要在 proftpd.conf 加上

RequireValidShell on
官網寫的

config_ref_RequireValidShell 然後在編輯 /etc/shells 加上

/sbin/nologin

[MYSQL] 忘記 root 密碼,登不進去 phpMyAdmin 教學

2011.06.24 Update: 修改語法 剛剛在處理老闆的機器移機問題,雖然有給我 root 權限,可是 MySQL 密碼沒有給我 root 的,然後我去看程式,都沒有用到 root ,都是用普通使用者,所以就上網找一下忘記密碼怎麼處理,其實找到的方法就是利用 command line 的方法,相當方便,最終解決方法還是文字介面,作法如下 首先先 Kill 掉所有 MySQL 的連線

# on Linux
/etc/init.d/mysqld stop
# on FreeBSD
/usr/local/etc/rc.d/mysql-server stop
killall -9 mysqld
然後進入 MySQL 安全模式
mysqld_safe -u root --skip-grant-tables &
然後利用文字介面修改 MySQL root 密碼
$ mysql -u root -p
> use mysql;
> UPDATE user SET password=password('這裡輸入你的密碼') where user='root';
> FLUSH PRIVILEGES;
> exit;

dump database

$ mysqladmin -uroot -p flush-logs
$ mysqldump -B -uroot -p --opt phpbb2 > phpbb2_20020601.sql --databases 或 -B 日後會自動建立該資料庫

dump table

mysqldump phpbb2 -uroot -p --opt phpbb2_users > phpbb2_users_20020601.sql

DB backup 如果另外一台電腦上沒有phpbb2這個DB記得要新增一個

mysql -uroot -p -e "CREATE DATABASE phpbb2"
then mysql phpbb2 -uroot -p < phpbb2_20020601.sql[/code] Reference

http://www.study-area.org/tips/mysql_backup.htm

[UNIX] bash 記憶指令 For Linux

在 FreeBSD 裡面,要做到這樣非常方便,當我們在終端機輸入 vi 之後按下 Up 鍵,終端機會顯示之前下過的 vi 指令,這在常常使用 command 的使用者來講相當方便,也非常重要,在 FreeBSD 底下,只要在 .cshrc 裡面加上

bindkey “^W” backward-delete-word bindkey -k up history-search-backward bindkey -k down history-search-forward 可是在 linux 底下要如何達到這樣呢,那就是 man bash『history-search-backward』,『history-search-forward』這兩個功能,對我來說非常重要,然而你要達到這功能,就是利用 showkey 跟 bind 這兩個指令 首先你要先找到 Up 這個鍵的 16 位元的編碼

showkey -a

Press any keys - Ctrl-D will terminate this program

^[[A     27 0033 0x1b
         91 0133 0x5b
         65 0101 0x41
然後在 bind 上去,寫到 /etc/bashrc 地下就可以了
bind '"\x1b\x5b\x41":history-search-backward'
bind '"\x1b\x5b\x42":history-search-forward'
我之前有寫一篇

[Ubuntu] bash 記憶指令,也可以參考看看

[FreeBSD] ipfw + Nat 無線網卡當內部DHCP Server

之前在寫 [FreeBSD] 無線網卡架設AP Server DWL-G520 Ralink RT2561 這篇的時候,是利用 pf 當作防火牆,可是我偏好使用 ipfw 來作防火牆的工作,所以今天研究一下 nat 的作法,ipfw Firewall 設定方法。 請先參考設定 IPFW 編譯核心:[FreeBSD] 系統核心支援ipfw 更新kernel

  • 系統:FreeBSD 6.2-RELEASE or STABLE 200709
  • 網卡:一張有線網卡,另一張無線網卡 目前的架構,一張有線網卡對外,然後無線網卡對內,架設dhcp伺服器,提供ap的功能,會加上 802.1X 認證,這我晚一點會寫教學 目前要先修改 /etc/rc.conf
# 第一片網卡固有的設定:
ifconfig_rl0="inet 140.123.107.XX netmask   255.255.255.0"

# 只用一片網卡時,將第一片網卡虛擬出另一個IP(如果使用兩片網卡,就不要設這一行,或者註解起來也可)。
ifconfig_rl0_alias0="inet   192.168.1.254 netmask   255.255.255.0"

# 如果你有第二片網卡時,將此網卡設定如下(當然啦,這一行的註解就應該取消,第二塊網卡才會有作用)。
# ifconfig_ral0="inet   192.168.1.254 netmask   255.255.255.0"

# 宣告本主機可做為gateway(通訊閘)
gateway_enable="YES"

# 宣告防火牆(IP-FIREWALL)
firewall_enable="YES"
firewall_type="simple"
firewall_quiet="YES"
tcp_extensions="YES"

# 定義 NATD 的網路卡介面,應定義在設定 public IP 的網卡代號上。
natd_interface="vr0"
natd_enable="YES"
然後 /etc/netstart 重新啟動網卡 再來是設定防火牆 ipfw 檔案在 /etc/rc.firewall 先備份原來的檔案 cp /etc/rc.firewall /etc/rc.firewall.bak 然後修改 /etc/rc.firewall
此設定是限制192.168.1.~254 整個網域,server DHCP ip 是設192.168.1.254

#!/bin/sh

/sbin/ipfw -f flush

/sbin/ipfw add pass all from 127.0.0.1 to 127.0.0.1 //設定server本機可以跟server本機通訊

/sbin/ipfw add divert natd all from any to any via rl0 //設定nat可以任何通行

/sbin/ipfw add pass all from 127.0.0.1 to any //讓本機可以通行到任何地方

/sbin/ipfw add pass all from 192.168.1.255 to any //如果有設dhcp一定要設這行

/sbin/ipfw add pass all from 192.168.1.1/24 to 192.168.1.254 //讓內部ip全部可以連上本機

/sbin/ipfw add pass all from 192.168.1.1/24 to 168.95.1.1 //開放hinet dns給使用者

#開放所有通行給該ip

/sbin/ipfw add pass all from 192.168.1.1 to any

/sbin/ipfw add pass all from 192.168.1.2 to any

/sbin/ipfw add pass all from 192.168.1.3 to any

/sbin/ipfw add deny all from 192.168.1.1/24 to 140.112.90.74
/sbin/ipfw add deny all from 192.168.1.1/24 to 140.112.90.72

# ================
# 其餘的(all)都放行了,NAT 和 FireWall 都需要設定這一行。
/sbin/ipfw   add   pass   all   from   any   to   any
這樣大致上就ok了~

[FreeBSD] 無線 AP 鎖定使用者 MAC Address

在之前的文章已經提到如何利用一張無線網卡架設 AP 伺服器,[FreeBSD] 無線網卡架設AP Server DWL-G520 Ralink RT2561,但是如何跟外面賣得產品一樣可以鎖mac呢,雖然mac的竄改相當普遍,linux底下只要下一個指令就可以達到了,不過你要知道別人的mac還蠻難的吧,除非你跟她同一網域,所以底下就介紹在freebsd底下如何做到。 在linux底下其實很簡單,因為google一下就好了 http://madwifi.org/wiki/UserDocs 這個網頁相當豐富,教你如何在linux底下實做ap跟鎖MAC。

Steps 1. First, make sure your card is not set to any particular mode or essid. 2. Run: * To flush the list of MAC addresses: iwpriv ath0 maccmd 3 * To make the list a whitelist: iwpriv ath0 maccmd 1 3. Put the card in master mode: iwconfig ath0 mode master essid test ifconfig ath0 up 4. At this point, nothing will be able to connect to the AP, since the whitelist is empty. To rectify this, you need to add some MACs to the list: iwpriv ath0 addmac 00:01:02:03:04:05 在 FreeBSD 底下,作法也蠻容易的,就是利用 ifconfig 這個指令就可以做到了,底下是我 man ifconfig 看到的

[Read More]

[FreeBSD] 無線網卡架設AP Server DWL-G520 Ralink RT2561

今天終於搞定了這張網卡,同樣的 DWL-G520 有兩種版本,一個是 Atheros 另一個就是大廠 ralink 了,不過話說我自己已經把 Atheros 晶片的無線網卡實做過一個ap server了,其實也不難啦,不過之前在搞 ralink 的晶片的時候,是可以驅動,可是就是弄不起來ap,後來怎麼解覺得呢,那就是換freebsd的版本,我之前是在 FreeBSD 6.2 release 底下弄的,我換到 FreeBSD 6.2-STABLE-200709版本,就馬上抓到,然後就進行ap的架設,後來就成功了,相當爽,畢竟可以繼續惡搞其他東西了。 接下來教大家如何安裝了,系統配備如下

  • 硬體:i386 PC Intel P4 1.6G
  • 記憶體:256M RAM
  • 網卡:2 片網卡 ( 一般 100M 網卡 + 一片 D-Link DWL-G520 54G無線網卡 )
  • 作業系統:FreeBSD 6.2 Stable
[Read More]

[FreeBSD] 安裝 memcache for php 多重伺服器共享 Session

今天來玩看看 memcache 看看,話說 memcache 是個非常好用的東西,可以參考官網作法 連結,其實我在前一個工作,就有老闆問我說,像公司作這麼多網站,有沒有辦法統整成一個,然後底下各種服務,只需要登入過一次就好,而不必重複登入,畢竟會讓使用者覺得很煩,所以就有了 memcache 這東西出來,底下就來介紹 FreeBSD 的安裝方式

  • 安裝方法: 安裝 ports 的套件 memcache 跟 pecl-memcache
cd /usr/ports/databases/memcached; make install clean
cd /usr/ports/databases/pecl-memcache; make install clean
然後他會把 extension=memcache.so 寫到 /usr/local/etc/php/extensions.ini 然後你只需要重新啟動 apache 即可,還有把 memcached 服務打開 所以請下底下指令
echo "memcached_enable=\"YES\"" >> /etc/rc.conf
/usr/local/etc/rc.d/memcached start
/usr/local/etc/rc.d/apache22 restart
[Read More]