2014年2月18日

deploy時常用的linux指令

本篇為在linux server上做deploy時常會用到的指令筆記

連線到遠端主機

假設我們要deploy的目標主機為192.168.1.100, 可以用下列方式連線

  • mac os:開啟[終端機]後輸入下列指令後接著輸入帳號、密碼

    ssh root@192.168.1.100
    
  • windows:需安裝支援ssh的軟體例如putty、pietty,接著填入連線資訊後執行連線即可

從遠端主機下載檔案

假設有3台機器,一台正式機(linux)、一台測試機(linux)、一台自已在使用的電腦(windows)。假設正式機的程式需要做更新,但更新的程式檔是放在測試機,有2個方式可以將測試機上的程式檔copy到正式機上

  1. 在自已的電腦裝sftp軟體,例如filezilla,接著先從測試將檔案下載下來自已電腦後再上傳到正式機上,這樣的方式比較直覺簡單但會多花一倍的時間在檔案傳輸上(測試機->本機->正式機)。如果檔案size很大的話就不適合用此方法。

  2. 直接從正式機直接從測試機下載檔案(測試機->正式機),指令如下

ssh root@192.168.1.100 (先從本機連到正式機)
sftp root@192.168.1.150 (再從正式機sftp到測試機)
ls (查詢測試機上的檔案,可配合cd, cd .. 來切換目錄)
get xxxx.zip (從測試機上下載檔案至正式機的當前目錄下)

實際的畫面大致如下(假設已事先連到正式機192.168.1.100)

[root@192.168.1.100]# sftp root@192.168.1.150
Connecting to 192.168.1.150...
root@192.168.1.150's password:
sftp> ls
gabriel_20140218.zip    kokola_20140218.zip    kokome_20140218.zip
sftp> get kokola_20140218.zip
Fetching root/kokola_20140218.zip to kokola_20140218.zip
/root/kokola_20140218.zip           100%  12100KB 121.4KB/s   00:00

基本檔案操作指令

  • 解壓縮 (只能解壓縮在當前目錄,要解壓縮在別的目錄的話請解壓縮完後再做搬移)
tar zxvf gabriel.tgz
unzip gabriel.zip
  • 壓縮目錄(可用在將當前的程式做壓縮備份)
tar zcvf gabriel.tgz gabriel
  • 搬移目錄 mv (可用在備份當前的程式,如果deploy失敗後再從備份還原)
mv gabriel bak/gabriel-20140217
  • 刪檔案 rm
rm gabriel.zip
  • 刪目錄(含底下的目錄、檔案)
rm -rf gabriel
  • copy目錄(含底下的目錄、檔案)
cp -af gabriel gabriel_bak

故障排除

當程式更新完且web server重開後,如果browser連不上時,可以用下列指令來檢查是否哪邊出了問題

  • 檢查80 port是否開啟
[root@192.168.1.100 ~]# netstat -an|grep 80
tcp        0      0 0.0.0.0:8009                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN
  • 檢查java process是否存在
[root@kokola WEB-INF]# ps aux|grep java
root      1615  0.0  0.0   5852   800 pts/0    S+   11:03   0:00 grep --color java
root     24957  0.4 22.4 821476 229064 ?       S<l  Feb12  40:34 /usr/java/latest/bin/java -Djava.util.logging.config.file=/usr/share/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/share/tomcat7/endorsed -classpath /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar -Dcatalina.base=/usr/share/tomcat7 -Dcatalina.home=/usr/share/tomcat7 -Djava.io.tmpdir=/usr/share/tomcat7/temp org.apache.catalina.startup.Bootstrap start
  • 檢查java用了哪些port
[root@192.168.1.100 ~]# netstat -apn |grep java
tcp        0      0 0.0.0.0:8009                0.0.0.0:*                   LISTEN      24957/java
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN      24957/java
tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      24957/java
  • 查看cpu狀況(看哪些process占用多少cpu資源)
[root@192.168.1.100 WEB-INF]# top

top - 10:59:49 up 13 days,  2:00,  1 user,  load average: 0.08, 0.06, 0.01
Tasks: 176 total,   1 running, 175 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.4%us,  0.6%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1020656k total,   782344k used,   238312k free,   159420k buffers
Swap:  2064376k total,   164140k used,  1900236k free,   135812k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1757 rabbitmq  10 -10  140m  18m 1584 S  1.7  1.8 242:23.18 beam.smp
 1480 root      20   0  2704 1136  868 R  0.7  0.1   0:00.52 top
24957 root      10 -10  802m 223m 5228 S  0.3 22.5  40:33.85 java

工具指令

  • 查看本機的ip
[root@kokola ~]# ifconfig
  • 查看當前系統時間
[root@192.168.1.100 WEB-INF]# date
二  2月 18 11:05:49 CST 2014

下列指令可修改系統時間,不過建議還是將該server設定time server,自動同步時間而非手動
date -s 22:10:30 改時間
  • 查看linux版本
cat /etc/redhat-release
  • 搜尋檔案 find
[root@kokola WEB-INF]# find / -name web.xml
/usr/share/apache-tomcat-7.0.42/webapps/kokola/WEB-INF/web.xml
/usr/share/apache-tomcat-7.0.42/webapps.backup/manager/WEB-INF/web.xml
/usr/share/apache-tomcat-7.0.42/webapps.backup/examples/WEB-INF/web.xml
/usr/share/apache-tomcat-7.0.42/webapps.backup/host-manager/WEB-INF/web.xml
/usr/share/apache-tomcat-7.0.42/webapps.backup/docs/WEB-INF/web.xml

設定ip

直接編輯/etc/sysconfig/network-scripts/ifcfg-eth0,在該檔案裡設定ip, mas, gateway...等, 存檔後需執行service network restart

[root@kokola WEB-INF]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
HWADDR=00:0c:29:55:24:b4
NETMASK=255.255.255.0
IPADDR=192.168.1.17
GATEWAY=192.168.1.1
TYPE=Ethernet

[root@kokola WEB-INF]# service network restart

改hostname

直接編輯/etc/sysconfig/network,在該檔案裡設定hostname

vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=kokola.maxkit.com.tw

查看檔案內容

如果deploy發生問題有可能是設定錯誤,可用下列指令看檔案的內容

less web.xml
檔案開啟後搭配下列指令
> (大於,畫面跳到頁尾)
b (往前一頁)
空白(往後一頁)
q (離開)