LINUX系統配置

LINUX系統配置

  1. Linux 安裝jdk方法;

     

  2. Linux Tomcat 安裝與配置

     

  3. Linux redis 安裝與配置

    (例1)

  4. Linux redis安裝配置(例2)

     

  5. NGINX 安裝

     

     

     

     

    Linux 安裝jdk方法

     

    JDK安裝
        tar.gz爲解壓後就可以使用的版本,這裏咱們將jdk-7u3-linux-i586.tar.gz解壓到/usr/local/下。
    1、解壓
    解壓到當前目錄:$ tar -zxvf /opt/setup/jdk-7-ea-bin-b145-linux-i586-07_jun_2011.tar.gz 

     

    2、環境配置
    ① $sudo vi /etc/profile 

     

    在末尾行添加
        #set java environment 
        JAVA_HOME=/usr/local/jdk1.7.0 (備註:注意路徑名) 
        CLASSPATH=.:$JAVA_HOME/lib.tools.jar 
        PATH=$JAVA_HOME/bin:$PATH 
        export JAVA_HOME CLASSPATH PATH 
    保存退出
    ③$ source /etc/profile 使更改的配置當即生效
    ④$ java -version 查看JDK版本信息,若是顯示出1.7.0證實成功

     

    使JDK在全部用戶中使用
    $ Vi /etc/profile.d/java.sh 新建一個java.sh執行文件,填入JDK相關環境配置信息,以下圖:

     

    $ chmod 755 /etc/profile.d/java.sh java.sh分配權限

     

     

    Linux Tomcat 安裝與配置

     

     

    1.到官網 http://jakarta.apache.org/tomcat 下載 apache-tomcat-7.0.2.tar.gz 安裝文件,JDK假設已經安裝完畢,接下來直接安裝Tomcat。
    2.安裝
    # tar -zxvf apache-tomcat-7.0.2.tar.gz
    # ls //會發如今當前目錄下,多出一個文件夾
    apache-tomcat-7.0.2 apache-tomcat-7.0.2.tar.gz
    # mv apache-tomcat-7.0.2 /usr/local/tomcat-7.0.2
    # mv apache-tomcat-7.0.2 /usr/local/tomcat-7.0.2
    3.設置環境變量
    # vi ~/.bashrc
    php

    if [ -f /etc/bashrc ]; then
    . /etc/bashrc
    fi
    //增長下面兩個內容,而後保存退出:wq 回車
    export CATALINA_BASE=/usr/local/tomcat-7.0.2
    export CATALINA_HOME=/usr/local/tomcat-7.0.2
    html

    4.驗證是否安裝成功
    # echo $CATALINA_HOME
    /usr/local/tomcat-7.0.2
    # echo $CATALINA_BASE
    /usr/local/tomcat-7.0.2
    java

    若是顯示上面內容,OK,已生效。若是不顯示,重啓一下系統,再試。 mysql

    4.啓動服務
    咱們先看一下linux所開的端口:
    # netstat –l
    linux

    # cd /usr/local/tomcat-7.0.2/bin
    # ls
    bootstrap.jar setclasspath.sh
    catalina.50.bat shutdown.bat
    catalina.50.sh shutdown.sh
    catalina.bat shutdown-using-launcher.bat
    catalina.sh shutdown-using-launcher.sh
    catalina.xml startup.bat
    commons-daemon.jar startup.sh
    commons-launcher.jar startup-using-launcher.bat
    commons-logging-api.jar startup-using-launcher.sh
    cpappend.bat tomcat5.exe
    digest.bat tomcat5w.exe
    digest.sh tool-wrapper.bat
    jmx.jar tool-wrapper.sh
    jsvc.tar.gz tool-wrapper-using-launcher.bat
    LauncherBootstrap.class tool-wrapper-using-launcher.sh
    launcher.properties version.bat
    service.bat version.sh
    setclasspath.bat
    //咱們要注意這個文件:startup.sh
    nginx

    #./startup.sh
    Using CATALINA_BASE: /usr/local/jakarta-tomcat-5.0.28
    Using CATALINA_HOME: /usr/local/jakarta-tomcat-5.0.28
    Using CATALINA_TMPDIR: /usr/local/jakarta-tomcat-5.0.28/temp
    Using JAVA_HOME: /usr/java/j2sdk1.4.2_04
    咱們在來一下linux如今所開的端口:
    # netstat –l
    c++

    是否是多了個8080端口呢!這個就是Tomcat的默認端口/
    好下面開始咱們的安裝測試了
    正則表達式

    http://localhost:8080
    是否是看到tomcat的Web頁面了。
    redis

    若是還沒看到,那就把放火牆關了。
    # service iptables stop
    清除防火牆規則:[ 肯定 ]
    把 chains 設置爲 ACCEPT 策略:filter [ 肯定 ]
    正在卸載 Iiptables 模塊:[ 肯定 ],
    sql

    好了。此次絕對沒問題了。

    5.Tomcat開機自動加載
    # vi /etc/rc.d/rc.local
    //顯示以下內容

    #!/bin/sh
    #
    # This script will be executed *after* all the other init scripts.
    # You can put your own initialization stuff in here if you don't
    # want to do the full Sys V style init stuff.

    touch /var/lock/subsys/local

    //增長下面一句話
    /usr/local/tomcat-7.0.2/bin/startup.sh

    這樣在系統重啓後就能夠自動啓動Tomcat(必定確信JDK安裝完而且好用,不然這些都將很差用)

    6.關閉服務
    # cd /usr/local/tomcat-7.0.2/bin
    # ./shutdown.sh
    Using CATALINA_BASE: /usr/local/tomcat-7.0.2
    Using CATALINA_HOME: /usr/local/tomcat-7.0.2
    Using CATALINA_TMPDIR: /usr/local/tomcat-7.0.2/temp
    Using JRE_HOME: /usr
    Using CLASSPATH: /usr/local/tomcat-7.0.2/bin/bootstrap.jar:/usr/local/tomcat-7.0.2/bin/tomcat-juli.jar

    7.獨立環境的測試

      (1) 測試Java的運行情況,以下命令:
    java -version
    javac -version
    看到版本號則表示JDK安裝成功

      (2) 測試Apache的運行情況,以下命令:
    /etc/rc.d/init.d/httpd restart ## 從新啓動Apache Server
    使用任意一瀏覽器,輸入服務器地址後回車,應該能夠看到Apache的默認主頁

      (3) 測試Jakarta-Tomcat的運行情況,以下命令:
    進入tomcat安裝目錄下面的bin目錄
    ./startup.sh ## 啓動jakarta-tomcat-4.1.24服務
    使用任意一瀏覽器,輸入服務器地址和端口號8080後回車,應該能夠看到jakarta-tomcat-4.1.24的默認主頁
    例如: http://localhost:8080
    ./shutdown.sh ## 關閉jakarta-tomcat-4.1.24服務

    8.在linux下面安裝tomcat後,打開時用戶名及密碼是什麼

    在 /usr/local/tomcat-7.0.2/conf/tomcat-users.xml 文件中。編輯這個文件,能夠修改用戶名和密碼,例如:

    <role name="manager-gui"/>
    <user name="root" password="admin" roles="manager-gui"/>?
    <role rolename="admin-gui"/>
    <user username="admin" password="admin" roles="admin-gui"/>

    用戶 root 是管理:Status和Tomcat Manager的。
    用戶 admin 是管理:Host Manager的。
    保存後從新啓動Tomcat。

    Linux redis 安裝與配置(例1)

    第一部分:安裝redis 
    但願將redis安裝到此目錄 

    1

    /usr/local/redis

    但願將安裝包下載到此目錄 

    1

    /usr/local/src

    那麼安裝過程指令以下: 

    1

    2

    3

    4

    5

    6

    7

    $ mkdir /usr/local/redis  

    $ cd /usr/local/src  

    $ wget http://redis.googlecode.com/files/redis-2.6.14.tar.gz  

    $ tar xzf redis-2.6.14.tar.gz   

    $ ln -s redis-2.6.14 redis #創建一個連接  

    $ cd redis  

    $ make PREFIX=/usr/local/redis install #安裝到指定目錄中

    注意上面的最後一行,咱們經過PREFIX指定了安裝的目錄。若是make失敗,通常是大家系統中還未安裝gcc,那麼能夠經過yum安裝: 

    1

    yum install gcc

    安裝完成後,繼續執行make. 

    在安裝redis成功後,你將能夠在/usr/local/redis看到一個bin的目錄,裏面包括瞭如下文件: 

    1

    redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis-server

    第二部分:將redis作成一個服務 

    1.複製腳本到/etc/rc.d/init.d目錄 
    ps: /etc/rc.d/init.d/目錄下的腳本就相似與windows中的註冊表,在系統啓動的時候某些指定腳本將被執行 
    按以上步驟安裝Redis時,其服務腳本位於:

    1

    /usr/local/src/redis/utils/redis_init_script 

    必須將其複製到/etc/rc.d/init.d的目錄下: 

    1

    cp /usr/local/src/redis/utils/redis_init_script /etc/rc.d/init.d/redis

    將redis_init_script複製到/etc/rc.d/init.d/,同時易名爲redis。

    若是這時添加註冊服務:

    1

    chkconfig --add redis

    將報如下錯誤:

    1

    redis服務不支持chkconfig

    爲此,咱們須要更改redis腳本。 

    2.更改redis腳本 
    打開使用vi打開腳本,查看腳本信息: 

    1

    vim /etc/rc.d/init.d/redis

    看到的內容以下(下內容是更改好的信息): 

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    #!/bin/sh 

    #chkconfig: 2345 80 90 

    # Simple Redis init.d script conceived to work on Linux systems 

    # as it does use of the /proc filesystem. 

         

    REDISPORT=6379 

    EXEC=/usr/local/redis/bin/redis-server 

    CLIEXEC=/usr/local/redis/bin/redis-cli 

         

    PIDFILE=/var/run/redis_${REDISPORT}.pid 

    CONF="/etc/redis/${REDISPORT}.conf" 

         

    case "$1" in 

        start) 

            if [ -f $PIDFILE ] 

            then 

                    echo "$PIDFILE exists, process is already running or crashed" 

            else 

                    echo "Starting Redis server..." 

                    $EXEC $CONF & 

            fi 

            ;; 

        stop) 

            if [ ! -f $PIDFILE ] 

            then 

                    echo "$PIDFILE does not exist, process is not running" 

            else 

                    PID=$(cat $PIDFILE) 

                    echo "Stopping ..." 

                    $CLIEXEC -p $REDISPORT shutdown 

                    while [ -x /proc/${PID} ] 

                    do 

                        echo "Waiting for Redis to shutdown ..." 

                        sleep 1 

                    done 

                    echo "Redis stopped" 

            fi 

            ;; 

        *) 

            echo "Please use start or stop as first argument" 

            ;; 

    esac 

    和原配置文件相比: 

    1.原文件是沒有如下第2行的內容的,

    1

    #chkconfig: 2345 80 90 

    2.原文件EXEC、CLIEXEC參數,也是有所更改。 

    1

    2

    EXEC=/usr/local/redis/bin/redis-server   

    CLIEXEC=/usr/local/redis/bin/redis-cli 

    3.redis開啓的命令,之後臺運行的方式執行。

    1

    $EXEC $CONF & 

    ps:注意後面的那個"&",便是將服務轉到後面運行的意思,不然啓動服務時,Redis服務將 

    佔據在前臺,佔用了主用戶界面,形成其它的命令執行不了。 
    4.將redis配置文件拷貝到/etc/redis/${REDISPORT}.conf 

    1

    2

    mkdir /etc/redis    

    cp /usr/local/src/redis/redis.conf /etc/redis/6379.conf

    這樣,redis服務腳本指定的CONF就存在了。默認狀況下,Redis未啓用認證,能夠經過開啓6379.conf的requirepass 指定一個驗證密碼。 

    以上操做完成後,便可註冊yedis服務:

    1

    chkconfig --add redis

    3.啓動redis服務 

    1

    service redis start 

    第三,將Redis的命令所在目錄添加到系統參數PATH中 

    修改profile文件:

    1

    vi /etc/profile

    在最後行追加: 

    1

    export PATH="$PATH:/usr/local/redis/bin"

    而後立刻應用這個文件: 

    1

    . /etc/profile  

    這樣就能夠直接調用redis-cli的命令了,以下所示: 

    1

    2

    3

    4

    5

    6

    $ redis-cli   

    redis 127.0.0.1:6379> auth superman   

    OK   

    redis 127.0.0.1:6379> ping   

    PONG   

    redis 127.0.0.1:6379>

    至此,redis 就成功安裝了。 

    總結下:在linux系統中安裝redis,或多或少都能碰到一些問題。在這次安裝中3個大部分, 
    1.下載,安裝,這裏使用到wget命令,make命令,我不太懂make命令的使用,並且一直擔憂make命令如何安裝到指定目錄下, 這次終於明白了。 
    2.如何將一個程序添加到服務,固然也對/etc/rc.d/init.d這個文件有所瞭解。 
    3.如何將一個程序的一些命令添加到系統參數中,直接輸入命令就能達到對某個程序的操做。 
    其實就是指定好環境變量。 
    下篇簡單使用jedis來對redis進行存取。 

     

    Linux redis安裝配置(例2)

     

    redis做爲NoSQL數據庫的一種應用,響應速度和命中率上仍是比較高效的。項目中須要用集中式可橫向擴展的緩存框架,作了一點調研,即使redis、memcached存在效率上的差別(具體比較參考http://timyang.net/data/mcdb-tt-redis/),但其實都能知足目前項目的需求;可是redis仍是比較風騷的,支持鏈表和集合操做,支持正則表達式查找key,目前項目緩存的結果大可能是鏈表,若是鏈表新增或者修改數據的話,redis就體現出了極大的優點(memcached只能從新加載鏈表,redis能夠對鏈表新增或者修改)

    1:下載redis
    下載地址 http://code.google.com/p/redis/downloads/list
    推薦下載redis-1.2.6.tar.gz,以前這個版本同事已經有成功安裝運行的經驗,redis-2.0.4.tar.gz 這個版本我安裝後沒法操做緩存數據,具體緣由後續再說

    2:安裝redis
    下載後解壓 tar zxvf redis-1.2.6.tar.gz 到任意目錄,例如/usr/local/redis-1.2.6

    解壓後,進入redis目錄
        cd /usr/local/redis-1.2.6 
        make 

    拷貝文件
    cp redis.conf /etc/ 這個文件時redis啓動的配置文件

    cd src
    cp redis-benchmark redis-cli redis-server /usr/bin/ #這個卻是頗有用,這樣就不用再執行時加上./了,並且能夠在任何地方執行



    設置內存分配策略(可選,根據服務器的實際狀況進行設置)
    /proc/sys/vm/overcommit_memory
    可選值:0、一、2。
    0, 表示內核將檢查是否有足夠的可用內存供應用進程使用;若是有足夠的可用內存,內存申請容許;不然,內存申請失敗,並把錯誤返回給應用進程。
    1, 表示內核容許分配全部的物理內存,而無論當前的內存狀態如何。
    2, 表示內核容許分配超過全部物理內存和交換空間總和的內存

    值得注意的一點是,redis在dump數據的時候,會fork出一個子進程,理論上child進程所佔用的內存和parent是同樣的,好比parent佔用的內存爲8G,這個時候也要一樣分配8G的內存給child,若是內存沒法負擔,每每會形成redis服務器的down機或者IO負載太高,效率降低。因此這裏比較優化的內存分配策略應該設置爲 1(表示內核容許分配全部的物理內存,而無論當前的內存狀態如何)

    開啓redis端口,修改防火牆配置文件
        vi /etc/sysconfig/iptables 

    加入端口配置
        -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT  (很差用這裏查查資料在說,暫時能夠不寫)

    從新加載規則
        service iptables restart
      

    3:啓動redis服務
        [root@Architect redis-1.2.6]# pwd 
        /usr/local/redis-1.2.6 
        [root@Architect redis-1.2.6]# redis-server /etc/redis.conf 

    查看進程,確認redis已經啓動

        [root@Architect redis-1.2.6]# ps -ef | grep redis 
        root       401 29222  0 18:06 pts/3    00:00:00 grep redis 
        root     29258     1  0 16:23 ?        00:00:00 redis-server /etc/redis.conf 

    若是這裏啓動redis服務失敗,通常狀況下是由於redis.conf文件有問題,建議檢查或找個可用的配置文件進行覆蓋,避免少走彎路,這裏建議,修改redis.conf,設置redis進程爲後臺守護進程

        # By default Redis does not run as a daemon. Use 'yes' if you need it. 
        # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. 
        daemonize yes 

    4:測試redis
        [root@Architect redis-1.2.6]# redis-cli 
        redis> set name songbin 
        OK 
        redis> get name  
        "songbin" 

    5:關閉redis服務
        redis-cli shutdown 

    redis服務關閉後,緩存數據會自動dump到硬盤上,硬盤地址爲redis.conf中的配置項dbfilename dump.rdb所設定
    強制備份數據到磁盤,使用以下命令

        redis-cli save 或者 redis-cli -p 6380 save(指定端口)

     

     

     

     

    NGINX 安裝

    安裝NGINX前要先安裝PCRE正則表達式庫:

    ./configure --prefix=/usr/local/pcre 出現如下錯誤  (通常./configure便可, 筆者這裏是直接./configure命令)
    configure: error: You need a C++ compiler for C++ support.  (解決辦法: yum install -y gcc gcc-c++)
    make
    make install

       

    下面開始安裝NGINX:

    安裝NGINX:
    yum install libtool
    yum install zlib zlib-devel

    yum install openssl

    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module
    make
    make install

    檢查是否安裝成功: 
    cd  /usr/local/nginx/sbin
    ./nginx -t
    ./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
    從錯誤看出是缺乏lib文件致使,進一步查看下:
    ldd $(which /usr/local/nginx/sbin/nginx)

    能夠看出 libpcre.so.1 => not found 並無找到,進入/lib目錄中手動連接下(這裏的/lib目錄指的是系統的根目錄下面的lib目錄)
    32位系統 [root@mysqlslave lib]# ln -s /usr/local/lib/libpcre.so.1 /lib
    64位系統 [root@mysqlslave lib]# ln -s /usr/local/lib/libpcre.so.1 /lib64

    結果顯示:
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

    啓動nginx:
    cd /usr/local/nginx/sbin 目錄下面 輸入 ./nginx  啓動nginx
    ps -ef|grep nginx

    netstat -nap|grep :80   //查看80端口被哪一個進程佔用
    service iptables stop   //把防火牆打開,不然nginx不能被訪問

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

    安裝完nginx後須要配置監聽的IP地址和端口,筆者這裏是針對memcached+tomcat6作的配置,進入nginx的安裝目錄,筆者這裏是/usr/local/nginx/conf這個目錄,打開nginx.conf這個文件作以下修改:

    [root@mysqlmaster conf]# less nginx.conf

    #user  nobody;

    #user www www;

    worker_processes  1;

    #error_log  logs/error.log;

    #error_log  logs/error.log  notice;

    #error_log  logs/error.log  info;

    #pid        logs/nginx.pid;

    pid         /usr/local/nginx/logs/nginx.pid;

    events {

        use epoll;

        worker_connections  1024;

    }

    http {

        include       mime.types;

        default_type  application/octet-stream;

          

        include       /usr/local/nginx/conf/proxy.conf;   #必定要指向代理文件

     

        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

        #                  '$status $body_bytes_sent "$http_referer" '

        #                  '"$http_user_agent" "$http_x_forwarded_for"';

     

        #access_log  logs/access.log  main;

     

        sendfile        on;

        #tcp_nopush     on;

        tcp_nopush     on;

     

        #keepalive_timeout  0;

        keepalive_timeout  65;

     

        #gzip  on;

     

        upstream backend {

            #    ip_hash;

            server 192.168.0.93:8080;

            server 192.168.0.92:8080;

            #jvm_route $cookie_JSESSIONID|sessionid reverse;

        }

        server {

            listen       80;

            server_name  192.168.0.93;

     

            #charset koi8-r;

            charset utf-8;

     

            #access_log  logs/host.access.log  main;

     

            location / {

                root   html;

                index  index.html index.htm;

                proxy_pass http://backend;

                #proxy_redirect default;

                proxy_set_header XReal-IP $remote_addr;

                proxy_connect_timeout 10;

                #client_max_body_size 100m;

            }

     

            #error_page  404              /404.html;

     

            # redirect server error pages to the static page /50x.html

            #

              

            location ~^/(WEB-INF)/ {

               deny all;

            }

     

            error_page   500 502 503 504  /50x.html;

            location = /50x.html {

                root   html;

            }

            # proxy the PHP scripts to Apache listening on 127.0.0.1:80

            #

            #location ~ \.php$ {

            #    proxy_pass   http://127.0.0.1;

            #}

            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

            #

            #location ~ \.php$ {

            #    root           html;

            #    fastcgi_pass   127.0.0.1:9000;

            #    fastcgi_index  index.php;

            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

            #    include        fastcgi_params;

            #}

            # deny access to .htaccess files, if Apache's document root

            # concurs with nginx's one

            #

            #location ~ /\.ht {

            #    deny  all;

            #}

        }

        # another virtual host using mix of IP-, name-, and port-based configuration

        #

        #server {

        #    listen       8000;

        #    listen       somename:8080;

        #    server_name  somename  alias  another.alias;

     

        #    location / {

        #        root   html;

        #        index  index.html index.htm;

        #    }

        #}

        # HTTPS server

        #

        #server {

        #    listen       443;

        #    server_name  localhost;

        #    ssl                  on;

        #    ssl_certificate      cert.pem;

        #    ssl_certificate_key  cert.key;

        #    ssl_session_timeout  5m;

        #    ssl_protocols  SSLv2 SSLv3 TLSv1;

        #    ssl_ciphers  HIGH:!aNULL:!MD5;

        #    ssl_prefer_server_ciphers   on;

        #    location / {

        #        root   html;

        #        index  index.html index.htm;

        #    }

        #}

    }

    還須要在/usr/local/nginx/conf目錄下手動創建proxy.conf文件,內容以下:

    proxy_redirect          off;

    proxy_set_header        Host $host;

    proxy_set_header        X-Real-IP $remote_addr;   #獲取真實IP

    #proxy_set_header       X-Forwarded-For   $proxy_add_x_forwarded_for; #獲取代理者的真實ip

    client_max_body_size    10m;

    client_body_buffer_size 128k;

    proxy_connect_timeout   90;

    proxy_send_timeout      90;

    proxy_read_timeout      90;

    proxy_buffer_size       4k;

    proxy_buffers           4 32k;

    proxy_busy_buffers_size 64k;

    proxy_temp_file_write_size 64k;

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

    最後的/usr/local/nginx/conf目錄下文件截圖以下:

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

    最後再多提一句日誌的問題,nginx的默認日誌目錄爲/usr/local/nginx/logs目錄,這個目錄下面有3個文件,分別是access.log,error.log和nginx.pid,其中error.log是錯誤日誌,若是在啓動nginx時遇到錯誤能夠到這裏來查看錯誤問題。

相關文章
相關標籤/搜索