라즈베리파이 레트로아크를 위한 네트워크 드라이브 smb 마운트

라즈베리파이 레트로아크를 위한 네트워크 드라이브 smb 마운트


라즈베리파이로 레트로아크를 구성하신분들을 위한 네트워크 드라이브 설정 값입니다. MicroSD 카드의 용량은 한계가 있는데 거기다 많은 용량의 Rom 파일들을 모두 복사할 수 없으니, Nas의 samba를 이용해 네트우크 드라이브를 구성하는 겁니다.

일반적으로 리눅스의 네트워크 드라이브 마운트와 비슷합니다.

저는 Libreelec 9.0 RR 버전에 얹어져 있는 레트로아크를 사용하기 때문에 레트로아크만 구성하신 분이라면, 경로가 다를 수 있으니, find 명령으로 경로를 잘 찾아보시기 바랍니다.

# cd /storage/.config/system.d
파일 생성
# vi storage-emulators-retroarch-roms.mount
what 에는 자신의 NAS나 PC의 samba 경로를 넣어주면 됩니다.
[Unit]
Description=Emulator ROMs SAMBA mount drive
Wants=network-online.service
After=network-online.target
Before=kodi.service

[Mount]
What=//192.168.xxx.xxx/PDS/Games/Emul
Where=/storage/emulators/retroarch/roms
Type=cifs
Options=username=retro,pass=kodi1234,rw,vers=2.0


[Install]
WantedBy=multi-user.target
실행 권한 부여
# chmod a-x storage-emulators-retroarch-roms.mount
서비스에 등록
# systemctl enable storage-emulators-retroarch-roms.mount
서비스 실행
# systemctl start storage-emulators-retroarch-roms.mount 
서비스 Status 확인
# systemctl status storage-emulators-retroarch-roms.mount

마운트 확인

# df -h

//192.168.xxx.xxx/PDS/Games/Emul
                          3.5T    552.2G      2.9T  15% /storage/emulators/retroarch/roms

Docker를 활용한 AirComix 서버 설치


Synology NAS - Docker를 활용한 AirComix 서버 설치


나스시장의 최강자! 시놀로지!

그동안 저는 DS-215j 모델을 사용해오고 있어서 몰랐는데 새로나온 고사양급 모델들은 요즘 IT인프라에서 가장 핫한 아이템인 Docker를 사용 할 수 있도록 업데이트가 되었더군요! 이번에 신형 NAS로 교체한 기념으로 포스팅 해봅니다.

그 Docker로 무얼 할 수 있는가? 고민하다가 예전 버전에서는 어렵게 아파치 서버를 띄워서 구성했던.. 근데 DSM이 버전업 해버리면서 아파치의 경로가 바뀌어서 서버가 깨져서 내부에서 꼬여버려 사용하지 못했던 슬픈 역사가 있던.. AirComix 서버 설치를 해보려고 합니다. AirComix 서버를 설치하면 막대한 용량의 압축 파일들을 앱에 넣지 않고, 통신망을 사용하여 어디에서든 스트리밍으로 구독이 가능합니다. 그래서 이번엔 아파치가 아닌 Nginx를 가지고 AirComix 서버를 구성해보고자 합니다.


설치과정에 있어서 pagein.net의 글을 많이 참고 했습니다.

설치하면서 제가 답답했던 부분이나 추가적인 부분을 더 포스팅 하려고 합니다.


Nginix PHP 설치


레지스트리를 선택한다음, 검색창에 nginx php 라고 검색을 한 후 나오는 목록에서 richarvey/nginx-php-fpm를 선택합니다.

더블 클릭하면 설치할 버전을 물어봅니다.

이미지에 richarvey/nginx-php-fpm:lastest 라고 생성 되는데, 다운이 완료 되면 304MB 용량 표시가 뜨고, 실행 버튼이 활성화 됩니다.

실행을 누르면 컨테이너 생성을 할 수 있습니다.

컨테이너 이름에 저는 aircomix-server 라고 넣었습니다. 원하는 이름으로 서버를 생성하시면 됩니다.

고급 설정을 누르면

자동 재시작 활성화에 체크 해주시고

볼륨 탭에서 폴더 추가를 해줍니다.

파일/폴더 있는 곳은 실제 NAS에 만화책들의 압축파일이 있는 경로를 지정해주시고, 마운트 경로는 Docker에 올라간 컨테이너 내에서 실제 책이 있는 경로가 마운트 되어 표현되어지는 경로입니다.

이게 무슨 소리냐? 하실 수도 있는데, 쉽게 말하자면,

만약에 실제 NAS의 /volume2/coimx 경로에 책 파일 있습니다. 하지만 docker로 컨테이너가 구성 되면 나스 안에 새로운 OS가 생성된것 같이 보이는데, 그안에는 실제 경로인 /volume2/coimx는 보이지 않고, 그 볼륨 구성안에서 /volume1/books 라는 경로로 실제 NAS의 경로가 연결된다는 뜻입니다. (실제 /volume2/comix => 컨테이너 /volume1/books) 윈도우의 바로가기나 리눅스의 ln 링크처럼 말이죠. 저는 만화책 뿐만 아니라 다른 책들도 같이 넣을것이기 때문에 books라고 지정 했습니다. 마운트에 volume1은 바꾸지 마세요.

포트 설정입니다. 다른 포트 다 지우셔도 상관 없습니다.

자동으로 되어 있는 로컬 포트도 31257로 고정하고, 컨테이너 포트도 31257로 설정해 줍니다. TCP, UDP 다 설정 해줍니다.

그러면 비디오 형식에 다음과 같이 컨테이너가 실행되고 있음을 확인 할 수 있습니다.

세부사항을 누르고, 터미널 탭으로 가서 생성을 누르면 bash 쉘이 뜹니다.

pwd를 치면 컨테이너 안에서 현재 경로가 보이는데, /var/www/html 이 곳이 nginx의 웹을 구동하기 위해 파일을 넣어두는 디렉토리입니다. 이 곳에서 github에 있는 AirComix 파일을 내려받습니다.

bash-4.4# wget https://github.com/song31/comix-server/archive/master.tar.gz

그리고 다운로드가 완료 되면 압축을 풉니다.

bash-4.4# tar -zxvf master.tar.gz

압축을 풀면 /var/www/html/ 아래에 comix-server-master 라는 디렉토리가 생성됩니다.

bash-4.4# cd comix-server-master

comix-server-master 디렉토리에 가서 몇가지 설정파일을 편집 해줍니다.

우선 index.php를 수정해줍니다.

기본 값은 manga 라고 되어 있는데, 아까 위에서 /volume1/books로 지정했던 부분의 books를 넣어줍니다. 만약 /volume1/comics 로 지정 했다면 comics를 넣으면 됩니다.

그 다음에 /etc/nginx/sites-enabled 로 이동을 합니다.

bash-4.4# cd /etc/nginx/sites-enabled

이 곳에다 aircomix-server.conf 파일을 만들어 줄것인데, 아래 명령으로 설정 파일을 받아 압축을 풀어도 되고,

bash-4.4# wget https://pagein.net/wp-content/uploads/2018/01/aircomix-server.tar.gz

아니면 vi 로 직접 생성해줘도 됩니다.

bash-4.4# vi aircomix-server.conf

아래와 같이 설정 해줍니다.

server {
    listen 31257;
    server_name 192.168.xxx.xxx;
    charset UTF-8;
    root /var/www/html/comix-server-master;
    location / {
        autoindex on;
        index index.php;
        #auth_basic "Restricted Access";
        #auth_basic_user_file /var/www/html/comix-server-master/.htpasswd;
    }
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ ^/manga(.*)$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME /var/www/html/comix-server-master/handler.php;
    }
}

NAS-IP에는 실제 시놀로지 NAS가 공유기에서 받은 IP를 넣어주는 겁니다.

편집이 끝났으면 저장. (vi 편집기 사용에 관한 부분은 다른 사이트를 참고하셔서 알아두시는 편이 좋습니다.)

그리고 비디오 형식에 작업 버튼에 다시 시작을 누르거나 오른버튼을 클릭해서 다시 시작을 하거나 오른쪽 버튼을 클릭해서 껐다 키거나 해서 컨테이너를 재시작 해주면 실행이 됩니다.


웹 브라우저를 열고 http://NAS IP:31257 쳐서 books 라고 나오면 성공한겁니다.

제어판에 외부엑세스에서 DDNS 서비스를 이용하고 계시다면 http://해당 도메인:31257 으로 외부에서도 접속이 가능한데, 이건 공유기에서 DMZ 설정이나 포트포워딩 설정이 NAS로 연결되어 있어야지만 가능한 겁니다. 구글에서 포트포워딩 혹은 공유기 DMZ설정을 찾아보세요. 공유기 제조사 마다 설정 방법이 모두 다릅니다.


AirComix 암호설정하기


코믹스 서버 디렉토리로 이동합니다.

bash-4.4# cd /var/www/html/comix-server-master

여기에서 .htpasswd 파일을 생성합니다.

bash-4.4# printf "AirComix:$(openssl passwd -crypt 패스워드)\n" >> .htpasswd
bash-4.4# chown nginx:nginx .htpasswd
bash-4.4# chmod 640 .htpasswd

그리고 다시 aircomix-server.conf 파일을 수정합니다.

bash-4.4# vi /etc/nginx/sites-enabled/aircomix-server.conf

주석(#)처리된 부분을 지워주고 저장.

이렇게 하면 앱에서 AirComix 서버로 접속하기 위해서는 반드시 패스워드가 필요합니다.

설정 완료!

'Operating System > Synology NAS' 카테고리의 다른 글

Docker를 활용한 AirComix 서버 설치  (2) 2019.01.29
  1. 맨 끝에 주석(#) 있는 부분을 지우고 저장 하라 했는데 어디를 지워야 하는건가요?? 동그란 원에 있는 auth로 된 곳 2줄 다 지웠는데 암호 설정이 안됐고, 그냥 암호 없이 들어가지네요,

Git Bash



윈도우용 Bash 쉘이 포함된 Git 입니다.


개발하거나 리눅스가 편리하시분들 윈도우에서도 Bash 명령을 이용해 작업을 할 수 있습니다.

putty 대용으로도 사용 할 수 있고, grep을 이용해 로그의 특정 부분을 긁어 모으거나 vi가 편하신분들에게 유용합니다.


원출처는 https://gitforwindows.org/



pwd를 치면 기본 홈은 /c/user/{$사용자} 입니다.


CMD창도 git 스타일로 이용할 수 있습니다.


Git-2.20.1-64-bit.zip

Git-2.20.1-64-bit.z01

Git-2.20.1-64-bit.z02

Git-2.20.1-64-bit.z03

Git-2.20.1-64-bit.z04



리눅스에서 2TB 이상 대용량 디스크 파티션 사용

리눅스에서는 일반 파티션의 사이즈는 2TB로 제한 되어 있습니다.

이 것을 GPT 타입으로 변경해야 2TB보다 큰 파티션을 사용할 수 있습니다.


일반적으로 파티셔닝을 하면 아래처럼 됩니다.


[root@backup-test ~]# fdisk -l /dev/sdc


Disk /dev/sdc: 5497.6 GB, 5497558138880 bytes, 10737418240 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0xbb438cb0


   Device Boot      Start         End      Blocks   Id  System

/dev/sdc1            2048    10487807     5242880   83  Linux

/dev/sdc2        10487808    52430847    20971520   83  Linux

/dev/sdc3        52430848  4294967294  2121268223+  83  Linux


sdc3을 보면 2TB로 제한 되어버립니다.



변경하려고 하는 디스크를 선택


# parted /dev/sdc

GNU Parted 3.1

Using /dev/sdc

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) 


(parted) mklabel gpt                                                      

Warning: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to continue?

Yes/No? yes


(parted) unit TB                            <----- 최소 용량을 설정하는 명령 (기본 MB) GB or TB


(parted) mkpart primary 0.00TB 5.50TB


(parted) print                                                            

Model: VMware Virtual disk (scsi)

Disk /dev/sdc: 5.50TB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Disk Flags: 


Number  Start   End     Size    File system  Name     Flags

 1      0.00TB  5.50TB  5.50TB               primary


(parted) quit

vi 편집기 단축키


출처 : https://kldp.org/node/102947


http://www.viemu.com 제공의 내용을 번역한 것

윈도우의 오래된 파일, 폴더 정리



윈도우에서 필요없는 로그나 사용하지 않는 오래된 파일을 정리 할때 사용하는 명령어 입니다.



몇일 이상 지난 파일을 지우기 위해 필요한 명령어


forfiles /p "D:\log" /s /d -30 /c "cmd /c @rmdir /s /q @path"



/d 옵션 뒤에 -30 은 30일 이상 지난 폴더와 내용을 삭제하라는 뜻입니다.



기본식


FORFILES [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] {yyyy-MM-dd | dd}]



옵션 목록


    /P    pathname    검색을 시작할 경로를 지정합니다.

                      현재 작업 디렉터리(.)가 기본 폴더입니다.


    /M    searchmask  검색 마스크에 따라 파일을 검색합니다.

                      '*'이 기본 검색 마스크입니다.


    /S                하위 폴더를 포함하도록 지정합니다. 예, "DIR /S"


    /C    command     각 파일에 실행할 명령을 지정합니다.

                      명령 문자열을 큰따옴표로 묶어야 합니다.


                      "cmd /c echo @file"이 기본 명령입니다.


      명령 문자열에 다음 변수를 사용할 수 있습니다.

                        @file    - 파일 이름을 반환합니다.

                        @fname   - 확장명 없이 파일 이름을 반환합니다.

                        @ext     - 파일의 확장명만 반환합니다.

                        @path    - 파일의 전체 경로를 반환합니다.

                        @relpath - 파일의 상대 경로를 반환합니다.

                        @isdir   - 파일 형식이 디렉터리인 경우 "TRUE"를 반환하고 파일인 경우                                             "FALSE"를 반환합니다.

                        @fsize   - 파일의 크기(바이트)를 반환합니다.

                        @fdate   - 파일을 마지막으로 수정한 날짜를 반환합니다.

                        @ftime   - 파일을 마지막으로 수정한 시간을 반환합니다.


                        명령줄에 특수 문자를 포함하려면 0xHH 형식의 16진수 코드(예, 탭은 0x09)를 

                        사용하십시오. 내부 CMD.exe 명령 앞에는 "cmd /c"를 사용해야 합니다.


    /D    date       지정한 날짜와 마지막 수정한 날짜가 늦거나 같은(+) 또는 빠르거나 같은(-) 파일을 

                     찾습니다.

                     날짜 포맷은 "yyyy-MM-dd"입니다.

                     또한 마지막 수정한 날짜가 현재 날짜에 "dd"일을 더한 날짜보다 늦거나 같은(+) 또는 

                     현재 날짜에서 "dd"일을 뺀 날짜보다 작거나 같은(-) 파일을 찾습니다.

                     유효한 "dd" 범위는 0에서 32768까지입니다.

                     부호를 지정하지 않으면 "+"가 기본값입니다.


    /?               이 도움말 메시지를 표시합니다.




윈도우에서 직접 알려주는 사용예시


  FORFILES /P C:\WINDOWS /S /M DNS*.*

  - C:\WINDOWS 하위 디렉토리 중 DNS를 포함하는 모든 파일 삭제


  FORFILES /S /M *.txt /C "cmd /c type @file | more"

  - 현재위치의 모든 텍스트 파일의 내용을 보여줍니다.


  FORFILES /P C:\ /S /M *.bat

  - C:\ 하위 디렉토리 포함 모든 bat 파일을 삭제합니다.


  FORFILES /D -30 /M *.exe /C "cmd /c echo @path 0x09 was changed 30 days ago"

  - 현재 디렉토리에 있는 모든 실행 파일들중 30일 이전의 파일들을 "경로\1.exe was changed 30 days ago" 형식으로 표시


  FORFILES /D 2001-01-01 /C "cmd /c echo @fname is new since Jan 1st 2001" 

  - 2001-01-01에 만들어진 파일을 확장자명 없이 출력


  FORFILES /D +2015-3-21 /C "cmd /c echo @fname is new today"

  - 2015-03-21 이후에 만들어진 파일을 @fname 뒤의 문장을 포함하여 출력


  FORFILES /M *.exe /D +1


  FORFILES /S /M *.doc /C "cmd /c echo @fsize"


  FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"




자동으로 오래된 파일을 로그로 기록하고, 삭제하는 배치파일 만들기


CMD 창을 띄우고 빈 파일을 만들고, 메모장으로 열어 다음 내용을 추가 해줍니다.


D:\> type NUL > D:\script\Delete_old.bat


D:\> notepad D:\script\Delete_old.bat


type NUL > D:\log\Delete_%DATE%.log

forfiles /p "D:\downloads" /s /m * /d -7 /c "CMD /c echo @path" >> Delete_%DATE%.log

forfiles /p "D:\downloads" /s /m * /d -7 /c "CMD /c @rmdir /s /q @path" >> Delete_%DATE%.log


다운로드 폴더에 있는 7일 이상된 파일을 로그로 남기고 삭제합니다.


해당 배치 파일은 작업 스케쥴러에 등록하여, 파일을 실행 하지 않아도 자동으로 매일 혹은 매주, 매달 같이 

주기를 지정하여 자동으로 삭제 할 수 있습니다.


오래 쌓여서 보지 않는 LOG 파일을 정리하거나 오래된 파일을 지우고 정리하는데 유용하게 사용합니다.


데스크탑 PC에 Esxi 설치

우선 아래 사이트에 가서 스크립트를 내려받는다.


https://www.v-front.de/p/esxi-customizer-ps.html


ESXi-Customizer-PS-v2.5.1.ps1


이걸 실행 하려면 PowerCLI가 있어야 하니 다운 받아 설치 한다.


Powershell 에서 실행할수 있게 실행 권한을 변경한 다음 PowerCLI 실행


데스크탑에 설치 하려면 랜카드와 SATA 드라이버가 필요 하다.


인텔 기가 인더넷 카드라면 net-igb


PowerCLI D:\Esxi>. D:\ESXi-Customizer-PS-v2.5.1.ps1 -v55 -vft -load sata-xahci,net-igb



이미지를 만들어준다.


-v50 : Create the latest ESXi 5.0 ISO

-v51 : Create the latest ESXi 5.1 ISO

-v55 : Create the latest ESXi 5.5 ISO

-v60 : Create the latest ESXi 6.0 ISO

-v65 : Create the latest ESXi 6.0 ISO


옵션 별 버전


-vft는 https://www.v-front.de 에서 가져온다는 뜻.


자세한 옵션은 https://www.v-front.de/p/esxi-customizer-ps.html 참조.

Windows Powershell 권한변경


Windows Powershell 권한변경


Powershell에서 스크립트 실행이 안될 때


. : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\I

nitialize-PowerCLIEnvironment.ps1 파일을 로드할 수 없습니다. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=13517

0의 about_Execution_Policies를 참조하십시오.

위치 줄:1 문자:3

+ . "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scri ...

+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : 보안 오류: (:) [], PSSecurityException

    + FullyQualifiedErrorId : UnauthorizedAccess

PS C:\Windows\system32>



변경방법


※관리자권한으로 파워쉘 실행.


Microsoft Windows [Version 10.0.10240]

(c) 2015 Microsoft Corporation. All rights reserved.

C:\Windows\system32>powershell

Windows PowerShell

Copyright (C) 2015 Microsoft Corporation. All rights reserved.

PS C:\Windows\system32> ExecutionPolicy      <-- 현재상태확인

Restricted        <---- 모든 스크립트 막음

PS C:\Windows\system32>

PS C:\Windows\system32> Set-ExecutionPolicy Unrestricted

PS C:\Windows\system32>

PS C:\Windows\system32> ExecutionPolicy       <-- 다시 확인

Unrestricted     <---- 모든 스크립트 허용으로 바뀐거 확인 됨.

PS C:\Windows\system32>


권한 일관 변경

Linux나 Unix 에서 RAC나 HA 구성중에 양쪽 노드에 유저명은 같은데 UID가 다르면 설치가 안되는 경우가 발생.

이중화 작업에는 항상 UID를 맞춰줘야 한다.


안맞을경우 일괄 변경 하는 방법


$ usermod -u 501 oracle


로 바꿔주면 기존에 oracle 계정으로 생성했던 파일들이 전부 유저명이 아닌 UID로 표시 된다.


그럴경우


$ find / -user 502 -exec chown -h oracle {} \;


해주면 기존 502번으로 되어있던 권한이 oracle로 변경되고 id를 확인해 보면 501로 바뀐다.


$ find / -user oracle -exec chgrp -h dba {} \;


이렇게 하면 그룹을 일관 변경 할 수 있다.


AIX 메모리 사용률 확인

AIX에서 메모리 사용량 확인하는 명령어 svmon 간략 한 파라미터


#svmon -O summary=basic,unit=auto

-> 메모리 전체 사용량을 MB 단위로 확인


#svmon -Pu -t 10 | grep -p Pid | grep '^.*[0-9]'

-> 실제 메모리를 사용하는 프로세스를 크기 순서로 10개 조회


#ps aux | head -1; ps aux | sort -m +3 | head

-> 가장 많은 메모리를 점유하는 프로세스 찾기

AIX 에서 vi 에디터 메모리 부족하다고 나올때

0602-101 Out of memory saving lines for undo.


1. 임시 처방
vi -y 9999999 파일 이름

2.환경 설정 변경
/etc/profile에 다음 내용 추가

# Avoid problems when using vi to edit large files (files with many lines)
export EXINIT="set ll=20000000"

 /var 파일 시스템의 용량이 부족할 경우는 임시 조치로 다음과 같이 해도 됨

export EXINIT="set ll=20000000 dir=임시데이터 저장 디렉토리"


리눅스 모니터링 명령어 정리

IOSTAT



별도의 설치 필요 없으며, 물리적 드라이버 별로 기본적인 Disk Read/Write를 볼 수 있다.

한 개 이상의 디스크 드라이브에 대한 입출력 통계와 CPU 활용량 등을 분석 가능하다.

 

-      Avg-cpu : 마지막 재부팅 이후의 평균 CPU 활용량

-      %user : Application 등 사용자 모드에 소모된 시간

-      %nice : nice를 사용하여 스케줄링 우선 순위가 바뀐 프로세스에 소모된 시간

-      %system : System(Kernel)이 사용한 시간

-      %iowait : 디스크 I/O 요청으로 인해 CPU가 대기한 시간

-      %steal : 다른 가상 CPU가 서비스하는 동안 강제적으로 대기한 시간

-      %idle : 대기한 시간

-      Device : 디바이스 구분

-      tps : 초당 전송(I/O)

-      Blk_read/s : 초당 읽혀진 KB (Blk=512 bytes)

-      Blk_wrtn/s : 초당 쓰여진 KB (Blk=512 bytes)

-      Blk_read : 지금까지 읽혀진 KB (Blk=512 bytes)

-      Blk_wrtn : 지금까지 쓰여진 KB (Blk=512 bytes)



VMSTAT

 

 

별도의 설치 필요 없으며 시스템의 리소스 상황(CPU, I/O, Memory)을 모니터링 할 수 있다

vmstat(옵션없음) - 마지막 부팅 이후의 평균 값

vmstat 2 10 => 2초 간격으로 10회 정보 갱신

        

procs : r – 현재 실행중인 프로세스의 수(CPU 접근 대기중인 실행 가능 프로세스 수)

                b – 인터럽트가 불가능한 sleep 상태에 있는 프로세스의 수

                 (I/O 처리를 하는 동안 블록 처리된 프로세스)

             w – 강제로 swap out 된 프로세스

memory : swpd – 사용하고 있는 swap 메모리 양(사용된 가상 메모리 용량)

                   free – 사용 가능한 메모리 양

                    buff – 버퍼로 사용되고 있는 메모리 양

                    cache – 캐시로 사용되고 있는 메모리 양

           swap : si – swap in(디스크에서 메모리로 swap 된 메모리 용량)

                 so – swap out(디스크로 swap 되어 나간 메모리 용량)

io : bi – 초당 블록 디바이스로 보내는 블록 수(블록 장치로 보내진 블록)

bo – 초당 블록 디바이스로부터 받은 블록 수(블록 장치에서 받아온 블록)

system : in – 초당 인터럽트 되는 양

        cs – 초당 context switch 되는 양

cpu : us – 사용자의 CPU 사용 시간 비율

(CPU가 사용자 수준 코드를 실행한 시간, 백분율(%))

               sy – 시스템의 CPU 사용시간 비율

                         (CPU가 시스템 수준 코드를 실행한 시간, 백분율(%))

               Id – CPU idle time(백분율 단위)

               wa – 입출력 대기



TOP



별도의 설치 필요 없으며, CPU 점유 프로세스들을 실시간으로 조회하는 명령어이다.

1 top : 시스템의 전반적 상태(가동시간 등)

    현재시간, 재부팅 없이 운영중인 업타임 시간, 로그인 된 유저 수, 1 5 15분에 대한 각각의 부하율

2 Tasks : 프로세스들의 상황

    실행중인 전체 프로세스 수, 실행중인 프로세스, 유휴상태의 프로세스, 정지된 프로세스, 좀비 프로세스의 수

3 CPU : CPU의 상황

    사용자, 시스템, ni정책의 CPU 사용률, CPU 미사용률, 입출력 대기상태의 CPU 사용률

4 Mem : 메모리 상황

    전체적인 물리 메모리, 사용중인 메모리, 여유 메모리, 버퍼된 메모리의 양

5 Swap : 스왑 메모리 상황

    전체 스왑 메모리, 사용중인 스왑 메모리, 여유 스왑 메모리, 캐싱 메모리

6 PID : 프로세스 ID

    USER : 프로세스를 실행시킨 사용자 ID

    PR : 프로세스 우선순위

    NI : NICE

    VIRT : 가상 메모리 사용량(SWAP+RES)

    RES : 현재 페이지가 상주하고 있는 크기 (Resident Size)

    SHR : 분할된 페이지, 프로세스에 의해 사용된 메모리를 나눈 메모리의 총합

    S : 프로세스의 상태(Sleeping, Running, Swapped out process, Zombies)

    %CPU : 프로세스가 사용하는 CPU 사용률

    %MEM : 프로세스가 사용하는 메모리 사용률

    TIME+ : CPU TIME

    COMMAND : 실행된 명령어




Free


 

시스템의 실제메모리와 스왑메모리에 대한 사용현황을 확인할 수 있는 명령어

1 Mem : 시스템의 물리적인 메모리에 대한 사용량을 각 필드 단위로 표시 (단위 : Kbyte)

-      Total : 전체 메모리의 용량

-      Used : 시스템에서 사용중인 메모리 용량

-      Shared : 시스템에서 공유한 메모리 용량

-      Buffers : 시스템에서 Buffering 된 메모리 용량

-      Cached : 시스템에 Caching 된 메모리 용량

2 -/+ buffers/cache : 현재 캐시 메모리에서 버퍼링된 사용량을 표시(used/free)

3 Swap : 서버설치 시에 결정한 Swap Memory 양으로 디스크의 일부분을 메모리로 잡아서 설정되기 때문에

Swap Memory가 많이 사용되고 있다는 것은 시스템의 전체적인 속도가 떨어진다는 것을 의미하며

지속적으로 Swap Memory가 사용된다는 것은 결국 실제 메모리를 증설해야 한다는 것이다.

-      Total : 시스템의 전체 Swap Memory 용량 표시

-      Used : 전체 Swap Memory 중에서 현재 사용중인 Swap 용량 표시

-      Free : 전체 Swap Memory 중에서 사용되지 않고 남아있는 메모리 용량


Linux 6.x 버전에서 Hostname 변경

예전 버전에서는 /etc/hostname 을 변경해 주면 되었었는데, 6버전에서는 경로가 바뀌었다.


vi /etc/sysconfig/network


hostname 부분 변경


알송 광고 제거 및 차단

알송 설치 후 알송 실행시 사용자에 맞는 광고를 보여주기 위해 데이터를 수집하는데,

웹 브라우저등 사용자가 사용하는 프로그램등에서 정보를 수집하고 패킷을 사용한다.


그걸 막기 위해서는 특정 파일을 삭제 해야한다.


윈도우 7 기준으로

C:\ProgramData\ESTSoft\Alsong 에 있는 ALAD.dll

파일을 삭제 해주면 되는데 ProgramData 폴더는 숨겨진 폴더이므로 주소창에 경로를 직접 적어서 확인

또는 폴더 옵션에서 숨겨진 폴더 보기 옵션을 사용하면 된다.


알툴즈가 업데이트 할 경우 도로 설치되니

제어판 -> 프로그램 및 기능

에 가서 알툴즈 업데이트만 제거.


후에 C:\Windows\System32\drivers\etc

가서 hosts 파일을 메모장으로 열어


0.0.0.0 advert.altools.co.kr
0.0.0.0 aldn.altools.co.kr
0.0.0.0 ko-kr.albn.altools.com


다음 주소를 추가해주면, 알송 자체에서 들어오는 광고도 차단 할수 있다.


이렇게 하면 푸바2000 보다 가볍게 사용 할 수 있음.

Linux 6.x bonding 설정

Linux 6.x 에서 bonding 설정이 변경이 되었으므로 RHEL6 기준으로 bonding 설정하는 법을 정리해 본다.

기본 설정

    channel bonding interface 설정은 /etc/sysconfig/network-scripts/ifcfg-bondN 파일을 통해 설정한다. N 은 bonding interface 의 숫자로 변경한다. 보통 0 으로 해주면 된다.

DEVICE=bond0
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BONDING_OPTS=""

    

    BONDING_OPTS 설정은 bonding이 정상적으로 구성된후에 설정하는게 좋으므로 일단 "" 로 넣는다.

    실제 bonding 수행할 NIC 를 bonding interface에 바인딩해야 한다. 기존 NIC 설정에 MASTER, SLAVE 지시자를 추가하면 된다. 다음은 ifcfg-eth0 에 적용한 예이며 ifcfg-eth1 에도 같은 설정을 추가하면 된다.


    vi /etc/sysconfig/network-scripts/ifcfg-eth0

    DEVICE=eth0
    BOOTPROTO=none
    ONBOOT=yes
    MASTER=bond0
    SLAVE=yes
    USERCTL=no


    bonding kernel module 이 loading 되도록 modprobe 설정을 변경한다. Linux 6.x 에서는 modprobe.conf 이 deprecated 되었으므로 /etc/modprobe.conf 에 했던 설정은 /etc/modprobe.d/ 밑에 개별 파일로 설정해 주면 된다. ( Ex: ipv6 설정은 /etc/modprobe.d/ipv6.conf 에 지정) - 관련 자료 - Where is /etc/modprobe.conf in Red Hat Enterprise Linux 6?)


    vim /etc/modprobe.d/bonding.conf

    alias bond0 bonding


    service network restart 로 network  을 재시작한다.

    ifconfig  로 bonding interface 가 보이는지 확인한다.

    bond0     Link encap:Ethernet  HWaddr 00:0C:29:65:13:5E 
              inet addr:192.168.0.231  Bcast:192.168.0.255  Mask:255.255.255.0
              inet6 addr: fe80::20c:29ff:fe65:135e/64 Scope:Link
              UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
              RX packets:68590 errors:0 dropped:0 overruns:0 frame:0
              TX packets:39766 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:93621577 (89.2 MiB)  TX bytes:2786599 (2.6 MiB)

RAC를 위한 리눅스 네트워크 이중화 - Bonding

실제 오라클 서버에 네트워크 구성에서 네트워크 이중화 작업인 Bonding은 최근 필수가 되고 있다.

로드 밸런싱을 통한 트래픽 분산이나, 네트워크 장애로 인한 데이터 전송 손실을 최소로 막기 위한 방법중 하나.


본딩(bonding)이란?

여러개의 NIC을 논리적으로 묶어서 한개의 NIC으로 묶어서 NIC의 갯수 만큼 대역폭을 확장하는 기술이다. 100M의 NIC을 2개를 묶어서 200M의 NIC으로 구성 할 수도 있으며, 2개의 NIC을 한개의 NIC으로 묶어서 active와 stand by로 구성을 할 수도 있다. (Fault Tolerance의 역할을 한다.)

아래에서는 뒤에 언급한 active와 stand by를 구성 할 것이다.

본딩을 하기 위해서 네트워크 환경을 변경한다.


일반적으로 RAC에서의 Bonding은 Public IP가 들어가는 부분에 네트워크 카드 2개, Priv IP가 들어가는 인터커넥션 부분 2개 하여 4개의 NIC가 필요로 하게 된다.

리눅스에서는 물리적으로 eth0~3번까지 필요하며, 논리적으로 Bond0~1을 구성하게 된다.


RAC는 Oracle 10g R2, 리눅스는 Oracle 리눅스 5.9 64bit 버전에서 작업을 진행.


/etc/hosts


#Public
192.168.118.128 rac1
192.168.118.129 rac2

#private
192.168.184.128 rac1-priv
192.168.184.129 rac2-priv

#Vip
192.168.118.130 rac1-vip
192.168.118.131 rac2-vip



Real IP 쪽의 본딩 작업


Bond0 에 eth0, eth2 을 묶는 작업.


[root@RAC1 ~]#
[root@RAC1 ~]# cd /etc/sysconfig/network-scripts/
[root@RAC1 network-scripts]# vi ifcfg-bond0                                     # ifcfg-bond0 파일은 생성해야 하며, 아래 값을 넣으면 된다.


DEVICE=bond0
BOOTPROTO=static
IPADDR=192.168.118.128
NETMASK=255.255.255.0
NETWORK=192.168.118.0
ONBOOT=yes
DHCP_HOSTNAME=RAC1               <---  서버 호스트네임을 적어준다.


[root@RAC1 network-scripts]# vi ifcfg-eth0


# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
DEVICE=eth0
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
ONBOOT=yes
HWADDR=00:0c:29:3f:ba:54
USERCTL=no


[root@RAC1 network-scripts]# vi ifcfg-eth2


# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
DEVICE=eth2
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
ONBOOT=yes
HWADDR=00:0c:29:3f:ba:68
USERCTL=no


[root@RAC1 network-scripts]# cd /etc/sysconfig/
[root@RAC1 sysconfig]# vi network                     # 기존 내용에 GATEDEV 항목을 추가하여 호스트네임 및 게이트웨이 주소를 설정한다.


NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=RAC1
GATEWAY=192.168.118.2
GATEDEV=bond0



인터커넥션 부분 구성

bond1 에 eth1,eth3을 묶는 작업.


[root@RAC1 network-scripts]# vi ifcfg-bond1                                    # ifcfg-bond1 파일은 생성해야 하며, 아래 값을 넣으면 된다.


DEVICE=bond1
BOOTPROTO=static
IPADDR=192.168.184.128
NETMASK=255.255.255.0
NETWORK=192.168.184.0
ONBOOT=yes
DHCP_HOSTNAME=RAC1               <---  서버 호스트네임을 적어준다.


[root@RAC1 network-scripts]# vi ifcfg-eth1


# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
DEVICE=eth1
MASTER=bond1
SLAVE=yes
BOOTPROTO=none
ONBOOT=yes
HWADDR=00:0c:29:3f:ba:5e
USERCTL=no


[root@RAC1 network-scripts]# vi ifcfg-eth3


# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
DEVICE=eth3
MASTER=bond1
SLAVE=yes
BOOTPROTO=none
ONBOOT=yes
HWADDR=00:0c:29:3f:ba:72
USERCTL=no



모듈을 구성한다.
 
  [Bonding 모드 종류]

     0 : balance-round robine ( 2개의 NIC를 통한 분배 +  Fault Tolerance )

     1 : active-standby ( Active상태의 NIC에 문제 발생시 Fault Tolerance )

     2 : balance-xor ( 0과 비슷하지만 xor연산을 이용한 목적지 Mac과 근원지 Mac을 이용한 분배 +    Fault tolerance)

     3 : broadcast ( 2개의 NIC에 어떤 규칙 없이 데이터 통신 +  Fault Tolerace)

     4 : 802.3ad (link aggregation) – switch 에 aggregation 그룹생성이 필요


[root@RAC1 sysconfig]# cd /etc/
[root@RAC1 etc]# vi modprobe.conf


alias bond0 bonding

alias bond1 bonding
options bonding mode=1
options bond0 miimon=100

options bond1 miimon=100


[root@rac1 network-scripts]# modprobe bonding
[root@rac1 network-scripts]# lsmod | grep bonding

bonding               124138  0


[root@rac2 network-scripts]# /etc/init.d/network restart
Shutting down interface bond0:                             [  OK  ]
Shutting down interface bond1:                             [  OK  ]
Shutting down loopback interface:                         [  OK  ]
Bringing up loopback interface:                             [  OK  ]
Bringing up interface bond0:                                 [  OK  ]
Bringing up interface bond1:                                 [  OK  ]


[root@rac2 network-scripts]# ifconfig
bond0     Link encap:Ethernet  HWaddr 00:0C:29:3F:BA:54 
          inet addr:192.168.118.129  Bcast:192.168.118.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:362 errors:0 dropped:76 overruns:0 frame:0
          TX packets:446 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:30667 (29.9 KiB)  TX bytes:50647 (49.4 KiB)


bond0:1   Link encap:Ethernet  HWaddr 00:0C:29:3F:BA:54 
          inet addr:192.168.118.131  Bcast:192.168.118.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1


bond1     Link encap:Ethernet  HWaddr 00:0C:29:3F:BA:5E 
          inet addr:192.168.184.129  Bcast:192.168.184.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:32 errors:0 dropped:22 overruns:0 frame:0
          TX packets:88 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:3042 (2.9 KiB)  TX bytes:8663 (8.4 KiB)

eth0      Link encap:Ethernet  HWaddr 00:0C:29:3F:BA:54 
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:293 errors:0 dropped:0 overruns:0 frame:0
          TX packets:468 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:25966 (25.3 KiB)  TX bytes:53927 (52.6 KiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:3F:BA:5E 
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:10 errors:0 dropped:0 overruns:0 frame:0
          TX packets:86 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1161 (1.1 KiB)  TX bytes:8567 (8.3 KiB)

eth2      Link encap:Ethernet  HWaddr 00:0C:29:3F:BA:54 
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:76 errors:0 dropped:76 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:5121 (5.0 KiB)  TX bytes:180 (180.0 b)

eth3      Link encap:Ethernet  HWaddr 00:0C:29:3F:BA:5E 
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:22 errors:0 dropped:22 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1881 (1.8 KiB)  TX bytes:96 (96.0 b)

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:6370 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6370 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:4861903 (4.6 MiB)  TX bytes:4861903 (4.6 MiB)


실질적으로 bonding이 구성되고 나면, eth0~3은 SLAVE로 표기 되며, GUI환경에서 네트워크 인터페이스를 확인 해봐도 INACTIVE상태로 설정된다.

bond0 - eth0, eth2 , bond1 - eth1, eth3 으로 묶여 이중화를 구성하게 되며 RAC에서 사용하는 VIP는 bond0으로 올라가게 된다.


구성 상태 확인 및 구성 상태 검증


[root@RAC1 network-scripts]# cd /proc/net/bonding/
[root@RAC1 bonding]# cat bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:3f:ba:54
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:3f:ba:68
Slave queue ID: 0


[root@RAC1 bonding]# cat bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:3f:ba:5e
Slave queue ID: 0

Slave Interface: eth3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:3f:ba:72
Slave queue ID: 0


RAC2번에서도 같은 작업을 반복해주면 되고,

bonding을 구성하고 나서 RAC를 설치 한다면 Oracle 설치시 네트워크 인터페스를 bond0,1번을 사용하게끔 잡아주면 된다.

RAC설치 후에 Bonding을 진행 한다면, oifcfg 명령과 srvctl 명령을 이용하여 Public, cluster_Interconnection, VIP를 변경해주는 작업이 추가로 필요하게 된다.



HP-UX에서 보기 힘든 bdf 변환

AIX는 간단하게 df -g 나 다양한 명령을 통해 gb단위의 정보를 표시해주나

대용량을 byte단위로 표기하는 hp-ux의 bdf는  참으로 불편.

간단히 스크립트를 통해 보기 쉽게 생성 가능하다.


# cd /usr/bin

# vi ldf


#!/bin/ksh

LV_NAME=0
LV_TOT=0
LV_USED=0
LV_AVAIL=0
LV_PER=0
LV_MOUNT=0

COUNT=1
TEMP=0

echo LV_NAME LV_TOTAL\(GB\) LV_USED\(GB\) LV_FREE\(GB\) LV_USED\(%\) Mount_Filesystem | awk '{printf "%-30s %13s %13s %13s %13s   %-20s\n",$1,$2,$3,$4,$5,  $6}'

echo =========================================================================================================

for LINE in `bdf`
do
   
    if [ $COUNT -le 7 ]
    then
        COUNT=`expr $COUNT + 1`
        continue
       
    else
        case "`expr $COUNT \% 7`" in
        1)
            LV_NAME=$LINE
            COUNT=`expr $COUNT + 1`
            ;;
        2)
            LV_TOT=$LINE
            COUNT=`expr $COUNT + 1`
            ;;
        3)
            LV_USED=$LINE
            COUNT=`expr $COUNT + 1`
            ;;
        4)
            LV_AVAIL=$LINE
            COUNT=`expr $COUNT + 1`
            ;;
        5)
            LV_PER=$LINE
            COUNT=`expr $COUNT + 1`
            ;;
        6)
            LV_MOUNT=$LINE
            COUNT=8
            echo $LV_NAME $LV_TOT $LV_USED $LV_AVAIL $LV_PER $LV_MOUNT \
            | awk '{printf "%-30s %13.2f %13.2f %13.2f %13.2f   %-20s\n",$1,$2/1024/1024,$3/1024/1024,$4/1024/1024,$3/$2*100,  $6}'
            ;;
        esac
    fi
done


:wq!


# chmod 755 ldf


좀 더 보기 편하게 변경 할 수 있다.



'Operating System > Linux & Unix' 카테고리의 다른 글

Linux 6.x bonding 설정  (0) 2014.04.30
RAC를 위한 리눅스 네트워크 이중화 - Bonding  (0) 2014.04.22
HP-UX에서 보기 힘든 bdf 변환  (0) 2014.04.15
솔라리스에 Bash 셀 설정하기  (0) 2014.01.03
SSH 설정  (0) 2013.08.01
솔라리스 기본 명령어  (0) 2013.07.16

솔라리스에 Bash 셀 설정하기

현재 셀

# cat /etc/passwd | grep root

root:x:0:0:Super-User:/:/sbin/sh

 

passwd 수정

# vi /etc/passwd

root:x:0:0:Super-User:/:/bin/bash


/etc/profile 수정

# /etc/profile


export PS1="[\u@\h:\w]\\$ "


추가

'Operating System > Linux & Unix' 카테고리의 다른 글

RAC를 위한 리눅스 네트워크 이중화 - Bonding  (0) 2014.04.22
HP-UX에서 보기 힘든 bdf 변환  (0) 2014.04.15
솔라리스에 Bash 셀 설정하기  (0) 2014.01.03
SSH 설정  (0) 2013.08.01
솔라리스 기본 명령어  (0) 2013.07.16
솔라리스에서 NIC 추가  (0) 2013.07.16

SSH 설정

1. SSH 접속을 위한 설정 (/etc/ssh/sshd_config 파일 수정)
- 네크웍 상에서 root 계정으로 로그인 가능 하도록 수정

# vi /etc/ssh/sshd_config
PermitRootLogin yes (no로 되어있는 것을 yes로 수정)

2. telnet 접속을 위한 설정 (/etc/default/login 파일 수정)
- CONSOLE=/dec/console 를 주석 처리한다

# vi /etc/default/login

#CONSOLE=/dec/console

3. 서비스 재시작
# svcadm restart network/ssh

'Operating System > Linux & Unix' 카테고리의 다른 글

HP-UX에서 보기 힘든 bdf 변환  (0) 2014.04.15
솔라리스에 Bash 셀 설정하기  (0) 2014.01.03
SSH 설정  (0) 2013.08.01
솔라리스 기본 명령어  (0) 2013.07.16
솔라리스에서 NIC 추가  (0) 2013.07.16
게이트웨이 설정  (0) 2013.07.16

솔라리스 기본 명령어

기본 명령어

명령어

설명

옵션

설명

id

사용자 정보를 보여준다.

 

 

passwd

사용자의 패스워드를 변경한다.

passwd ahn

ahn사용자의 패스워드를 변경한다.

Ctrl + D

Windows에서 Alt + F4와 같은 기능을 한다.

 

 

uname

사용하고 있는 OS에 대한 정보를 보여준다.

uname -a

시스템의 기본적인 정보를 보여준다.

uname -snrvmapiX

시스템에 대한 모든 정보를 보여준다.

date

시스템의 현재 날짜와 시간을 보여준다.

 

 

cal

현재의 달력을 보여준다.

cal month year

Ex)cal 7 2012

지정된 년/월의 달력을 보여준다.

ls

현재위치의 파일 및 폴더를 보여준다.

 

 

man

명령어의 도움말을 보여준다.(사용법)

space bar

다음 화면으로 진행

enter

현재화면에서 한 라인 진행

ctrl + b

한 화면 앞으로 이동

ctrl + f

한 화면 뒤로 이동

/pattern

패턴을 찾아 이동

N

다음 패턴으로 이동

Q

Man 종료

who

현재 시스템에 로그인되어 있는 모든 사용자를 보여준다.

who -H

header를 추가하여 보여준다.

who -q

사용자 수와 사용자명만 보여준다.

who -m

현재 터미널에 대한 정보만 보여준다.

id

사용자의 정보를 보여준다.

-a

사용자 정보와 사용자가 속한 그룹을 모두 보여준다.

^(Control) + characters

screen output 또는 screen starting과 같은 명확한 작업을 수행할 때 사용된다.

ctrl + s

터미널의 출력 정지

ctrl + q

터미널의 출력 시작

ctrl + c

전면 작업 중지

ctrl + d

입력의 끝

ctrl + z

프로세스의 일시 중지

ctrl + u

현재 작업중인 줄을 모두 지움

ctrl + w

현재 작업중인 줄의 마지막 단어를 지움

pwd

현재 위치의 디렉토리 표시

 

 

cd

디렉토리 이동

-

방금 전의 디렉토리로 이동한다.

~

홈 디렉토리로 이동한다.

..

한단게 위의 디렉토리로 이동한다.

/

최상위 디렉토리로 이동한다.

ls

디렉토리 내용 열람

-al

현재 디렉토리의 모든 파일을 상세히 본다.

 

 

-l

파일의 모든 정보 출력

 

 

-c

최근 변경한 시간 순서로 출력

 

 

-d

디렉토리 명만 출력

 

 

-F

파일의 특성을 출력

- / : 디렉토리

- * : 실행파일

 

 

-a

dot(.)으로 시작하는 파일의 이름을 포함한 모든 내용을 출력

file

파일 유형 표시

 

 

cat

파일 내용 표준 출력

파일의 내용을 파일 단위로 표준 출력할 때 사용되며, 크기가 작은 파일을 만들 때도 사용하는 명령어 이다.

cat > ahn

ahn파일 생성

cat -n ahn

ahn 파일에 있는 내용을 번호와 함께 보여준다.

strings

Binary 파일의 읽기 가능한 문자 출력

표준 출력 명령어로 내용을 볼 수 없는 바이너리 파일에서 글자가 깨지지 않고 읽기 가능한 글자만 보여준다.

 

 

more

파일 내용 표시(페이지 단위)

 

 

touch

파일 이름 작성, 시간 수정

크기가 0이거나 이미 존재하는 파일인 경우 파일 수정 시간을 현재의 시간으로 다시 설정한다.

 

 

mkdir

디렉토리 작성

mkdir -p aaa/bbb/ccc

부모디렉토리까지 생성

rmdir

디렉토리 제거

 

 

rm

파일 제거

rm -r aaa

해당 디렉토리와 하위 디렉토리 및 파일을 모두 제거한다.

rm -i

파일 또는 디렉토리를 제거할 때 응답으로 처리되며 사용자가 y를 입력하면 제거하고, n을 입력하면 제거하지 않는다.

rm -f

파일 또는 디렉토리를 제거할 때 응답 없이 제거한다.

cp

파일 복사

-i

파일이 이미 존재하는 경우 먼저 확인 절차를 거친 다음 overwride한다.

mv

파일 이동, 파일 이름 재명명

-i

파일이 이미 존재하는 경우 먼저 확인 절차를 거친 후에 overwrite를 결정한다.

사용예

# mv ahn aaa : ahn이란 파일을 aaa로 변경한다.

# mv ahn /work : ahn 이란 파일을 /work/로 이동시킨다.

df

현재 어떤 파일 시스템이 마운트 되어 있는지 확인

-h

 

mount

마운트된 파일 시스템의 목록뿐 아니라, 마운트 옵션, 시간 등의 부가 정보 확인

-v

 

adduser 유저명

사용자 추가

 

 

userdel 유저명

사용자 삭제

-r

사용자의 홈 디렉토리까지 삭제한다.

passwd

비밀번호 지정

 

 

pushd .

현재 디렉토리를 기억한다.

 

 

popd

기억된 디렉토리로 이동한다.(한번만 가능)

 

 

clear

현재 화면을 지운다.

 

 

halt

리눅스 시스템 종료 시 쓰는 명령어

 

 

reboot

리눅스 시스템 리부팅 시 쓰는 명령어

 

 


'Operating System > Linux & Unix' 카테고리의 다른 글

솔라리스에 Bash 셀 설정하기  (0) 2014.01.03
SSH 설정  (0) 2013.08.01
솔라리스 기본 명령어  (0) 2013.07.16
솔라리스에서 NIC 추가  (0) 2013.07.16
게이트웨이 설정  (0) 2013.07.16
리눅스 시스템 정보 보는 명령  (0) 2013.02.26

솔라리스에서 NIC 추가

# devfsadm -Cv
새로운 장치를 인식시킨다.

# cat /etc/path_to_inst
(VMware상에서 인식되는 NIC는 PCN이나 e1000g 형태로 인식된다.)


장치만 인식하고 적용 되지 않으때 강제로 적용한다.

# ifconfig e1000g1 plumb

# ifconfig e1000g1 192.168.188.129 netmask 255.255.255.0 broadcast + up


nic2의 새로운 IP를 추가한다.
# vi /etc/hosts
192.168.10.200 rac1-priv

새로운 nic2의 호스트이름을 할당한다.
# vi /etc/hostname.e1000g1
nic2

Subnet mask를 적용시킨다.
# vi /etc/netmasks
192.168.10.0    255.255.255.0

기본 라우터(default router) 정보 변경
# vi /etc/defaultrouter
192.168.10.2

Namesever 설정
# cp /etc/nsswitch.dns /etc/nsswitch.conf
# vi /etc/resolve.conf
nameserver 168.126.63.1

'Operating System > Linux & Unix' 카테고리의 다른 글

SSH 설정  (0) 2013.08.01
솔라리스 기본 명령어  (0) 2013.07.16
솔라리스에서 NIC 추가  (0) 2013.07.16
게이트웨이 설정  (0) 2013.07.16
리눅스 시스템 정보 보는 명령  (0) 2013.02.26
쉘의 종류와 특징  (0) 2013.01.23

게이트웨이 설정

솔라리스 처음 설치 시의 네트워크 설정이 되어있지 않아 아래의 순서로 설정을 하여 주어야 한다.

기본 게이트 웨이 설정
-------------------------------------------------
defaultrouter 생성 작업
# vi /etc/defaultrouter
192.168.0.1    --> 게이트 웨이 주소를 적어준다.

게이트 웨이 연결
# route add default 192.168.0.1
add net default: gateway 192.168.0.1

게이트 웨이 연결 확인
# netstat -r

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

nsswitch.conf 설정

# vi /etc/nsswitch.conf
hosts : files dns      --> dns를 적어 변경 하여 준다.

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

resolv.conf 생성
도메인을 해석 또는 찾아가기 위한 네임 서버 설정

# vi /etc/resolv.conf
nameserver 192.168.0.1

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

네트워크 재시작
# svcadm restart network

네트워크 재시작을 하지 않을 거라면 재부팅을 해주어야 한다.
# reboot

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

ip 변경 작업 시 확인 하여 변경 해주어야 할 것들.

ip 설정
# vi /etc/hostname.pcn0
host_name     ---> host 네임이 저장되어져 있다.

# vi /etc/hosts
127.0.0.1    localhost
이전 아이피를 #으로 주석 처리해준 후에 변경 아이피를 적어준다.
192.168.0.220      host_name

netmask 설정
# vi /etc/netmasks
192.168.0.0      255.255.255.0

gateway 설정
# vi /etc/defaultrouter
192.168.0.1

dns 설정
# vi /etc/resolv.conf
domain domain_address
nameserver  192.168.0.1

네트워크 재시작
# svcadm restart network

네트워크 재시작을 하지 않을 거라면 재부팅을 해주어야 한다.
# reboot

-----------------------------------------------------------------------------
임시로 ip를 변경 해야 할 경우

랜카드 활성 비활성
# ifconfig -a
# ifconfig pcn0 down
# ifconfig pcn0 up

ip 주소 설정
# ifconfig pcn0 inet 172.16.0.1 netmask 255.255.255.0 up

게이트 웨이 추가 및 삭제
# route add default 192.168.0.1
# route delete default 192.168.0.1

라우팅 정보 확인 하기
# netstat -rn

'Operating System > Linux & Unix' 카테고리의 다른 글

솔라리스 기본 명령어  (0) 2013.07.16
솔라리스에서 NIC 추가  (0) 2013.07.16
게이트웨이 설정  (0) 2013.07.16
리눅스 시스템 정보 보는 명령  (0) 2013.02.26
쉘의 종류와 특징  (0) 2013.01.23
쉘이란 무엇인가?  (0) 2013.01.23

리눅스 시스템 정보 보는 명령

리눅스 시스템 정보 보는 명령


cat

/proc/cpuinfo : cpu의 정보
/proc/devices : 현재 커널에 설정되어있는 장치의 목록
/proc/dma : 현재 사용중인 DMA채널
/proc/firesystems : 현재 커널에 설정되어 있는 파일 시스템 목록
/proc/interrupts : 현재 사용중인 인터럽트 에 대한 정보
/proc/ioports : 현재 사용중인 i/o포트 정보
/proc/kmsg : 커널이 출력하는 메세지
/proc/loadavg : 시스템의 평균 부하량
/proc/meminfo : 메모리정보
/proc/modules : 현재 사용되고 있는 커널 모듈 목록
/proc/stat : 시스템 상태
/proc/uptime : 시스템 켜져 있는시간
/proc/version : 현재 커널의 버전
/proc/net : 네트워크 관련 정보를 볼수있는 파일들이 있는 디렉토리


Linux System 정보 보기 (BIOS정보)

리눅스에서 시스템 정보(하드웨어, 메모리, 현재 하드웨어 설정 사항) 등을 알아보려고 할때 가장 편리하게 보는 방법이 dmidecode 입니다. dmidecode 는 BIOS의 시스템 정보를 볼 수 있도록 해주는 프로그램입니다.

간단하게 root상태에서 dmidecode를 실행 시켜 주면 깔끔하게 볼 수 있습니다.
표시 해주는 정보는 아래와 같습니다.

BIOS Information : BIOS 설정 상태 정보입니다.
System Information : 시스템 정보입니다. 메인보드 모델 및 제조사 등의 정보를 출력합니다.
Base Board Information : 메인보드의 제조사 및 BIOS, S/N등을 표시합니다.
Chassis Information : 시스템 구조 정보입니다.
Processor Information : 시스템 프로세서 정보입니다.
Cache Information : 프로세서 캐시 에 대한 정보입니다.
Memory Controller Information : 메모리 컨트롤러 정보입니다.
Memory Module Information : 메모리 모듈 정보입니다.
Port Connector Information : 시스템 포트 정보입니다.
System Slot Information : 확장 슬롯 정보입니다.
BIOS Language Information : BIOS 언어 정보입니다.
Physical Memory Array : 물리적 (하드웨어) 메모리 정보입니다.
Memory Device : 메모리 모듈 정보입니다.

아래와 같은 상세 정보를 화면에 출력을 해줍니다.

화면에 선택된 특정 정보를 보기 위해서는 -t옵션을 지정하여 원하는 정보만 확인 가능합니다.


# dmidecode -t [키워드]
  bios : BIOS정보
  system : System 정보
  baseboard : Mainboard 정보
  chassis : 구조 정보
  processor : 프로세서 정보
  memory : 메모리 정보
  cache : 캐시 정보
  connector : 포트 정보
  slot : 슬롯 정보

'Operating System > Linux & Unix' 카테고리의 다른 글

솔라리스에서 NIC 추가  (0) 2013.07.16
게이트웨이 설정  (0) 2013.07.16
리눅스 시스템 정보 보는 명령  (0) 2013.02.26
쉘의 종류와 특징  (0) 2013.01.23
쉘이란 무엇인가?  (0) 2013.01.23
RHEL 기반 5.8 64bit APM 소스 설치와 OCI8 연동  (0) 2013.01.17

쉘의 종류와 특징

쉘의 종류와 특징 (Solaris base)



1) Steven Bourne의  Bourne 쉘(sh) 의 특징

- 가장 오랜동안 모든 UNIX시스템의 표준 쉘로 사용됐고 Solaris의 default shell입니다.
- 강력한 이식성:  대부분의 유닉스 시스템은 본쉐을 디폴트 쉘로 사용합니다. 그래서 솔라리스에서 작성한 프로그램을 리눅스 같은 다른 유닉스 머신에서도 사용할 수 있습니다. 그래서 시스템 boot script의 대부분이 bourne shell script 입니다.
- execution speed
- compactness
- Built-in arithmetic and logical expression! handling 부족
- /bin/sh 와 /sbin/sh 가 있음
- 일반 유저는 $ 프롬프트를 사용하고 root 유저는 # 프롬프트를 사용합니다.


2) David korn의  Korn 쉘(ksh)

- UNIX 시스템에서 표준 shell로 제공
- Bourne쉘과 완전히 호환성(superset)이 있어서 본쉘의 모든 기능을 콘쉘에서 사용할 수 있습니다. 반대로 콘쉘의 모든 기능이 본쉘에서 수행되는 것은 아닙니다.
- alias, history, command line editing, built-in arithmetic, job control, C-like array, function, string-manipulation facility( 뒤에서 다 설명드립니다. )
- /bin/ksh
- 일반 유저는 $ 프롬프트를 사용하고 root 유저는 # 프롬프트를 사용합니다.
 

3) Bill Joy의 C 쉘(csh)


- C 언어와 유사한 문법을 사용
- 대화형 사용으로 C쉘을 추천(alias, history)
- 편리한 프로그래밍 기능( built-in arithmetic, C-like expression! syntax)
- larger and slower than the Bourne shell
- /bin/csh



4) TC shell


 C Shell의 결함을 고치고 몇 개의 새로운 기능(command line editing, spelling correction, login/logout watching 등)을 추가하여 TC shell(tcsh)이 만들어 졌다. 그러나 대다수의 UNIX시스템 제조업체에서 TC shell을 선택하지 않고 표준 C shell을 기본적으로 탑재했기 때문에 지금까지 비표준 shell로 남아 있다.
 

5) Bourne Again Shell (Bash)

 이 시기에 GNU project에서 Korn shell에 버금가는 기능을 갖는 "공짜" shell이 필요하다는 결정을 하였고, 그 결과 bash(Bourne Again Shell)가 탄생했습니다. Bash는 Korn shell과 마찬가지로 Bourne shell 에 기초하여 c-shell의 여러기능을 추가했고, Korn shell과는 달리 "공짜"였으므로 급속히 전파되어 현재 새로운 세대의 shell중에서 가장 인기 있는 shell이 되었습니다.
 

6) Z-shell

 더 완전한 shell을 향한 끝없는 추구는 지금도 계속되고 있고, 그 결과 Bourne shell에 기초한 또 다른 shell인 Z-shell(zsh)이 나타났다. 이 shell에는 전문가도 정확히 사용하기 힘든 여러 가지의 다양한 기능이 많이 추가되었습니다.



7) Restricted Shell

- /usr/lib/rsh ( /bin/rsh가 아님, /bin/rsh는 리모트 쉘입니다. )과 /usr/bin/rksh가 있습니다.
-본쉘과 콘쉘의 limited version 입니다.
- PATH 변경 불가
- “/”를 포함하는 명령어 사용 불가
- output 재지정 불가
- cd .. 불가



쉘이란 무엇인가?

쉘이란 무엇인가?

 간단히 정의를 하자면 사용자의 명령을 해석하여 커널에 전달하여 주고, 명령을 실행시켜 주는 명령어 해석기(Command Interpreter)이다. 사용자가 유닉스 시스템에 접속하면 바로 쉘 상태로 들어가게 됩니다.
 간단한 명령인 ls 명령어를 실행시켜 보면, 바로 파일리스트가 출력될 것입니다. 이렇게 명령의 결과를 볼 수 있는 것은 그 짧은 시간에 쉘이 명령을 해석해서 커널을 거쳐 뿌려주는 것이죠. 쉘이 단지 명령 해석 역할만 하는 것은 아닙니다. 쉘을 잘 이용하면 시스템 사용을 편리하게 할 수 있습니다. [그림1]은 커널에서부터 사용자 로그인후 쉘 활성화 까지 보여줍니다.

[그림1]


 시스템이 부팅하면, init 프로그램이 돌면서 /etc/inittab 파일을 검색합니다. init은 getty 프로그램을 호출하여 터미널화면에 login 프롬프트를 뛰우죠. 사용자의 아이디를 입력한 후 패스워드를 입력하면, getty는 login을 호출하고, login은 /etc/passwd 파일에서 패스워드가 일치하는지를 검색합니다.

 만일 패스워드가 틀리면 다시 login 프롬프트를 뛰우고, 패스워드가 일치하면 사용자의 홈디렉토리로 위치시키고 시작프로그램 제어를 맡습니다. 처음 시스템에 접속하여 인증을 받은 후 뜨는 프롬프트는 자신이 사용하는 쉘의 프롬프트이고, 위치는 자신의 홈 디렉토리입니다.

 현재 자신이 사용하는 쉘이 무엇인지 알아보려면 다음 명령어를 입력하면 됩니다.

# echo $SHELL




RHEL 기반 5.8 64bit APM 소스 설치와 OCI8 연동

벌써 몇번째 APM 설치 글을 올리는지 모르겠네요.

최신 버전은 워낙 에러가 많아서 삽질에 삽질을 거듭했습니다.


RHEL, CentOS, Oracle Linux Server 5.8 64 bit 버전에서 설치는 32bit 버전과 좀 차이가 있어서 여러가지 문제가 있습니다.

일단 APM이 32비트 기반이라서 말이죠.

아파치도 그렇고, php도 그렇고 최신버전들은 설치도 잘 안되고, 아직까지도 각종 애플리케이션에서 지원도 잘 안되고 말이죠.

가장 안정적인 버전으로 설치를 진행 하도록 하겠습니다.


설치 환경

OS - Oracle Linux Server 5.8 64bit

MySql - 5.5.28

Apache - 2.2.23

PHP - 5.2.8

Zend Optimizer - 3.3.3



APM설치를 위한 사전 요구사항

필수 패키지 설치
# yum -y install pcre-devel lua-devel libxml2-devel ncurses-devel zlib zlib-devel curl openssl openssl-devel libtermcap-devel libc-client-devel bison gcc g++ cpp gcc-c++ freetype freetype-devel freetype-utils gd gd-devel libjpeg libjpeg-devel libpng libpng-devel curl curl-devel flex php-mbstring libexif-devel cmake



Apache 설치를 위한 패키지 설치


소스설치 전에 APM관련 패키지가 yum 업데이트를 통해 설치가 되어 있을수도 있는데, yum erase 나 rpm -e 명령으로 설치된 패키지를 삭제 해줍니다.

apr, apr-util, mysql, httpd, php, php-common 삭제.


# cd /usr/local/src

# wget http://mirror.apache-kr.org//apr/apr-1.4.6.tar.gz
# tar xvfz apr-1.4.6.tar.gz
# cd apr-1.4.6
# ./configure --prefix=/usr/local/apr-1.4.6
# make && make install

# wget http://mirror.apache-kr.org//apr/apr-util-1.5.1.tar.gz
# tar xvfz apr-util-1.5.1.tar.gz
# cd apr-util-1.5.1
# ./configure --prefix=/usr/local/apr-util-1.5.1 --with-apr=/usr/local/apr-1.4.6
# make && make install



MySQL 설치 (cmake 설치)


MySQL 만 최신 버전을 사용하는 이유는 역시 5.5 버전이 5 버전대 보다 성능이 월등히 뛰어나기 때문입니다.


 - 설치 위치 : /usr/local/mysql-5.5.28
 - 데이타 위치 : /mysql/data

1. MySQL (http://www.mysql.com/downloads/mysql/)
  # cd /usr/local/src/
  # tar xvfz mysql-5.5.28.tar.gz


2. User 및 디렉토리 생성
  # adduser -M -s /bin/false mysql
  # mkdir -p /mysql/data /mysql/log
  # chown mysql.mysql data
  # chown mysql.mysql log


3. 소스 컴파일
  - 운영상의 편의성을 위해 설치 경로명에 버전을 같이 명기
  - 설치 옵션은 http://dev.mysql.com/doc/mysql-sourcebuild-excerpt/5.5/en/source-configuration-options.html 참조
  - CharSet 관련 설정은 http://dev.mysql.com/doc/refman/5.5/en/extended-show.html 참조

  # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5.28 -DMYSQL_DATADIR=/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all
  # make && make install


만약 언어셋을 eucKR을 사용한다면, cmake 옵션에서 변경해줍니다.

-DDEFAULT_CHARSET=euckr -DDEFAULT_COLLATION=euckr_korean_ci


4. 심볼릭 링크 생성
  # ln -s /usr/local/mysql-5.5.28 /usr/local/mysql


5. 환경 설정
  1) 권한 설정
  # cd /usr/local
  # chown -R mysql.mysql ./mysql-5.5.28
  # chown -R mysql.mysql /mysql
  2) 스크립트 구동
  # cd /usr/local/mysql
  # ./scripts/mysql_install_db --user=mysql --datadir=/mysql/data


6. my.cnf
  1) 시스템 메모 크기에 따른 /usr/local/mysql/support-file 밑에 아래 설정 화일을 /etc/my.cnf 로 복사합니다.
  - 64M 이하 : my-small.cnf
  - 65M ~ 256M : my-medium.cnf
  - 512M : my-large.cnf
  - 1G ~ 2G : my-huge.cnf
 
  2) my.cnf를 시스템에 맞게 설정한다.

7. 구동
  1) MySQL server 구동
  # cp -av /usr/local/mysql-5.5.28/support-files/mysql.server /etc/init.d/mysqld
  # /etc/init.d/mysqld start

  2) 암호 설정
  # ./bin/mysqladmin -u root password <new-password> (<- 괄호없이 비번만 입력)
 
  3) 접속 테스트
  # mysql -p mysql
  mysql> 나오면 성공


8.  자동 구동 설정
  # vi /etc/rc.d/init.d/mysqld
  - 아래 부분 수정
  basedir=/usr/local/mysql
  datadir=/mysql/data
 

 # chkconfig --add mysqld



Apache 설치

1. Apache (http://httpd.apache.org/download.cgi)

 /usr/lib/libexpat.so 을 lib64에서 심볼릭 링크를 줍니다. 기존에 있는건 삭제. 이건 64bit에서만 설정해주는 거죠.
 

  # ln -s /lib64/libexpat.so.0.5.0 /usr/lib/libexpat.so


  # cd /usr/local/src/httpd-2.2.23

  # ./configure --prefix=/usr/local/httpd-2.2.23 --enable-so --with-mpm=prefork --enable-cache --with-apr=/usr/local/apr-1.4.6 --with-apr-util=/usr/local/apr-util-1.5.1 --enable-ssl --with-ssl=/usr --enable-rewrite --enable-lib64 --libdir=/usr/lib64
  # make && make install
  # ln -s /usr/local/httpd-2.2.23 /usr/local/apache2


   - 여기 사용된 옵션은 아파치 웹 서버의 성능을 높히기 위한 것으로써 아래 문서를 참고.
    http://httpd.apache.org/docs/2.4/mod/worker.html
    http://httpd.apache.org/docs/2.4/mod/mod_cache.html


 mpm 옵션에 prefork 와 worker 를 선택할수가 있는데, worker 는 멀티 CPU에서 성능이 좋고, prefork는 싱글 CPU에서 성능이 좋습니다.

 각각 장단점이 있는데 그건 나중에...


2. mod_url : 1.6.2.6 설치 (최신 버전은 컴파일 과정에서 에러남)
  # wget http://caos.kldp.net/frs/download.php/6015/mod_url-apache2-1.6.2.6.tar.bz2
  # bzip2 -d mod_url-apache2-1.6.2.6.tar.bz2
  # tar -xvf mod_url-apache2-1.6.2.6.tar
  # /usr/local/httpd-2.2.23/bin/apxs -aic mod_url.c
  그러면 아파치 모듈 디렉토리 (/usr/local/httpd-2.2.23/modules)에 설치됩니다. (755 권한)
  아파치 설정 파일 httpd.conf에 아래 부분이 이미 추가되어 있습니다.


  LoadModule redurl_module        modules/mod_url.so
  그 하단에 추가
 
  <IfModule mod_url.c>
          CheckURL On
  </IfModule>



PHP 설치

PHP설치에 앞서 라이브러리를 인식시키는 작업을 합니다.

  # echo "/lib" >> /etc/ld.so.conf
  # echo "/lib64" >> /etc/ld.so.conf
  # echo "/lib" >> /etc/ld.so.conf
  # echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
  # echo "/usr/local/apache/modules" >> /etc/ld.so.conf
  # echo "/usr/lib64" >> /etc/ld.so.conf
  # echo "/usr/local/lib64" >> /etc/ld.so.conf
  # ldconfig

php설치시에 iconv에러가 발생되기 때문에 iconv만 따로 컴파일 작업을 진행해줘야 하죠.

  # wget mirror.koreaidc.com/library/libiconv-1.13.tar.gz
  # tar xvfz libiconv-1.13.tar.gz
  # cd libiconv-1.13
  # ./configure && make && make install

심볼릭 링크
  # ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2 (32비트 일때)
  # ln -s /usr/local/lib/libiconv.so.2 /usr/lib64/libiconv.so.2 (64비트 일때)


PHP 다운로드 및 설치

    # tar xvfz php-5.2.8.tar.gz
  # cd php-5.2.8
  # ./configure --prefix=/usr/local/php-5.2.8 --with-mysql=/usr/local/mysql-5.5.28 --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/apache2/conf --with-png-dir=/usr/lib64 --with-zlib-dir=/usr/lib64 --with-gdbm=/usr/lib64 --with-iconv=/usr/local --with-freetype-dir=/usr --with-jpeg-dir=/usr --with-gettext --with-imap --with-imap-ssl --with-kerberos --with-curl --with-zlib --with-gd --enable-exif --enable-wddx --enable-magic-quotes --enable-calendar --enable-sockets --enable-ftp --enable-bcmath --enable-mbstring --enable-mbregex --enable-sigchild --enable-mod-charset --with-oci8=$ORACLE_HOME
  # make
  # make install


--with-oci8=$ORACLE_HOME 

  : 오라클과 PHP를 연동하는 옵션인데, root에서 export로 오라클 홈을 지정해주지 않았다면, 오라클이 설치된 경로를 수동으로 지정 해주거나 (ex> /oracle/base/product/11g) 또는 오라클 엔진이 없을 경우는 instance client를 설치해서 설치한 경로를 지정해 줘도 됩니다.


  # cp -a php.ini-recommended /usr/local/apache2/conf/php.ini
  # perl -pi -e "s/register_globals = Off/register_globals = On/g" /usr/local/apache2/conf/php.ini
  # perl -pi -e "s/allow_url_fopen = On/allow_url_fopen = Off/g" /usr/local/apache2/conf/php.ini

  # ln -s /usr/local/php /usr/local/php-5.2.8



ZendOptimizer 설치 (php 가속화)


 Zend 의 경우 3.3.9 버전이 64bit 에서 잘 로딩이 안되는 경우도 많고, 그냥 3.3.3 버전을 설치 합니다.

압축을 풀면 install.sh 스크립트가 있는데 실행 시켜서 경로만 지정해주고 next 하면 알아서 설치가 됩니다.

설치후에 자동으로 아파치를 재구동 해주고, 설치 확인 방법은 아래와 같습니다.


# /usr/local/php/bin/php -v


이걸로 APM 설치는 끝!



APM MySQL 5.5버전 Yum 설치 하기

CentOS 혹은 Oracle Linux에서 Yum을 통한 업데이트로는 MySQL 5.5 버전 설치가 불가능 합니다.

Yum repo 업데이트를 통해 다른 repo 사이트에서 받아오는 방법입니다.


## Install Remi Repository on RHEL/CentOS 6.3-6.0 ##
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

## Install Remi Repository on RHEL/CentOS 5.8-5.0 ##
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm


리눅스 6버전과 5버전이 좀 다릅니다. 레포를 추가해준 후에 기본적이 APM 설치를 진행합니다.


우선 기본적인 APM 설치


## Installing on RHEL/CentOS 5-6 ##
# yum --enablerepo=remi,remi-test install httpd mysql mysql-server php php-common


또 Yum 업데이트시 따로 모듈을 설치 해줘야 하는게 더 있죠.


    MySQL (php-mysql) – A extension for PHP applications that use MySQL databases.
    PostgreSQL (php-pgsql) – A extension for PostgreSQL database for PHP.
    MongoDB (php-pecl-mongo) – A driver for MongoDB database.
    SQLite (php-sqlite) – Extension for SQLite Database Engine.
    Memcache (php-pecl-memcache) – Memcached caching daemon.
    Memcached (php-pecl-memcached) – Memcached caching daemon.
    GD (php-gd) – GD extension for PHP application to serve graphics.
    XML (php-xml) – XML Parser for PHP applications.
    MBString (php-mbstring) – Mbstring extension is used to handle multi-byte string in PHP applications.
    MCrypt (php-mcrypt) – A Mcrypt library for PHP scripts.
    APC (php-pecl-apc) – APC module used to optimize and cache PHP code.
    CLI (php-cli) – Command-line interface for PHP.
    PEAR (php-pear) – Application Repository framework for PHP.
    PDO (php-pdo) – Database access module for PHP applications.

    OCI8 - Oracle Database access module for PHP applications (오라클이 설치되어 있고 PHP 연동이 필요한 경우)


## Installing on RHEL/CentOS 5-6 ##
# yum --enablerepo=remi,remi-test install php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-pecl-apc php-cli php-pear php-pdo (php-oci8 php-devel)


※ php-oci8 설치시 추가 해줘야 하는것들

php-devel 패키지를 설치해줘야 pecl install 시 에러가 나지 않습니다.


# yum --enablerepo=remi,remi-test install php-devel php-oci8

# pecl install oci8


로 설치하다보면 중간에 경로가 나오는데 오라클 클라이언트가 설치 되어 있다면, 엔터치면 자동 지정해줍니다.


# vi /etc/php.ini


에 extension=oci8.so 를 넣어준다.



시작 명령에 추가 및 데몬 구동

## Enable Apache and MySQL on Run-Levels ##
# chkconfig --levels 235 httpd on
# chkconfig --levels 235 mysqld on

## Apache Commands ##
# /etc/init.d/httpd start
# /etc/init.d/httpd stop
# /etc/init.d/httpd status

## MySQL Commands ##
# /etc/init.d/mysqld start
# /etc/init.d/mysqld stop
# /etc/init.d/mysqld status



PHP 설치 확인


phpinfo.php 를 생성해서


<?php


     phpinfo ();
?>


를 넣어주고 웹브라우저에서 엑세스 해서 설정 정보가 나오면 설치 완료.

리눅스 서버 부하 체크 방법

1. SAR 사용으로 간단 부하 체크


오라클 설치시 sysstat 이라는 패키지 설치를 요구하는데 sysstat이 설치 되어 있으면, 아주 간단히 서버의 상태를 알아 볼수 있습니다.


# sar 3 1


이렇게 명령어를 치면 3초에 한번씩, 1번만 결과 값을 나타내라는 뜻 입니다.


# sar 5 60


이것은 5초에 한번씩, 60번 결과 값을 나타내라는 뜻이지요.

결과 값이 다 나오면 맨 밑에 평균 값을 구해 줍니다.

sysstat 이 설치되어 있지 않다면,


# yum -y install sysstat 명령으로 설치 가능합니다.



2. TOP 명령으로 서버 부하 확인


# top  (pid 확인)

top를 사용 할 경우 cpu 점유율을 계속 사용하기 때문에 계속해서 켜놓는 것은 좋지 않습니다.

top에서 pid를 확인한 다음에


# lsof -p (pid)


로 특정 계정을 확인이 가능합니다. 안나올때도 있습니다.


CentOS 6.x 64bit 버전 APM 소스 설치

설치 환경
CentOS 6.3 64bit
MySQL 5.5.28
Apache 2.4.3
PHP 5.4.8


APM설치를 위한 사전 요구사항


필수 패키지 설치


# yum -y install pcre-devel lua-devel libxml2-devel ncurses-devel zlib zlib-devel curl openssl openssl-devel libtermcap-devel libc-client-devel bison gcc g++ cpp gcc-c++ freetype freetype-devel freetype-utils gd gd-devel libjpeg libjpeg-devel libpng libpng-devel curl curl-devel flex php-mbstring libexif-devel cmake


Apache 설치를 위한 패키지 설치

1) APR (소스 설치)
 * Apache 2.4.X 는 APR 1.4 이상을 필요로 합니다. CentOS 6.x  yum에서는 1.3.9 패키지를 사용함으로 소스를 컴파일해서 설치.


# cd /usr/local/src
 
# wget http://mirror.apache-kr.org//apr/apr-1.4.6.tar.gz
# tar xvfz apr-1.4.6.tar.gz
# cd apr-1.4.6
# ./configure --prefix=/usr/local/apr-1.4.6
# make && make install


# wget http://mirror.apache-kr.org//apr/apr-util-1.4.1.tar.gz
# tar xvfz apr-util-1.4.1.tar.gz
# cd apr-util-1.4.1
# ./configure --prefix=/usr/local/apr-util-1.4.1 --with-apr=/usr/local/apr-1.4.6
# make && make install




MySQL 설치 (cmake 설치)

 - 설치 위치 : /usr/local/mysql-5.5.28
 - 데이타 위치 : /mysql/data

1. MySQL (http://www.mysql.com/downloads/mysql/)

  # cd /usr/local/src/
  # tar xvfz mysql-5.5.28.tar.gz


2. User 및 디렉토리 생성
  # adduser -M -s /bin/false mysql
  # mkdir -p /mysql/data /mysql/log
  # chown mysql.mysql data
  # chown mysql.mysql log


3. 소스 컴파일
  - 운영상의 편의성을 위해 설치 경로명에 버전을 같이 명기
  - 설치 옵션은 http://dev.mysql.com/doc/mysql-sourcebuild-excerpt/5.5/en/source-configuration-options.html 참조
  - CharSet 관련 설정은 http://dev.mysql.com/doc/refman/5.5/en/extended-show.html 참조

  # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5.28 -DMYSQL_DATADIR=/mysql/data -DDEFAULT_CHARSET=euckr \

  -DDEFAULT_COLLATION=euckr_korean_ci -DWITH_EXTRA_CHARSETS=all
  # make && make install
 
  (UTF8 설정시 옵션)
  -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci


4. 심볼릭 링크 생성
  # ln -s /usr/local/mysql-5.5.28 /usr/local/mysql
 
5. 환경 설정
  1) 권한 설정

  # cd /usr/local
  # chown -R mysql.mysql ./mysql-5.5.28
  # chown -R mysql.mysql /mysql


  2) 스크립트 구동

  # cd /usr/local/mysql
  # ./scripts/mysql_install_db --user=mysql --datadir=/mysql/data


6. my.cnf
  1) 시스템 메모 크기에 따른 /usr/local/mysql/support-file 밑에 아래 설정 화일을 /etc/my.cnf 로 복사합니다.
  - 64M 이하 : my-small.cnf
  - 65M ~ 256M : my-medium.cnf
  - 512M : my-large.cnf
  - 1G ~ 2G : my-huge.cnf
 
  2) my.cnf를 시스템에 맞게 설정합니다.

7. 구동
  1) MySQL server 구동
  # cp -av /usr/local/mysql-5.5.28/support-files/mysql.server /etc/init.d/mysqld
  # /etc/init.d/mysqld start

  2) 암호 설정
  # ./bin/mysqladmin -u root password <new-password> (<- 괄호없이 비번만 입력)
 
  3) 접속 테스트
  # mysql -p mysql
  mysql> 나오면 성공


8.  자동 구동 설정
  # vi /etc/rc.d/init.d/mysqld
  - 아래 부분 수정
  basedir=/usr/local/mysql
  datadir=/mysql/data


  # chkconfig --add mysqld




Apache 설치

1. Apache (http://httpd.apache.org/download.cgi)
  # cd /usr/local/src/httpd-2.4.3

  # ln -s /lib64/libexpat.so.0.5.0 /usr/lib/libexpat.so
  #./configure --prefix=/usr/local/httpd-2.4.3 --enable-so --with-mpm=prefork --enable-cache --with-apr=/usr/local/apr-1.4.6 --with-apr-util=/usr/local/apr-util-1.4.1 --enable-ssl --with-ssl=/usr --enable-rewrite --enable-lib64 --libdir=/usr/lib64
 
   - 여기 사용된 옵션은 아파치 웹 서버의 성능을 높히기 위한 것으로써 아래 문서를 참고.
    http://httpd.apache.org/docs/2.4/mod/worker.html
    http://httpd.apache.org/docs/2.4/mod/mod_cache.html
 
  # make && make install
  # ln -s /usr/local/httpd-2.4.3 /usr/local/apache2


2. mod_url : 1.6.2.6 설치 (최신 버전은 컴파일 과정에서 에러남)

  # wget http://caos.kldp.net/frs/download.php/6015/mod_url-apache2-1.6.2.6.tar.bz2
  # bzip2 -d mod_url-apache2-1.6.2.6.tar.bz2
  # tar -xvf mod_url-apache2-1.6.2.6.tar
  # /usr/local/httpd-2.4.3/bin/apxs -aic mod_url.c

  그러면 아파치 모듈 디렉토리 (/usr/local/httpd-2.4.3/modules)에 설치됩니다. (755 권한)


  아파치 설정화일 httpd.conf에 아래 부분이 이미 추가되어 있습니다.
  LoadModule redurl_module        modules/mod_url.so
  그 하단에 추가
 
  <IfModule mod_url.c>
          CheckURL On
  </IfModule>




PHP 설치
  # wget http://kr1.php.net/get/php-5.4.8.tar.gz/from/this/mirror
  # tar xvfz php-5.4.8.tar.gz
  # cd php-5.4.8.tar.gz
  # ./configure --prefix=/usr/local/php-5.4.8 --with-apxs2=/usr/local/httpd-2.4.3/bin/apxs --with-mysql=/usr/local/mysql-5.5.28 --with-config-file-path=/usr/local/httpd-2.4.3/conf --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib=/usr --enable-mbstring --enable-exif
  # make && make install




apache 추가 환경설정
  # vi httpd.conf
  - 아래 부분 삽입
   <IfModule dir_module>
      DirectoryIndex index.html index.htm index.php
  </IfModule>
 
- 아래 주석 해제 및 삽입
  <IfModule mime_module>
      AddType application/x-httpd-php .php .htm .html .inc .php4 .php3
      AddType application/x-httpd-php-source .phps
  </IfModule>




PHP 환경설정
  # cd /usr/local/src/php-5.4.8
  # cp php.ini-production /usr/local/httpd-2.4.3/conf/php.ini
  # cd /usr/local/httpd-2.4.3/conf
  # vi php.ini 




Apache 자동 구동 설정
   # cd /usr/local/httpd-2.4.3/bin
   # cp apachectl /etc/rc.d/init.d/httpd
 
  - Apache Config test
  # /etc/rc.d/init.d/httpd configtest
 
  - Apache Start
  # /etc/rc.d/init.d/httpd start


최신버전이 좋기만 한것도 아니고 실제로 PHP의 경우는 신버전이 ZendOptimizer 설치가 되질 않습니다....

거의 쓸 일은 없겠지만 설치 테스트하는 겸 해서 여기 저기 참고해서 한번 만들어 봤습니다.

  1. 시스템 메모 크기느 ㄴ어떻게 아나요???

  2. 아파치 설정화일 httpd.conf에 아래 부분이 이미 추가되어 있습니다.
    LoadModule redurl_module modules/mod_url.so
    그 하단에 추가

    <IfModule mod_url.c>
    CheckURL On
    </IfModule>


    /etc/httpd/에서 vi 로 httpd.conf 여기에서 하라는 말씀이신가요?
    LoadModule redurl_module modules/mod_url.sO 아무리 찾아봐도 이런건 있지가 않아요
    자세한 설명 좀 부탁드릴게요. 부탁드리겠습니다!

  3. oci8 연동까지 하신 것 있나요?
    있으시면 좀 올려주시면 감사하겠습니다.

Root 계정의 vi에서 색상 지정

다른 계정에서 vi 에디터를 열때 기본적으로 색상이 지정되어 구문 강조가 일어납니다.

이럴경우 vi 에서 오타확인이나 문장 구조 괄호등의 연계등 확인이 용이하나, 기본 Root 계정에서는 나오지 않습니다.


# vi .bashrc


alias vi='/usr/bin/vim'


이렇게 지정해주면 다음 root 로그인시 부터 vi의 구문강조가 일어납니다.

source 명령을 이용해 바로 적용 시켜줘도 됩니다.