1. 程式人生 > >Linux常用軟體安裝總結

Linux常用軟體安裝總結

首先說xshell一個好用的功能,如果你同時要管理幾臺一樣的伺服器組成的叢集,一臺一臺操作很麻煩,可以使用xshell選單欄——工具——勾選傳送鍵輸入到所有會話,這樣你在一個bash視窗輸入的指令,其它所有開啟的會話伺服器也都會執行這條指令。

1.安裝JDK

上傳jdk-7u45-linux-x64.tar.gz到Linux上

解壓jdk到/usr/local目錄 tar -zxvf jdk-7u45-linux-x64.tar.gz -C /usr/local/ -C 後面是指定要解壓的路徑,如果沒有-C及其後面的預設解壓到當前資料夾

配置環境變數,在/etc/profile檔案最後追加相關內容 vi /etc/profile

export JAVA_HOME=/usr/local/jdk1.7.0_45export PATH=$PATH:$JAVA_HOME/bin

$PATH是預設變數,新設定的PATH不能把原來的給覆蓋了,所以先寫原來的,冒號後面在寫新的bin路徑。

重新整理環境變數 source /etc/profile

測試java命令是否可用 java -version

2.安裝Tomcat

上傳apache-tomcat-7.0.68.tar.gz到Linux上

解壓tomcat

tar -zxvf apache-tomcat-7.0.68.tar.gz -C /usr/local/

啟動tomcat

/usr/local/apache-tomcat-7.0.68/bin/startup.sh

檢視tomcat程序埠

netstat -nltp

通過瀏覽器訪問tomcat http://192.168.0.101:8080/

3.安裝mysql

執行yum命令,刪除原來的MySQLlib庫和服務檔案

yum remove mysql mysql-server mysql-libs mysql-server;

查詢是否刪除乾淨

rpm -qa | grep mysql 或者 find / -name mysql

如果還有mysql檔案,執行“rm -rf 檔名”刪除殘留的MySQL檔案

將MySQL-client-5.5.48-1.linux2.6.i386.rpm和MySQL-server-5.5.48-1.linux2.6.i386.rpm拷貝到centos伺服器上。

安裝MySQL-server-5.5.48-1.linux2.6.i386.rpm

rpm -ivh MySQL-server-5.5.48-1.linux2.6.i386.rpm

如果報錯,說明需要安裝perl依賴,執行以下命令安裝perl依賴環境

yum install perl*這個命令基本上把perl的模組給安裝齊了。

如果再報缺少其它的依賴包,就使用yum一個一個的安裝,比如:yum install libaio.so.1。

解除安裝衝突的依賴包 繼續剛才的安裝,如果報類似於下面的

file /usr/share/mysql/charsets/README from install of MySQL-server-5.5.48-1.linux2.6.i386 conflicts with file from package mysql-libs-5.1.73-8.el6_8.x86_64 file /usr/share/mysql/charsets/Index.xml from install of MySQL-server-5.5.48-1.linux2.6.i386 conflicts with file from package mysql-libs-5.1.73-8.el6_8.x86_64

就是有衝突,一次解除安裝衝突包,比如:

rpm -e mysql-libs-5.1.73-8.el6_8.x86_64 --nodeps

如果成功,會看到進度條。 最後,有關於root密碼設定的提示,一定要記下來,推薦截圖儲存 我這個是5.5版本的,這個版本的提示是,先啟動server service mysql start 然後/usr/bin/mysqlsecureinstallation 命令去互動式修改root密碼

當我執行/usr/bin/mysqlsecureinstallation這條命令修改密碼時,它提示我需要先安裝client,那我就安裝client,但是安裝完之後記得還是要執行修改密碼那一步,因為我們是第一次進來沒有密碼,直接按回車進去設定即可。

rpm -ivh MySQL-client-5.5.48-1.linux2.6.x86_64.rpm

客戶端安裝成功後,記得還要用/usr/bin/mysqlsecureinstallation 命令去互動式修改root密碼

登入驗證

mysql -uroot -proot

查詢測試

show databases;

驗證成功,退出

exit;

安裝中途如果出現什麼問題導致無法繼續下去,把所有mysql東西解除安裝乾淨,重啟伺服器,再重新裝。

設定navicat可以連線 如果使用navicat連線不上,報“1130 host xxx is not allowed to connect mysql”那麼就需要執行下面這些配置。

1.在裝有MySQL的機器上登入MySQL mysql -u root -p密碼2.執行use mysql;3.執行update user set host = '%' where user = 'root';這一句執行完可能會報錯,不用管它。4.執行FLUSH PRIVILEGES;

4.安裝nginx

4.1安裝nginx

下載nginx

官網:http://nginx.org/

上傳並解壓nginx

tar -zxvf nginx-1.8.1.tar.gz -C /usr/local/src

-C後面是執行解壓路徑

編譯nginx 因為nginx是用c寫的,在不同的機器上需要編譯之後再執行,不然可能執行不起來,所以要對官方提供的原始碼進行編譯,這個預編譯其實就是一個檢查的過程。java中因為直接執行在了jvm機上,所以執行別人編譯打包之後的jar或war是沒問題的。

進入到nginx原始碼目錄(切記一定要進入到原始碼目錄在執行下面的檢查命令)cd /usr/local/src/nginx-1.8.1檢查安裝環境,並指定將來要安裝的路徑./configure --prefix=/usr/local/nginx如果報錯./configure: error: C compiler cc is not found說明缺少編譯包,使用YUM安裝缺少的包yum -y install gcc pcre-devel openssl openssl-devel

編譯安裝

make && make install

安裝完後測試是否正常:

執行下面命令啟動nginx/usr/loca/nginx/sbin/nginx檢視埠是否有ngnix程序監聽netstat -ntlp | grep 80

4.2配置nginx

配置反向代理 1.修改nginx配置檔案

server { listen 80; server_name mini1; #nginx所在伺服器的主機名反向代理的配置location / { #攔截所有請求 root html; proxy_pass http://192.168.0.21:8080; #這裡是代理轉向的目標伺服器 }}

上面這段話的意思是當我訪問http://mini1:80 時(80可以省略),請求會被轉發到http://192.168.0.21:8080 的tomcat伺服器上,/代表是所有的請求都被攔擊,亦即所有的請求都會被轉發至http://192.168.0.21:8080 ,當然你也可以配置靜態資源(比如css,html,圖片)不做轉發。 2.啟動mini1上的tomcat 3.啟動nginx

重啟或關閉nginx程序:/usr/local/nginx/sbin/nginx -s reload/usr/local/nginx/sbin/nginx -s stop參考網址:http://www.cnblogs.com/jianxie/p/3990377.html

動靜分離

動態資源 index.jsplocation ~ .*\.(jsp|do|action)$ { proxy_pass http://192.168.0.21:8080;}靜態資源location ~ .*\.(html|js|css|gif|jpg|jpeg|png)$ { expires 3d;}

配置完成後當請求動態資源jsp檔案時就會被轉發至http://192.168.0.21:8080 伺服器,請求靜態資源就不做轉發。

負載均衡 在http這個節下面配置一個叫upstream的,後面的名字可以隨意取,但是要和location下的proxy_pass http://後的保持一致。

http { 是在http裡面的, 已有http, 不是在server裡,在server外面 upstream tomcats { server http://192.168.0.21:8080 weight=1;#weight權重 server http://192.168.0.22:8080 weight=1; server http://192.168.0.23:8080weight=1;}解除安裝server裡location ~ .*\.(jsp|do|action) { proxy_pass http://tomcats; #tomcats是後面的tomcat伺服器組的邏輯組號}}

4.3設定nginx開機自啟動

新增配置檔案 在linux系統的/etc/init.d/目錄下建立nginx檔案,使用如下命令:(我建議可以在window下面編輯好之後再上傳到nginx上)

vim /etc/init.d/nginx

在nginx檔案中新增以下內容:

#!/bin/sh## nginx - this script starts and stops the nginx daemon## chkconfig: - 85 15# description: NGINX is an HTTP(S) server, HTTP(S) reverse \# proxy and IMAP/POP3 proxy server# processname: nginx# config: /etc/nginx/nginx.conf# config: /etc/sysconfig/nginx# pidfile: /var/run/nginx.pid# Source function library.. /etc/rc.d/init.d/functions# Source networking configuration.. /etc/sysconfig/network# Check that networking is up.[ "$NETWORKING" = "no" ] && exit 0nginx="/apps/nginx/sbin/nginx"prog=$(basename $nginx)NGINX_CONF_FILE="/apps/nginx/conf/nginx.conf"[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginxlockfile=/var/lock/subsys/nginxmake_dirs() { # make required directories user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` if [ -z "`grep $user /etc/passwd`" ]; then useradd -M -s /bin/nologin $user fi options=`$nginx -V 2>&1 | grep 'configure arguments:'` for opt in $options; do if [ `echo $opt | grep '.*-temp-path'` ]; then value=`echo $opt | cut -d "=" -f 2` if [ ! -d "$value" ]; then # echo "creating" $value mkdir -p $value && chown -R $user $value fi fi done}start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 make_dirs echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval}stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval}restart() { configtest || return $? stop sleep 1 start}reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo}force_reload() { restart}configtest() { $nginx -t -c $NGINX_CONF_FILE}rh_status() { status $prog}rh_status_q() { rh_status >/dev/null 2>&1}case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2esac

注意要把下面兩項配置修改成你自己的: nginx="/apps/nginx/sbin/nginx" 修改成nginx執行程式的路徑。 NGINXCONFFILE="/apps/nginx/conf/nginx.conf" 修改成nginx配置檔案的路徑。

新增執行許可權

chmod a+x /etc/init.d/nginx

現在就可以通過該指令碼對nginx服務進行管理了:

/etc/init.d/nginx start 啟動/etc/init.d/nginx stop 停止

終極方案——開機自啟動nginx 到上一步其實已經可以方便的管理了,但我還是比較懶,希望開機就自啟動nginx執行,可以使用chkconfig來設定。 先將nginx服務加入chkconfig管理列表:

chkconfig --add /etc/init.d/nginx

加完這個之後,就可以使用service對nginx進行啟動,重啟等操作了。

service nginx startservice nginx stop

設定開機自啟動:

chkconfig nginx on

使用下面命令確定是否加入了開機自啟動。

chkconfig | grep nginx

END 參考文件:http://blog.csdn.net/u013870094/article/details/52463026

5.安裝KeepAlived實現高可用

keepalive是一款可以實現高可用的軟體,通常部署在2臺伺服器上,分為一主一備。Keepalived可以對本機上的程序進行檢測,一旦Master檢測出某個程序出現問題,將自己切換成Backup狀態,然後通知另外一個節點切換成Master狀態。

5.1keepalived安裝

下載keepalived

官網:http://keepalived.org

將keepalived解壓到/usr/local/src目錄下

tar -zxvf keepalived-1.2.19.tar.gz -C /usr/local/src

進入到/usr/local/src/keepalived-1.2.19目錄

cd /usr/local/src/keepalived-1.2.19

開始configure

./configure --prefix=/usr/local/keepalived

-編譯並安裝

make && make install

5.2將keepalived新增到系統服務中

拷貝執行檔案

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

將init.d檔案拷貝到etc下,加入開機啟動項

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived

將keepalived檔案拷貝到etc下

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

建立keepalived資料夾

mkdir -p /etc/keepalived

將keepalived配置檔案拷貝到etc下

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

新增可執行許可權

chmod +x /etc/init.d/keepalived

也可以一次性執行以上命令:

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalivedcp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ mkdir -p /etc/keepalivedcp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.confchmod +x /etc/init.d/keepalivedchkconfig --add keepalived chkconfig keepalived on

新增keepalived到開機啟動

chkconfig --add keepalived chkconfig keepalived on

5.3配置keepalived虛擬IP

修改配置檔案: /etc/keepalived/keepalived.conf MASTER節點

global_defs {}vrrp_instance VI_1 { state MASTER #指定A節點為主節點 備用節點上設定為BACKUP即可 interface eth0 #繫結虛擬IP的網路介面 virtual_router_id 51 #VRRP組名,兩個節點的設定必須一樣,以指明各個節點屬於同一VRRP組 priority 100 #主節點的優先順序(1-254之間),備用節點必須比主節點優先順序低 advert_int 1 #組播資訊傳送間隔,兩個節點設定必須一樣 authentication { #設定驗證資訊,兩個節點必須一致 auth_type PASS auth_pass 1111 } virtual_ipaddress { #指定虛擬IP, 兩個節點設定必須一樣 192.168.33.60/24 #如果兩個nginx的ip分別是192.168.33.61,192.168.33.62,則此處的虛擬ip跟它倆同一個網段即可 }}

BACKUP節點

global_defs {}vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 99 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.33.60/24 }}

測試: 分別啟動兩臺機器上的keepalived

service keepalived start

殺掉master上的keepalived程序,你會發現,在slave機器上的eth0網絡卡多了一個ip地址 檢視ip地址的命令: ip addr

5.4配置keepalived心跳檢查

原理: Keepalived並不跟nginx耦合,它倆完全不是一家人 但是keepalived提供一個機制:讓使用者自定義一個shell指令碼去檢測使用者自己的程式,返回狀態給keepalived就可以了 MASTER節點:

global_defs {}vrrp_script chk_health { script "[[ `ps -ef | grep nginx | grep -v grep | wc -l` -ge 2 ]] && exit 0 || exit 1" interval 1 #每隔1秒執行上述的指令碼,去檢查使用者的程式ngnix weight -2}vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 1 priority 100 advert_int 2 authentication { auth_type PASS auth_pass 1111 } track_script { chk_health } virtual_ipaddress { 10.0.0.10/24 } notify_master "/usr/local/keepalived/sbin/notify.sh master" notify_backup "/usr/local/keepalived/sbin/notify.sh backup" notify_fault "/usr/local/keepalived/sbin/notify.sh fault"}

新增切換通知指令碼

vi /usr/local/keepalived/sbin/notify.sh

內容如下:

#!/bin/bashcase "$1" in master) /usr/local/nginx/sbin/nginx exit 0 ;;backup) /usr/local/nginx/sbin/nginx -s stop /usr/local/nginx/sbin/nginx exit 0 ;; fault) /usr/local/nginx/sbin/nginx -s stop exit 0 ;; *) echo 'Usage: notify.sh {master|backup|fault}' exit 1 ;;esac

新增執行許可權 chmod +x /usr/local/keepalived/sbin/notify.sh

在第二臺機器上新增notify.sh指令碼

分別在兩臺機器上啟動keepalived

service keepalived start chkconfig keepalived on

6.虛擬機器克隆

嚴格來說這不屬於安裝軟體的範疇,但是為了總結方便,也把虛擬機器的克隆放在這裡記一下: 有時候我們在虛擬機器模擬叢集的時候需要多臺linux伺服器,如果一臺已經安裝好了,這時就可以採用克隆的辦法去快速生成多臺liunx伺服器。 虛擬機器桌面上,選定你要克隆的虛擬機器——右鍵——管理——克隆,下一步下一步即可。 克隆完成後需要修改ip,主機名等配置:

修改hosts: vi /etc/hosts

192.168.85.102 mini2

修改sysconfig/network: vi /etc/sysconfig/network

HOSTNAME=mini1

修改resolv.conf vi /etc/resolv.conf

search mini1

修改ifcfg-eth0:

配置IP為:IPADDR=192.168.85.101刪掉UUID和HWADDR那兩行

刪除70-persistent-net.rules:

rm -rf /etc/udev/rules.d/70-persistent-net.rules

重啟即可使用:

reboot

7.從一臺linux登入到另一臺linux機器上並配置免密登入

從一臺linux登入到另一臺linux 現在假如有兩臺伺服器192.168.85.101和192.168.85.102,如果我想從101伺服器向102伺服器複製檔案,而又不想走xshell做一次中轉,那就可以直接從101登入到102上。liunx上的登入採用的是ssh協議的方式,分為客戶端和服務端,每一臺伺服器就是服務端,那什麼是客戶端呢,只需要輸入ssh即可,就相當於調出了linux這臺機器上的客戶端。

ssh 192.168.85.102

輸入yes和密碼,就可以從101上登入到102這臺伺服器上了,輸入exit可以退出102伺服器。 以magic使用者的身份登入102伺服器(前提是192.168.85.102伺服器上存在magic這個使用者)

ssh [email protected]

使用root使用者的身份將testfile檔案拷貝到192.168.85.102伺服器的apps資料夾下,scp就是在伺服器之間拷貝檔案的命令。

scp testfile [email protected]:/apps

配置免密登入 上面基本已經解決了前面的問題,但是有個缺陷,每次都需要輸入密碼,很麻煩,可以配置免密登入。ssh是遠端登入的安全外殼協議,提供兩種身份驗證機制:使用者名稱+密碼或者金鑰驗證。

配置主機之間的免密ssh登陸 假如從192.168.85.101要登陸192.168.85.102 在192.168.85.101上進行操作: 1.首先生成金鑰對:

ssh-keygen

中間有提示時,直接回車即可。 2.再將192.168.85.101的公鑰拷貝並追加到192.168.85.102的授權列表檔案authorized_keys中,使用下面命令執行。

ssh-copy-id 192.168.85.102

到此結束,安裝完成,直接ssh 192.168.85.102 不用輸