網路開展事業或在網路創業賺錢的第一步:【架設24小時賺錢網站主機】比網頁設計更優先!

感謝您造訪 Linux主機伺服器架設技術基地。 你可進入替你架設主機.影片教你維護頁面,詳細瞭解Linux主機架設及相關技術維護影片教學(完整配套措施),有主機馬上可以架設網站營運,完全無限制!

租用不如自有主機!聰明的網站經營者都選擇架設Linux主機伺服器做為網站運作平台,因功能完整又強大,免費架站程式超多!完全沒有版權問題,超強『防駭客攻擊與入侵』及安全防護可以讓你無後顧之憂。

                    架設主機.影片教你維護: http://por.tw/linux/new-E_learning/index.php

Linux主機伺服器架設技術基地  維護團隊  敬上
瀏覽模式: 普通 | 列表

Linux 常用指令使用方法大搜刮

Linux 常用指令使用方法大搜刮

1.# 表示權限使用者(如:root),$ 表示普通使用者
  開機提示:Login:輸入使用者名
  password:輸入密碼   使用者是系統註冊使用者完成登陸後,可以進入相應的使用者環境.
  離開現用的shell,輸入:exit

2.useradd netseek 加入一個netseek使用者
  passwd netseek  給netseek這個使用者設定密碼.
  (/etc/passwd /etc/group)
  userdel netseek 刪除帳號
  userdel -r netseek 刪除帳號連同自家目錄.
  [更詳細的操作請參閱man page,和帳號管理篇]

attachments/201304/3546101695.jpg

3.檢視指令
  ls -l                顯示檔案清單
  ls -al        -a 顯示所有檔案及目錄 (ls內定將檔案名或目錄名稱開頭為"."的視為隱藏檔,不會列出)
  ls -al |grep '^d'   顯示目錄
  ls -al |grep '^[^d]' 在一個目錄中查詢不包括目錄的所有檔案
  ls -sh        (man ls 檢視man說明.)
 
  linux幾種檔案類型:
  d    表示此檔案是一個目錄
  -    表示此檔案是一個普通檔案
  b    表示此檔案是一個特殊的塊裝置I/O檔案
  c    表示此檔案是一個特殊的字元裝置I/O檔案
  l    表示此檔案是一個連線檔案。在其檔名稱後緊跟與它連線的檔案路徑及名稱

  file 指令通過探測檔案內容判斷檔案類型

4.建立檔案和目錄
  touch 1.txt
  cat > 2.txt (用定向符建立檔案,填寫內容後,按ctrl+d儲存內容)
  mkdir mywork 建立mywork這個目錄

5.複製檔案或目錄
  cp filename1 filename2
  cp -r dir1 dir2 複製目錄
  cp -rf 參數f是刪除已經存在的目的檔案而不提示
  cp -i  參數i和f相反,在覆蓋目的檔案之前將給出提示要求使用者確認,回答y時目的檔案將被覆蓋,是交談式複製.

6.刪除檔案和目錄(刪除檔案或目錄都可以用rm搞定)
  rm 1.c //將1.c這個檔案刪除
  rm -rf (強制刪除檔案或目錄,刪除時不提示.)

7.移走目錄或是改檔名
  mv [opitons] 源檔案或目錄   目的檔案或目錄
  [options]主要參數
  -i:互動模式操作,如果mv操作將導致對已存在的目的檔案的覆蓋,此時系統詢問是否重寫,要求使用者回答「y」或「n」,
     這樣可以避免誤覆蓋檔案.
  -f:禁止互動操作。mv操作要覆蓋某個已有的目的檔案時不給任何指示,指定此參數後i參數將不再起作用。
  mv hello ../ 將hello目錄或是檔案搬移上一級.
 
8.alias 別名
  alias dir='ls -l'   輸入dir,其實就相當於執行了ls -l


9.權限的控制(rwx 421)
  chmod +x hello.sh 賦於可執行權限.
  (詳細介紹一下權限的控制)
  chmod 指令 權限修改 用法:chmod 一位8進位數 filename (rwx 421)
eg: chmod u+x filenmame      只想給自己運行,別人只能讀
  chown netseek.netseek mydir  改變使用者屬組


    u:表示檔案所有者
    g:表示同組使用者
    o:表示其它使用者
    a:表示所有使用者
    opt則是代表操作,可以為:
    +:加入某個權限
    -:取消某個權限
    =:賦予給定的權限,並取消原有的權限
    而mode則代表權限:
    r:可讀 4
    w:可寫 2
    x:可執行 1


10.pwd 顯示現用的目錄完整路徑和改變目錄
  cd netseek 進入netseek這個目錄
  cd 離開現用的目錄
  cd ../ 進入上一級目錄.
  cd - 返回上一次目錄
  cd ~ 返回主目錄

11. cat,more,less 指令
  將某個檔案的內容顯示出來,兩個指令不同的是:cat 把檔案內容一直列印出來,而more則分展顯示.
  less 可以上下翻滾檢視內容.
  cat > 1.txt 可以填寫或是複製內容,按ctrl+d儲存
  cat 1.c
  more 1.c
  head -n filename 顯示第N行的內容
  tail -n filename 顯示後N行的內容
  tail -n 20 /var/log/message 顯示最新的20行日誌

12.設定linux時間和日期
  date 指令("date MMDDhhmmYYYY.ss")
  2006年7月24日12:37 ,30秒
  date 072412372006.30
  date -s 20:30:30 #設定系統時間為20: 30:30
  date -s 2006-7-24 #設定系統時期為2006-7-24
  clock -r #對系統Bios中讀取時間參數
  clock -w #將系統時間(如由date設定的時間)寫入Bios

13.檢視找檔案(find,grep,awk更多的請參照man page或shell寫程式專題講解)
  幾種介紹:
  find 路徑  -name 檔名
  find /etc -name named.conf
  locate 通過檔名搜尋檔案的工具(要先通過updatedb建立索引資料庫)
  localte named.conf
  whereis 是尋找二進位檔案,同時也會找到其說明檔案
  which 和where 相似,只是我們所設定的環境變量中設定好的路徑中尋找;比如;

14.查殺程式
  ps aux
  ps -ef |grep
  kill -9
  看看哪個程式佔用的記憶體最大
  ps -aux|sort +5n

  將程式放在前後台執行
  cp file1 file2 &
  &與ctrl+z 你可以使用&或ctrl+z來將指令放在後台執行.
  fg 是將放在後台執行的程式再放回前台.
  jobs

15.dd指令備份
  dd if="input_file" of="out_file" bs="block_size" count="number"
  參數:
  if:就是input file可以是裝置
  of:就是output file也可以是裝置
  bs:規劃的一個block的大小,如果沒有設定時,預設是512bytes
  count:多少個bs的意思.

  dd if=/etc/password of=/tmp/passwd.bak 備份

16.mount 加載一個硬體裝置
用法:mount [參數] 要加載的裝置 載入點
eg: mount /dev/cdrom
cd /mnt/cdrom //進入光碟目錄
   u盤:
   mkdir /mnt/usb;(註:建立掛載目錄)
   mount /mnt/sda1 /mnt/usb;(註:掛載USB磁碟)
   現在就可以使用USB磁碟了,在/mnt/usb目錄下的內容就是USB磁碟裡的內容了;
   使用完後,用以下指令卸載USB磁碟即可。
   umount /mnt/usb
   mount     列出系統所有的分區
   mount -t iso9660 /dev/cdrom /mnt/cdrom   掛載光碟
   mount -t vfat /dev/fd0 /mnt/floppy       掛載軟碟
   mount -t vfat -o iocharset=utf8,umask=000 /dev/hda2 /mnt/hda2   掛載fat32分區
   mount -t ntfs -o nls=utf8,umask=000 /dev/hda3 /mnt/hda3         掛載ntfs分區
   Linux-NTFS Project: http://linux-ntfs.sourceforge.net/
   umount /mnt/hda3 卸載
   注:掛載裝置前,請先fdisk -l 看一下.

17.su在不離開登陸的情況下,切換到另一個身份
    用法: su -l 使用者名(如果使用者名預設,則切換到root狀態)
eg:su -l netseek (切換到netseek這個使用者,將提示輸入密碼),加上-表示切換到使用者的環境變量.
   
    sudo 利用他可以執行root執行的權限

18.whoami,id,w,lastlog,users,groups
   w       檢視使用者登陸訊息
   who     檢視現用的登陸使用者
   last    最近一個月使用者登陸情況
   lastlog 檢查某特定使用者上次登入的時間,並格式化輸出上次登入日誌/var/log/lastlog的內容
   whoami  確認自己身份.
   id      列印出自己的UID以及GID.(UID:使用者身份唯一標識.GID:使用者組身份唯一標識.每一個使用者只能有一個唯一的UID和GID.)
   users
   groups  使用者所歸屬的使用者組查詢;
   finger -l netseek root
   finger -s 或是直接finger
   可以讓使用者查詢一些其他使用者的資料
eg: finger //檢視所用使用者的使用資料
finger root //檢視root的資料


19.使用者用過的指令和執行歷史執行的指令
   history 顯示使用者過去命用的指令
   !!執行最近一次的指令

20.uname 檢視linux系統訊息
   參數:-a 所有訊息 -r 版本號 -n 主電腦名

21.建立軟連線
   ln [-sf] source target
   ln souce-file hard-link
   ln -sf source-file soft-link
   s表示軟連線,f表示,若有同名檔案在,則將它覆蓋過去.
   註:硬連結不能為目錄建立,只有檔案才能建立硬連結。

22.檢視目錄
   du -sh   目錄或是檔案
   du -m    du系統預設輸出是以KB,以參數-m表示以MB顯示.
   cat /etc/fstab   檢視分區清單
   fdisk -l  
   df -h
   df -ah

23.檢視linux系統佔用的資源(top,free,uptime)
   top   檢視後台程式,監控系統效能
   top -d 2 每兩秒列新一次
   top -d -2 -p3690 檢視某個PID
   top -b -n 2 >/tmp/top.txt 將top的訊息進行2次,然後將結果輸出到/tmp/top.txt
   
   free -m 檢視系統記憶體使用情況

   uptime  顯示目前系統開機時間(檢視開機多久,多少人登陸,過去1,5,15分鐘系統的負載)


24.檔案比軟體:
   cmp  cmp(「compare」的縮寫)指令用來簡要指出兩個檔案是否存在差異,它的使用權限是所有使用者
   diff diff指令用於兩個檔案之間的比較,並指出兩者的不同,它的使用權限是所有使用者

25.遠端操作與檔案傳輸
   ssh user@remote.machine
   scp user@remote.machine:/remote/path /local/path
   scp /local/path user@remote.machine:/remote/path

26.編譯c/c++檔案
   gcc
   gcc -v 檢視GCC版本
   gcc -o test test.c 2>errfile 編譯test.c時若有錯誤訊息,則將錯誤訊息重導至errfile

27.chattr +i filename 禁止刪除,chattr -i filename 取消禁止
   lsattr 檢視隱藏檔屬性


28.自動化執行
   at 執行一次
   crontab 定時迴圈執行程式
   crontab 介紹
   1 以root登入
   2 # crontab -e
   3 加入一行
   1 */12 * * * /usr/sbin/ntpdate pool.ntp.org
   分鐘 (0-59)
   小時 (0-23)
   日 期 (1-31)
   月份 (1-12)
   星期 (0-6)//0代表星期天


29.關機和重啟:
   shutwond [-t 秒數] [-rkhncff] 時間 [警示訊息]
   -t 秒數:設定在切換至不同的runlevel之前,警示和刪除兩信號之彰間的延遲時間(秒)
   -k 發出警示訊息,但不是真的要shutdown
   -r shutdown這後重新開機
   -h shutdown這後開機
   -n 不經由init,由shutdown指令本身來做開機工作(不建議你使用)
   -f 重新開機時,略過fsck指令,不檢查檔案系統.
   -F 重新開機時,強迫做fsck檢查.
   -c 將已經正在shutdown的動作取消
   shutdown -h now 立刻關機,其中now相當於時間為0,halt,poweroff也可以關機,或是直接init 0
   shutdown -h 20:30  系統將在今晚的8:30關機
   shutdown -h +10    系統再過十分鐘後自動關機.
   shutdown -t3 -r now  立刻重新開機,但在警示和刪除processes這間,
   shutdown -k now  'Hey! Go away! now...' 發出警示訊息,但沒有真的關機.
   
   
   reboot:
   shutdown -r now 幾乎與reboot相同,不關建議用reboot執行如下:
   shutdown -r +30 'The system wiil reboot'
   shutdown -r +10 'Hey!Go away!'  10分鐘後系統重啟.
   #sync; sync; sync; reboot   註:sync將資料同步寫入硬碟
   halt指令相當於shutdown -h now ,表示立刻關機。
   reboot指令相當於shutown -r now ,表示立刻重起。

30.如何改變啟動模式運行層級
   vi /etc/inittab
   將5改成3,啟動後就可以變成字元模式。
   startx 或是 init 5 就可以進入圖形化介面.
   runlevel 顯示現用的運行層級

  如何切換至單使用者模式
  利用telinit或init(其實telinit只是一個synbol link to init)
  telinit 1 或是 init S 即可,當然telinit S也是可以的.

  如何使ctrl+alt+del 三鍵失效的方法
  #vi /etc/inittab
  在ca::ctrlaltdel:/sbin/shutdonw -t3 -r now之前加上注解#
  然後執行#telinit q ,參數q是要telinit重新檢查一次/etc/inittab

31.TAB  巧用tab鍵,當你不知道檔案或指令的全名是請連續按兩下tab鍵.

32.clear 清屏

33.dmesg |more 顯示開機訊息(檢視系統啟動時硬體訊息)
 
34.改變程式執行的優秀級
   nice    設定優先權 nice -n -5 vi & 用root給一個nice值為-5,用於執行vi
   renice  調整已存在優先權

35.模組關聯的指令
   lsmod 顯示已經載入系統的模組
   depmod 分析可載入系統的相依性
   modinfo 顯示kernel模組的訊息
   insmod  載入模組
   modprobe 自動處理可載入模組
   rmmod    刪除模組
 
36.chkconfig --list 顯示各種服務的狀態,利用chkconfig可以輕鬆管理init腳本.

37.linux的幾種解壓縮指令
   compress aaa  將aaa檔案壓縮成為aaa.Z
   compress -d aaa.z 將aaa.z檔案壓縮成aaa
   
   gzip aaa 壓縮指令
   gzip -d aaa.gz  解壓指令
   
   bzip2 -z filename 壓縮,同上加-d參數解壓
   bzcat filename.bz 檢視壓縮檔內容
   
   tar czvf aaa.tar.gz aaa 將目錄aaa壓縮成aaa.tar.gz
   tar -N '2007/03/01' -zcvf home.tar.gz /home 在/home當中,比2007/03/01新的檔案才備份.
   tar --exclude /home/cao -zxvf myfile.tar.gz /home/* /etc 要備份/home,/etc,但不要/home/cao
   cd /tmp; tar -cvf -/etc | tar -xvf - 將/etc/打包後直接解開/tmp底下,而不產生檔案.
   tar zxvf aaa.tar.gz 解壓縮指令.
   tar jxvf aaa.tar.bz2 解壓指令
   tar zxvf aaa.tar.gz -C /var/www 將aaa.tar.gz解壓到/var/www目錄下
   cpio -covB > [file|device] 備份
   cpio -icduv < [file|device] 復原

38.網路指令
   ifconfig 顯示或設定網路裝置,可以檢視現用的ip,類似於windows裡的ipconfig
   service network restart(/etc/rc.d/init.d/network restart) 重啟網路卡
   ifdown eth0 關閉網路卡
   ifup eth0 開啟網路卡
   route -n 檢視路由表
   route add -net 192.168.20.1 netmask 255.255.255.0 dev eth0
   
   netstat 檢視網路連線情況
   netstat -i 顯示網路卡運行情況
   netstat -r 檢視主電腦的路由清單
   
   traceroute
   
   hostname 顯示主電腦名
   hostname -i 顯示現用的主電腦名的IP.

39.系統整合管理選單.
   setup   系統服務管理指令
   ntsysv  設定系統服務


40.fdisk /mbr 刪除GRUB

41.資料庫啟動
啟動mysql:
service mysqld start(/etc/rc.d/init.d/mysqld start)
mysql -uroot -p 輸入密碼即可操作mysql資料庫.

啟動Oracle
su - oracle
$lsnrctl stop
$lsnrctl start
sqlplus /nolog
conn /as sysdba(connected)
startup



42.安裝軟體包
rpm包安裝:
rpm -ivh xxx.rpm         安裝rpm包
rpm -qa --last | less    根據安裝日期顯示已經安裝的包
rpm -qa |grep mysql -i   查詢系統是否安裝mysql包(-i,忽略大小寫)
rpm -e                   刪除安裝的軟體包
rpm -e mysql* --nodpes   強制刪除關聯的軟體包
rpm --test               測試安裝
rpm -qi                  查詢mysql套件的說明資料
rpm -qpl xxx.rpm         檢視rpm包內含的內容.
rpm -qc[d]               設定檔與說明檔
rpm -Uvh                 升級安裝
rpmbuild --bb SPECS/xxx.spec 重新裝將xxx.spec編譯成rpm包.
rpmbuild --rebuild packagename.src.rpm 重新把.src.rpm編譯成rpm包.

源程式碼編譯安裝(經典)
./configure              檢查系統訊息(./configure --help | more 說明訊息,可以看到關聯的參數設定)
make clean               清除之前留下的檔案
make                     編譯
make install             安裝
注:源程式碼包安裝,一般先將檔案解壓,安裝過程大致上面幾步,具體說明一般見解壓後目錄裡的(INSTALL,READEME說明.)

Linux主機加掛硬碟的方法:

Linux主機加掛硬碟的方法:

若您的 HD 還有其它空間,可按以下方式為之:

假設 hda 為 HD 的設備代碼。

1. 新增分割區

fdisk /dev/hda 再切出一塊分割區(量容請自訂),假設為 hda3;若不是 hda3,請自行變化。

2. 格式化

mke2fs -j /dev/hda3

3. 手動掛載 hda3

mkdir /hda3
mount -t ext3 /dev/hda3 /hda3

4. 把 /var/mail 改到 /hda3

cd /var
cp -Rp mail /hda3
mv mail mail.old
ln -s /hda3/mail mail

這樣 /var/mail 就變成是一個指向 /hda3/mail 的 softlink
等於是擴大了 /var/mail 的容量

5. 測試郵件收發狀況,若正常,就把 /var/mail.old 刪除

6. 設定 /etc/fstab

把以下設定加入 /etc/fstab 中,使開機時能自動掛載:
代碼:

/dev/hda3 /hda3 ext3 defaults 0 2
 

Linux主機電子郵件 Openwebmail + spamassassin 擋垃圾信的設定方法

首先先到官方網站看安裝的方式:

http://openwebmail.com/openwebmail/download/redhat/howto/spam/howto.txt

(裡面的第 4. 可以略過)

attachments/201304/5352430831.jpg

再來才是重頭戲,也是我卡了好幾天才發現的地方:

在 openwebmail.conf 裡面的設定找到 enable_spamcheck 這段,照以下的參數做修改就可以了。(下面的例子也把學習廣告信的功能也打開)

spamcheck_pipe                  /usr/bin/spamc  -c -x -t60 -u @@@USERNAME@@@
learnham_pipe                   /usr/bin/sa-learn --local --ham
learnspam_pipe                  /usr/bin/sa-learn --local --spam
enable_spamcheck                yes
enable_learnspam                yes
spamcheck_source_allowed        all

之後再照官方的說明文件,以 sample-spam.txt 寄一封測試的廣告信,如果設錯的話,在 openwebmail.log 裡面就會出現:

Sun Oct 24 21:52:06 2004 - [31314] (192.168.1.1) neo - spamscheck - pipe error - spamd error, exit=2
55, ret=From root@xxx.com  Sun Oct 24 21:52:01 2004

成功的話就會出現:

Sun Oct 24 22:18:20 2004 - [31484] (192.168.1.1) neo - spamcheck - spam 1000.0/10 found in msg <2004
1024141811.CF83A19434C@xxx.com>

另外廣告信學習的功能如果設定成功的話,在使用者點選學習功能的時候,在 log 裡就會看到類似以下的訊息:

Sun Oct 24 22:25:13 2004 - [31634] (192.168.1.1) neo - learnspam - 1 learned, 1 examined

如果學習的功能起不來,就要確定 CmdLearn.pm 是不是非 root 權限的人可以讀到? 如果不行的話,就下 chmod 打開權限就可以了。如果不確定 CmdLearn.pm 路徑的話可以下 #locate CmdLearn.pm 找看看。

但是要注意的是目錄的權限也要開,以我的環境 CmdLearn.pm 在 RH9 的 RPM 預設是裝在:

/usr/lib/perl5/site_perl/5.8.0/Mail/SpamAssassin/

而我是乾脆把整個目錄都把 Group 跟 Public 讀取跟執行的權限打開:

chmod 555 /usr/lib/perl5/site_perl/5.8.0/Mail/SpamAssassin/ -R

這樣每個使用者就可以開始使用 OpenWebMail 的擋廣告信及學習廣告信的功能了。

本文引用來至:http://www.neo.com.tw/archives/339

[MySQL改善] -- 如何使用SQL Profiler 效能分析器

mysql 的 sql 效能分析器主要用途是顯示 sql 執行的整個過程中各項資源的使用情況。分析器可以更好的展示出不良 SQL 的效能問題所在。
下面我們舉例介紹一下 MySQL SQL Profiler 的使用方法:

  • 首先,開啟 MySQL SQL Profiler

mysql> SELECT @@profiling;
+-------------+
| @@profiling |
+-------------+
| 0 |
+-------------+
1 row in set (0.00 sec)
mysql> SET profiling = 1;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @@profiling;
+-------------+
| @@profiling |
+-------------+
| 1 |
+-------------+
1 row in set (0.00 sec)
預設情況下 profiling 的值為 0 表示 MySQL SQL Profiler 處於 OFF 狀態,開啟 SQL 效能分析器後 profiling 的值為 1.

  • 通過 sql 效能分析器,我們來對照一下 下列語句前後 2 次執行過程的差異,對我們瞭解 sql 的詳細執行過程是非常有說明的。

mysql> create table t_engines select * from t_engines1;
Query OK, 57344 rows affected (0.10 sec)
Records: 57344 Duplicates: 0 Warnings: 0
mysql> select count(*) from t_engines;
+----------+
| count(*) |
+----------+
| 57344 |
+----------+
1 row in set (0.00 sec)
mysql> select count(*) from t_engines;
+----------+
| count(*) |
+----------+
| 57344 |
+----------+
1 row in set (0.00 sec)
mysql> SHOW PROFILES;
+----------+------------+-------------------------------------------------+
| Query_ID | Duration | Query |
+----------+------------+-------------------------------------------------+
| 26 | 0.10213775 | create table t_engines select * from t_engines1 |
| 27 | 0.00032775 | select count(*) from t_engines |
| 28 | 0.00003850 | select count(*) from t_engines |
+----------+------------+-------------------------------------------------+
15 rows in set (0.01 sec)
mysql> SHOW PROFILE FOR QUERY 27;
+--------------------------------+------------+
| Status | Duration |
+--------------------------------+------------+
| (initialization) | 0.00000425 |
| checking query cache for query | 0.00004050 |
| checking permissions | 0.00001050 |
| Opening tables | 0.00018250 |
| System lock | 0.00000450 |
| Table lock | 0.00001775 |
| init | 0.00001075 |
| optimizing | 0.00000550 |
| executing | 0.00002775 |
| end | 0.00000450 |
| query end | 0.00000325 |
| storing result in query cache | 0.00000400 |
| freeing items | 0.00000400 |
| closing tables | 0.00000500 |
| logging slow query | 0.00000300 |
+--------------------------------+------------+
15 rows in set (0.00 sec)
mysql> SHOW PROFILE FOR QUERY 28;
+-------------------------------------+------------+
| Status | Duration |
+-------------------------------------+------------+
| (initialization) | 0.00000350 |
| checking query cache for query | 0.00000750 |
| checking privileges on cached query | 0.00000500 |
| checking permissions | 0.00000525 |
| sending cached result to client | 0.00001275 |
| logging slow query | 0.00000450 |
+-------------------------------------+------------+
6 rows in set (0.00 sec)
mysql> SELECT sum( FORMAT(DURATION, 6)) AS DURATION FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID =27 ORDER BY SEQ;
+----------+
| DURATION |
+----------+
| 0.000326 |
+----------+
1 row in set (0.00 sec)
mysql> SELECT sum( FORMAT(DURATION, 6)) AS DURATION FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID =28 ORDER BY SEQ;
+----------+
| DURATION |
+----------+
| 0.000039 |
+----------+
1 row in set (0.00 sec)
mysql>
從上面的例子中我們可以清晰的看出 2 次執行 count 語句的差別, SHOW PROFILE FOR QUERY 27 展現的是第一次 count 統計的執行過程,包括了 Opening tables 、 Table lock 等操作 。而 SHOW PROFILE FOR QUERY 28 展示了第二次 count 統計的執行過程 , 第二次 count 直接從查詢快取中返回 count 統計結果,通過對照 2 次統計的總執行時間發現,快取讀的速度接近物理讀的 10 倍。通過使用 SQL 效能分析器可以說明我們對一些比較難以確定效能問題的 SQL 進行診斷,找出問題根源。
【PHP網頁開啟錯誤的解決方法】Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 7905 bytes) in

總教頭您好:
我網站架設後,出現:Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 7905 bytes) in

PHP網頁開啟錯誤(無法正確顯示)

請問總教頭我該如何處理?


總教頭回覆:
原因:
容許記憶體大小錯誤(容許記憶體不夠大)所產生的錯誤
致命錯誤:容許記憶體大小XXXXXXXX位元組用盡(嘗試配置XXXX位元組)

解決方法,如下:


1.請修改修改 php.ini

php.ini在Linux主機下的路徑:

 /etc/php5/apache2/php.ini

請用搜尋找到以下字串:

  memory_limit =

你會找到以下字串:
memory_limit = 16M      ; Maximum amount of memory a script may consume (16MB)

//找到這行原16M修改為32M

memory_limit = 32M

2.重新啟動apache2

語法:
service apache2 restart


=======================================================

主機伺服器的平台(Linux 與 Windows)有什麼不一樣,該如何選擇?

其實討論的再多,了解的人都會知道,Linux的平台是比較受到歡迎而且市占率最高的一種系統平台。
因此總教頭的建議:如果您的網頁是用微軟的程式語言開發的網站,或是您必須使用微軟開發的資料庫服務(MS SQL),只能使用 Windows系統的平台的話,那您就無從選擇,您就使用 Windows+IIS的虛擬主機服務商吧,
否則建議使用 Linux的虛擬主機平台服務。

attachments/201304/2847872769.jpg

所有由 Linux系統建立起的主機平台,因為 Linux系統本身就是所謂的開放源碼,遵循的是開放源碼的公約,不論任何人使用都是免費的。
虛擬主機服務商如果使用這樣的系統平台,和 Windows NT或是 IIS是以註冊人數的多寡計費,相較起來對虛擬主機服務商所負擔的成本是天壤之別。
不僅如此,Apache網頁伺服器也是免費的,平台上使用的 Email系統(sendmail)本身免費的,FTP伺服器也是免費的,您會了解到 Linux平台的虛擬主機成本比 Windows平台的虛擬主機成本便宜非常多!

不僅如此,Linux最被人稱讚的地方是系統核心簡單而且速度快,並且是一個原本就為了架構於多 CPU運作而生成的系統。
在同樣的硬體條件之下,Linux被認為有更大更快的能力同時處理上千筆不同的需求。
也因為如此,許多免費而且功能強大的軟體也都只適用於 Linux系統。
相對於 Windows系統,Linux平台的虛擬主機可以使用的免費軟體和工具會比 Windows系統更來得多樣。

如果您的網站只是一般的靜態網頁,那總教頭建議使用 Linux系統。
如果您的網站使用 PHP,Perl,mySQL,總教頭建議使用 Linux系統。
如果您的網站使用 ASP,VBScript,MS-SQL,那總教頭建議改成別的程式語言,來用 Linux系統吧,如果不改,那就使用 Windows平台囉!

 學員來信問道:
老師您好:
請問您的主機架設方案,所配送的電腦耗電量一年約花費多少成本?(因為我擔心電費問題....)
謝謝!


總教頭回覆:
我的經驗:架設主機後網站掛上Google點擊廣告
結果賺的錢用來付給:家裡的上網費、電費、水費、瓦斯費、大樓管理費、電話費....全部不用錢,還有賺!
所以你不用為『電腦耗電量一年約花費』多少成本煩惱!

總教頭架設之Linux主機,用儀器實際測量數據證明:用電54瓦(超省電!)
比一個100瓦家用燈泡省約一半!比各位一般300瓦的PC電腦省電多多!

attachments/201104/6584384162.jpg

結論:單單上網不架設主機的人是笨蛋!(因為不管你有沒有架設主機,上網費用都是一樣的!)
你現在知道為何要聘請專家幫你架設主機了吧?
架設一台可以賺錢(高效能、不耗電)的主機,要有多方的專要考量

一台Linux主機營運幾年下來,那成本可差大了!
所以勸告網友與學員(不要自己DIY)可以用與高效能是不一樣的!
備註:網友與學員不要寫信來問我如何省電與硬體配備規格!(別想來個撿現成的!)

需要架設主機服務,就是讓專業者整體規劃!

你要儘快擁有『Linux主機』讓他營運起來幫你賺錢!

自己用體力與時間賺錢太辛苦啦!
每個人一天都是24小時,休息與睡覺就要八小時,更何況不可能一整年都不休假....
用『Linux主機』幫你24小時賺錢(一年365天無修→你要怎樣找到更勤勞的賺錢方式?)
再說,距離是一個難以解決的難題(唯有網路無距離,能把商品賣到任何國家)
就算自己沒有商品,掛Google或聯盟行銷的商品也能賺到佣金與獎金
管他是那裡的人,只要『訪客』有點擊你就能有收入

我時常在想,養一個兒子或女兒就有可以將來養你一輩子嗎?
不!女而會嫁出去,而兒子要養老婆、還要養孫子、還要買房子、買車子、替孫子繳學費......
這就是台語講的『世傳世』一代傳一代(物種繁衍的宿命)不能怪也不能奢望。

我寧願養一台『Linux主機』來當自己後半輩子的依靠。
不管你多老,只要你能打鍵盤,就能賺錢(還怕老了或病了就沒有收入?)

年輕時就投入經營網路,有一台機器幫你賺錢(你一定會比較輕鬆)
經過幾年後你會發現:你的網站累積多少文章、照片、影片(數位內容)
那些(數位內容)都是你的網路資源,你也會發現有多少商機是因為你有網路
所以人家找上你,機會找上你,財富找上你(除非你不去經營他)

attachments/201201/0950512516.jpg

我時常出國,跟我一起出國的朋友都羨慕我,因為不管出國多久,旅遊多少天(我都是:天天有收入)你選擇怎樣的賺錢方式,就決定你要過怎樣的生活!
因為我選擇『網路事業』,只要帶著筆電或平版電腦,走道那裡都能遙控我的事業。


如何使用Linux架設NAT主機(Linux主機伺服器架設技術)

如何使用 Linux 來架設NAT主機,可以解決 IPv4 位址不足的現象。
目前所分配的 IPv4 Address 範圍有限,所建置的 NGN 專案無線 AP ,導致 IPv4 Address 不足。
而 IPv6 Address 尚未普及至全球,若單用 IPv6 Address 會造成某些點連線失敗,因此,我們仍建議可以建置 NAT 主機,以解決此一困境。

attachments/201304/8700375941.jpg

NAT主機基本概念:

 NAT 簡單來講,就是用 Linux Server 來架設一台 IP 分享器。
對外只需1個實體 IP ,對內卻可提供多組的 IP ,供整間電腦教室的電腦及網路設備,以虛擬 IP 上網,如同外面所賣的 IP 分享器一樣,它必須啟用 DHCP Server 以自動配送虛擬 IPv4 位址給終端設備。

Linux Server 的 NAT 功能,是利用 Netfilter 機制以 iptables指令達成的,它除了可以達成 IP 分享器的功能外,也可以鎖網路設備的 MAC 位置,令中毒的機器無法對外攻擊其他電腦。
詳細做法,請參考下文。

實作:

網卡設定

    * 一定要兩張網卡
          NAT 主機對 CPU 與 RAM 的要求不高,但是對網卡的要求較高,因此建議採用 INTEL 或 3COM 的網卡會較好,若真的有困難,至少要 RealTek 的 R8169(GB) 才可以。
          實體網卡的判別很簡單,打開終端機,把網路線插入,再下 dmesg 指令,若在訊息最下面看到「eth0: link becomes ready 」字樣,代表所插入的網卡介面是 eth0 。
          對外網卡使用實體 IPv4 位址
          對內網卡使用虛擬 IP 位址,網卡的設定值不得有 gateway 值
    * 依上述要求,主機網卡設定圖示如下


    * 修改 /etc/network/interfaces 內容示例如下
      root@nat:~# vi /etc/network/interfaces

autleth0 eth1
iface linet loopback

iface eth0 inet static
   address 163.26.108.132
   network 163.26.108.128
   netmask 255.255.255.128
   broadcast 163.26.108.255
   gateway 163.26.108.254

iface eth1 inet static
   address 192.168.1.1
   network 192.168.1.0
   netmask 255.255.255.0
   broadcast 192.168.1.255



啟動DHCP Server

    * 安裝 dhcp3-server 套件
      root@nat:# apt-get install dhcp3-server
    * 修改 /etc/default/dhcp3-server , 把要配送 ip 的網路卡代號寫入, 如下所例

INTERFACES="eth1"

    * Linux sqz 請注意,dhcp3-server 套件已改成 isc-dhcp-server (但安裝時仍是 apt-get install dhcp3-server)
          啟動程式可能變成 /etc/init.d/isc-dhcp-server
            root@dns:~# service isc-dhcp-server start|stop
          設定檔位置會變成 /etc/dhcp
          實際位置可以下指令
            root@dns:~# dpkg -L isc-dhcp-server 列出套件檔案列表得知
    * 修改 /etc/dhcp3/dhcpd.conf , 加至檔尾(以配送 192.168.1.0 為例)

# This is a very basic subnet declaration.
subnet 192.168.1.0 netmask 255.255.255.0 {
 range 192.168.1.51 192.168.1.200 ;
 option broadcast-address 192.168.1.255 ;
 option routers 192.168.1.1 ;
 option domain-name-servers 168.95.1.1, 168.95.192.1 ;
}

# 若要分配的是虛擬 IP, 這邊要手動額外加入網段
subnet 163.26.108.128 netmask 255.255.255.128 {

}


Linux sqz 記得改成 /etc/dhcp/dhcpd.conf



修改防火牆規則列

    * 修改 /etc/rc.local 下面所列的部分,皆是要修改的項目
      root@nat:~# vi /etc/rc.local

# 打開下面這四行
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
......
###-----------------------------------------------------###
# 設定外部網段 IP 及介面
###-----------------------------------------------------###
ech"Set external ......"
echo

# 不要忘了打開 FW_IFACE
FW_IP="163.26.108.132"
FW_IP_RANGE="163.26.108.128/25"
FW_IFACE="eth0"

###-----------------------------------------------------###
# 設定內部網段 IP 及介面
###-----------------------------------------------------###
ech"Set internal ......"
echo

LAN_IP="192.168.1.1"
LAN_IP_RANGE="192.168.1.0/24"
LAN_BCAST_ADRESS="192.168.1.255"
LAN_IFACE="eth1"

......

###-----------------------------------------------------###
# 打開 forward
###-----------------------------------------------------###
#ech"Enable ip_forward ......"
#echo

ech"1" > /proc/sys/net/ipv4/ip_forward

......

###-----------------------------------------------------###
# 啟動內部對外轉址
###-----------------------------------------------------###

$IPTABLES -t nat -A POSTROUTING -$FW_IFACE -j SNAT --to-source $FW_IP

    * 套用新規則列
      root@nat:~# service rc.local start
    * 檢查 NAT 是否已成功設定
      root@dns:~# iptables -t nat -L

    * 注意:改到此為止,只是啟動封包轉送功能,後續的通訊埠控管尚未處理。不過在南縣 NGN 的架構下,筆者建議只要做到此步驟就好,不必再設定通訊埠的控管,免得一些設備無法連線,反而成為網管的困擾。



通訊埠管制
不管制的作法


這個比較簡單,原 Linux 上的 /etc/rc.local 只要修改到可以轉送封包(虛擬 IP 可以上網),後面的規則保留不動,那就對了。


鎖通訊埠作法

    * 繼續修改規則列 /etc/rc.local
    * 維持 INPUT, OUTPUT, FORWARD 是開放,不必改,再把下面紅字的規則列加到範例中所示的位置

......
###-----------------------------------------------------###
# 啟動外部對內部轉址
###-----------------------------------------------------###
# 凡對 $FW_IP:8080 連線者, 則轉址至 192.168.1.3:80
#$IPTABLES -t nat -A PREROUTING -p tcp -d $FW_IP --dport 8080 -j DNAT --t192.168.1.3:80
###-----------------------------------------------------###

###-----------------------------------------------------###
# 拒絕某一內部 IP 使用某一通道
###-----------------------------------------------------###


#--------------------------------------------------------------------
# NAT對外連線鎖 TCP 埠,思考方向:不管進入封包,只管出去封包
# 被動式 ftp 在經過 port 21 協商後,開始傳資料時,會以本地端 1024:65535 對 ftp server:1024:65535溝通,只要限制
# 連線狀態為:「RELATED」及「ESTABLISHED」封包。即可避免 NAT 內電腦對外掃描,又可使用 FTP 服務
#--------------------------------------------------------------------
$IPTABLES -A FORWARD -$FW_IFACE -p tcp -s any/0 --dport 21 -j ACCEPT
$IPTABLES -A FORWARD -$FW_IFACE -p tcp -s any/0 --sport 1024:65535 --dport 1024:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT
# 對外 SSH 連線
$IPTABLES -A FORWARD -$FW_IFACE -p tcp -s any/0 --dport 22 -j ACCEPT
# 對外 SMTP 寄信
$IPTABLES -A FORWARD -$FW_IFACE -p tcp -s any/0 --dport 25 -j ACCEPT
# 對外 DNS 查詢
$IPTABLES -A FORWARD -$FW_IFACE -p tcp -s any/0 --dport 53 -j ACCEPT
# 對外瀏覽網頁(含某些特定通報點採81埠)
$IPTABLES -A FORWARD -$FW_IFACE -p tcp -s any/0 --dport 80:81 -j ACCEPT
# POP3 收信
$IPTABLES -A FORWARD -$FW_IFACE -p tcp -s any/0 --dport 110 -j ACCEPT
# NTPDate 網路校時
$IPTABLES -A FORWARD -$FW_IFACE -p tcp -s any/0 --dport 123 -j ACCEPT
# HTTPS
$IPTABLES -A FORWARD -$FW_IFACE -p tcp -s any/0 --dport 443 -j ACCEPT
# VNC → TCP port range: 5900 ~ 5906
$IPTABLES -A FORWARD -$FW_IFACE -p tcp -s any/0 --dport 5900:5906 -j ACCEPT
$IPTABLES -A FORWARD -$FW_IFACE -p tcp -s any/0 --dport 8080 -j ACCEPT
$IPTABLES -A FORWARD -$FW_IFACE -p tcp -s any/0 -j DROP

#--------------------------------------------------------------------
# UDP 埠的部分
#--------------------------------------------------------------------
# DNS查詢
$IPTABLES -A FORWARD -$FW_IFACE -p udp -s any/0 --dport 53 -j ACCEPT
# VOIP電話
$IPTABLES -A FORWARD -$FW_IFACE -p udp -s any/0 --dport 5060:5061 -j ACCEPT
$IPTABLES -A FORWARD -$FW_IFACE -p udp -s any/0 --dport 41000:41999 -j ACCEPT
$IPTABLES -A FORWARD -$FW_IFACE -p udp -s any/0 --dport 55000:65000 -j ACCEPT
$IPTABLES -A FORWARD -$FW_IFACE -p udp -s any/0 -j DROP


###-----------------------------------------------------###
# 拒絕外部 IP 連至內部 port 號
###-----------------------------------------------------###
......

 網路開展事業或在網路創業賺錢第一步:【架設壹台能24小時替你賺錢網站主機】
架設Linux主機,如果是使用中華電信固定制申請1固定IP(其固定IP之變更方法)

如果您架設Linux主機,是使用中華電信固定制,可免費申請1固定IP來架設主機
有這樣的好康(不申請者是:笨蛋!傻瓜!不懂得藉助網站不上班就可賺錢!)
有學員來信問道:如何更中華電信申請的固定IP呢?(需不需要親自到中華電信辦理?)

attachments/201301/3201564466.jpg

總教頭的回覆:
中華電信固定制申請1固定IP
(固定IP其變更方法如下):
1.請進入中華電信的固定制申請1固定IP網址:
http://service.hinet.net/2004/adslstaticip.php
用中華電信給你的帳號與密碼登入

2.點選『您目前IP配發的狀態為 : 八個動態IP 』
這樣就取消了原來的固定IP(全部都改成八個動態IP)

3.經過翌日再次進入請進入中華電信的固定制申請1固定IP網址
重新申請FTTB經濟型IP配發固定IP+7個動態IP
這樣,你就可以重新取得新的固定IP了!

備註:為何經過一日再重新申請呢?根據中華電信客服人的解釋是:你如果要買上申請
很有可能系統還是會配原來的IP給你
如果經過一日,那你的原來IP就分配給他人使用(你再次申請就會得到新的IP)
所以,你如果修改IP後也就不可以反悔(不可能又回覆原來的舊IP)
因此,如果你沒有特殊需要就不要亂變動IP
(網站經營雖然大部分人是使用網址登入,但是IP也是主機位址識別之一)
好啦!您如果需要變更IP,就使用上述方法試試看,如果還不行,那就打中華電信客服電話
就會有專人為您解說!

------------------------------------------------------

本Linux主機伺服器架設基地立志於收集各類Linux主機伺服器架設、網站架設及網頁設計技術教學資訊,便於本人和廣大網友及網友查詢檢索,無論公司或個人認為本站存在侵權內容均可與本站聯繫,任何此類反饋資訊一經查明屬實後,將立即移除!