Results for "리눅스"
Centos7(센트7)에서 apache+php+mysql (apm) 설치 및 구성 - 2
[설치환경]
OS : CentOS 7.1   64bit
CPU: Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz
Ram : 1G
SWAP : 1G

작성자 : 서비님(https://dslee1.blogspot.kr/)

--------------------------------------------------------------------------------------
이 포스팅과 관련된 포스팅


본 포스팅은 이전포스팅과 이어서 연재되어 있기 때문에 [Centos7(센트7)에서 apache+php+mysql (apm) 설치 및 구성 - 1] 포스팅을 참고하면 된다.


2-3 Apache 설치

apache.org 공식홈페이지에서 최신버전을 다운로드 받도록 한다
wget http://archive.apache.org/dist/httpd/httpd-2.4.18.tar.bz2

tar xvf httpd-2.4.18.tar.bz2
cd httpd-2.4.18

preforck 방식 및 worker 방식의 최대접속 값을 지정하는것이다. 기본값은 너무 낮게 설정되어있기 때문에 튜닝이 필요하다.
vi server/mpm/prefork/prefork.c
#define DEFAULT_SERVER_LIMIT 4096 (수정)
vi server/mpm/worker/worker.c
#define DEFAULT_SERVER_LIMIT 20

ssl 인증서를 함께 사용해야되기 때문에 그에 관련된 개발도구를 설치하도록한다.
yum install openssl-devel

환경설정 및 본격적인 설치를 진행하도록 한다.
./configure --prefix=/usr/local/httpd-2.4.18 --enable-mods-shared=most --enable-ssl  --enable-modules=ssl --enable-rewrite --with-included-apr --with-included-apr-util --enable-deflate --enable-expires --enable-headers --enable-proxy --enable-mpms-shared=all --with-mpm=event && make && make install

동작방식은 기본 event 방식을 취한다. prefork 및 worker 방식보다 좋기 때문이다.

[TIP]
설치 진행과정중 아래와 같은 에러메시지가 확인되면, [apache 설치중 error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util 해결방법] 포스팅을 참고하면 해결할수 있다.

configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.

에러문제가 해결되었으면, 다시 apache 디렉토리로 이동해서 설치를 다시 진행한다.

설치가 완료된 모습이다.

설치된 디렉토리를 간편하게 보기위해서 링크를 걸어준다.
ln -s /usr/local/httpd-2.4.18/ /usr/local/apache

httpd.conf 파일 및 여러 환경설정 변경 방법은. [Apache(httpd.conf 아파치환경설정) 튜닝] 포스팅를 참고하면 된다.


2-4 PHP 설치

기본적으로 설치는
cd /usr/local/src
이곳에서 진행 한다.

아래 공식홈페이지에서 php7 버전을 다운로드 한다

wget http://ar2.php.net/get/php-7.0.4.tar.gz/from/this/mirror -O php-7.0.4.tar.gz
tar xvfz php-7.0.4.tar.gz
cd php-7.0.4

./configure --prefix=/usr/local/php-7.0.4 --with-config-file-path=/usr/local/php-7.0.4/lib --with-apxs2=/usr/local/apache/bin/apxs --with-gd --with-freetype-dir --with-zlib --enable-sockets --enable-gd-native-ttf --with-png-dir --with-jpeg-dir --enable-sigchild --with-gettext --enable-mbstring --enable-inline-optimization --enable-bcmath --enable-shmop --enable-calendar --enable-ftp --with-gdbm --with-iconv --enable-mbregex --with-openssl --with-curl=/usr/local/curl/ --enable-soap --disable-debug --with-mcrypt --with-kerberos --enable-zip --with-zlib-dir --enable-exif --enable-fpm --with-fpm-user=nobody --with-fpm-group=nobody --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=shared,/usr/local/mysql && make && make install

[TIP]
error: mcrypt.h not found. Please reinstall libmcrypt
위와 같은 에러가 발생되면 [php설치 중 에러 error: mcrypt.h not found. Please reinstall libmcrypt 해결방법] 다른 포스팅을 참고하면 해결할수 있다.


make: *** [ext]mysqli]mysqli_embedded.lo] 오류 1
마지막줄에 이런 에러가 발생하면 [php7.x 설치시 error: too many arguments to function ‘zend_hash_get_current_data_ex’ 에러 해결방법] 이곳 포스팅을 참고하면 해결할수 있다.


정상적으로 설치가 완료되었으면 위와같은 화면을 확인할수 있다.

앞에서 심볼링 링크 작업한것처럼 이곳에서도 작업을 진행한다. 소스컴파일을 할 경우 수동으로 작업해줘야되는 부분이 많이 존재한다.
ln -s /usr/local/php-7.0.4/ /usr/local/php
ln -s /usr/local/php/bin/php /usr/sbin/
ln -s /usr/local/php/bin/phpize /usr/sbin/

php -v
PHP 7.0.4 (cli) (built: Apr  8 2016 16:41:41) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

php.ini 환경설정값을 php 설치된 디렉토리로 복사한다.
cp /usr/local/src/php-7.0.4/php.ini-development /usr/local/php-7.0.4/lib/php.ini


문제 없이 서비스가 올라가졌다면, 위와 같이 열려있는 포트를 확인할수 있게 된다.

[TIP]
php 초기설정
vi /usr/local/php-7.0.4/lib/php.ini

short_open_tag = On 
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_STRICT 
display_errors = On 
date.timezone = "Asia/Seoul" 

[설치 확인방법]

APM 설치가 정상적으로 완료되었는지 최종확인하는 방법이다. 아파치 초기 index.html 파일을 수정하면 된다.

vi /usr/local/apache/htdocs/index.php
###추가####
<?php
phpinfo();
?>
######

최종확인
http://192.168.0.5

성공이다.

이곳에서 각종 설정값을 확인할수있다.

시골청년 2016년 4월 8일 금요일
Centos7(센트7)에서 apache+php+mysql (apm) 설치 및 구성 - 1
[설치환경]
OS : CentOS 7.1   64bit
CPU: Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz
Ram : 1G
SWAP : 1G

작성자 : 서비님(https://dslee1.blogspot.kr/)


1. 개요

리눅스는 대부분 서버를 구성하기 위해서 많이 사용한다. 윈도우처럼 데스크탑용으로 사용하는 경우는 극히 드물며, centos 의 경우는 더더욱 사용률이 적다. 특히 우리나라는 데스크탑 사용자는 찾아보기가 힘들다는게 많은 아쉬움이 남는다.

오늘은 그래서 서버용으로 설치된 centos7 에 많은 사람들이 사용하는 apache+php+mysql 설치 및 구성에 대해서 살펴볼 것이다. 또한 현재 일자(2016.4.8) 기준으로 최신버전을 다운받아 설치할것이며, 간단한 테스트용 사이트 화면까지 확인하고 글을 마무리할 예정이다.

설치 버전은 다음과 같다.
   - apache 2.4.x
   - php 7.x
   - mysql 5.6.x
들어가기에 앞서 다른포스팅 [centos7 (센트7) 설치 및 구성]  이곳을 참고하여 centos7 을 미리 설치하도록 한다.


2. 설치 및 구성

기본적으로 centos 가 설치된 상태에서 혹시나 rpm 으로 apache+php+mysql(apm) 이 설치가 되어있다면, 지우는걸 추천한다.

yum remove -y httpd*
yum remove -y php*
yum remove -y mysql*

rpm 으로 설치된 어플리케이션은 소스컴파일보다 여러가지 설정을 컨트롤 하기 쉽지 않으며, 소스컴파일은 설치 과정에서 조금더 최적화 를 진행할수 있는게 장점이다. 또한 디렉토리 관리 데이터 관리 또한 간편하다. (이건 주관적인 입장이다)

그래서 본 포스팅은 소스컴파일 위주로 진행하고, 부득이한 부분은 yum 으로 대처하도록 하겠다.

설치 순서는 필수라이브 러리 -> mysql -> apache -> php 순으로 진행 할 예정이다. 설치는 크게 어렵지 않으며, 순서대로 잘 따라와주면 된다.


2-1 필수라이브러리 설치

apache+php+mysql 설치에 앞서 리눅스 os 시스템에 필수 라이브러리를 설치해야된다. yum 을 이용해서 설치하도록 한다.

yum -y install vim php-gd
yum -y install net-tools
yum -y install zlib libpng freetype jpeg gd libxml2
yum -y install freetype-devel
yum -y install gmp-devel
yum -y install libX11-devel
yum -y install libtermcap-devel ncurses-devel
yum -y install make cmake
yum -y install gcc g++ cpp gcc-c++
yum -y install perl
yum -y install gdbm-devel
yum -y install ncurses-devel
yum -y install bison
yum -y install zlib curl
yum -y install curl-devel
yum -y install openssl openssl-devel
yum -y install bzip2-devel
yum -y install libtermcap-devel libc-client-devel
yum -y install wget unzip
yum -y install libxml2*
yum -y install bzip2*
yum -y install libjpeg-devel
yum -y install expat-devel*
yum -y install gd-devel*
yum install -y perl-Module-Install.noarch

ln -s /usr/lib64/libjpeg.so /usr/lib

ln -s /usr/lib64/libpng.so /usr/lib
ln -s /usr/lib64/libXpm.so.4 /usr/lib64/libXpm.so

2-2 mysql 설치

mysql 설치 버전은 5.6.30 버전이다(현재 2016.4.8일자). 각각의 버전별로 설치방법이 조금씩 다르고 구성방법들도 조금씩 달라졌다. 왜 5.6.x 버전을 설치하는지 이유는 간단하다. 이전버전보다 훨씬더 좋은 퍼포먼스를 제공하고 있기 때문이다. 당연한 말이지만..
(5.7.x 버전의 경우 php 라이브러리 연동문제가 발생하여 현재 분석이 조금더 필요하다)

자 그럼 아래 설치순서를 진행해보자.

mysql 을 다운받는다.
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.30.tar.gz

cmake 를 이용해서 configuration 및 make install 를 함께 진행하도록 한다.
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.30 -DMYSQL_DATADIR=/usr/local/mysql-5.6.30/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DSYSCONFDIR=/etc -DMYSQL_TCP_PORT=3306 && make && make install

설치된 mysql 디렉토리를 심볼릭링크로 쉽게 접근할수있도록 변경한다.
ln -s /usr/local/mysql-5.6.30/ /usr/local/mysql

mysql 실행 유저를 생성한다
useradd mysql

mysql 디렉토리 권한을 mysql 실행유저로 변경을 해줘야지 서비스가 정상적으로 올라갈수있다.
chown -R mysql.mysql /usr/local/mysql-5.6.30
ln -s /usr/local/mysql-5.6.30/ /usr/local/mysql

Centos 6.x 버전 이전에 사용하던 시스템 서비스 관리 명령어를 실행하기 위해서 링크를 걸어주는것이다. 이렇게 링크 설정을 하게되면, /etc/init.d/mysqld start 식으로 명령어를 실행할수있으며 service mysqld start 도 동일하다.
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

mysql data 파일을 생성하는 명령어다. 쉽게 말해서 초기 DB 구성 및 환경설정 작업을 진행한다.
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

/usr/local/mysql/bin/mysql --verbose --help | grep -A 1 'Default options'

mysql 기본환경설정 셋팅(튜닝x)을 진행한다.
vi /etc/my.cnf
-------------추가----------------------------------------
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql

[mysqld_safe]
log-error=/usr/local/mysql/data/mysqld.log
pid-file=/usr/local/mysql/data/mysqld.pid
port=3306
-----------------------------------------------------------

실행파일을 심볼릭링크를 걸어줌으로써 간편히 명령어를 사용할수 있다.
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqldump /usr/sbin/
ln -s /usr/local/mysql/bin/mysqladmin /usr/sbin/

64bit 환경에서 php 설치시에는 아래와 같이 lib 디렉토리를 lib64디렉토리로 심볼릭링크 해줘야 설치를 진행할수 있을 것이다. 32bit 는 상관없다.
cd /usr/local/mysql/
ln -s lib lib64

아래명령어도 함께 입력한다. mysql 라이브러리를 지정해줘야지, 나중에 php와 연동할때 꼭 필요하다
echo "/usr/local/mysql/lib/" >> /etc/ld.so.conf
ldconfig

mysql 실행한다.
service mysqld start

mysql -uroot -p
패스워드 없이 엔터만 치면 된다.



설치 완료 모습이다.

######### 아래는 5.7.x 이상 버전설치 완료시 #########

/usr/local/mysql/bin/mysql_secure_installation

---------------설정 화면--------------------------------------------------------------------
Securing the MySQL server deployment.

Connecting to MySQL server using password in '/root/.mysql_secret'

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Using existing password for root.

Estimated strength of the password: 50
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y

New password:

Re-enter new password:

Estimated strength of the password: 25
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
 ... Failed! Error: Your password does not satisfy the current policy requirements

New password:

Re-enter new password:

Estimated strength of the password: 25
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
 ... Failed! Error: Your password does not satisfy the current policy requirements

패스워드 길이가 짧아서 설정이 안되고있는 모습이다. 8글자 이상으로 패스워드를 설정한다.

New password:

Re-enter new password:

Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : n

 ... skipping.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n

 ... skipping.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!
-----------------------------설정 완료---------------------------------------------------------



다시 mysql 를 root 권한으로 실행해보자
mysql -uroot -p
Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.11

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql 초기 패스워드를 꼭 변경해줘야된다.

mysql> update user set authentication_string=password('1234') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

이렇게 mysql 5.7.x 설치 및 실행까지 성공적으로 완료되었다. 
#############################################


- 다음 포스팅에서 계속 -


시골청년
리눅스 가상머신 KVM 설치 및 구성 - 2(추가 구성내용)
프로그램명 : KVM
운영체제 : Linux
작성자 : 서비님(https://dslee1.blogspot.kr/)

-------------------------------------------------------------------------------------------------- 이 포스팅과 관련된 포스팅

- 리눅스 가상머신 KVM 설치 및 구성




[KVM 추가적인 내용]

이전포스팅 에서 KVM 설치 및 구성에 관해서 자세히 살펴보았었다. (리눅스 가상머신 KVM 설치 및 구성)

오늘은 리눅스 가상머신인 virt-manager 설치중에 여러 문제가 발생할 경우 대처방법에 대해서 살펴볼 것이다.


때문에 설치 방법 보다는 kvm 설치 후 gui 도구인 virt-manager 를 설치해서 사용할때 생겼던 문제들과 처리 방법 등에 대한 내용을 설명하고자 남기는 글이다.


yum groupinstall "가상화"
(설치 언어를 영문으로 설치 했을 경우. #yum grouplist 라는 명령어를 통해 확인 후 설치.)


그다음 리눅스 가상화를 사용하기 위한 Linux API 인  libvirt 설치.


yum install libvirt
/etc/ini.d/libvirtd start
chkconfig --add libvirtd
chkconfig --level 345 libvirtd on


다음으로 손쉽게 GUI화면을 사용하여 가상화를 이용하기 위한 도구인 virt-manager 설치
yum install virt-manager


여기까지만 하면 기본적으로 사용이 가능하다...근데
환경에 따라 틀리지만 minimal 에서 구성하였거나 그외의 경우
virt-manager 실행시


이와 같은 메시지를 뿌린다...찾아보자…

클라이언트에서 ssh로 접속하여 virt-manager를 띄우고 싶다면 X포워딩을 사용하는 것은 알 게다...처음 X포워딩을 이용하여 접속 화면을 보자…


X11 forwarding request failed on channel 0

이라고 패스워드 다음에 위와 같은 메시지를 볼 수 있다...짜증난다!!!

yum 을 이용해 아래의 패키지를 설치.
ssh 의 X포워딩을 사용하기 위해 필요한 패키지이다.

yum install  xorg-x11-xauth


그리고 logout 후 다시 재접속.




/usr/bin/xauth:  creating new authority file /home/myji/.Xauthority



자 다시 virt-manager 를 실행시켜 보자.




한글이 깨진다………알아볼수가 없다..
또 고쳐주자.



virt-manager 에서 한글 폰트를 사용하기 위한 패키지가 설치되어 있지 않았다.



yum install un-core-*


이와 같은 패키지들이 검색이 된다. 설치해주자.


virt-manager


이외에도 설치시 os 버전및 설치 환경에 따라 다양한 오류나 문제점들을 발견 할수도 있다.

이런 하나하나를 찾아가고 수정하는게  Linux 의 묘미가 아닌가 싶다.

<TIP>
[윈도우에서 접속하는 방법]

여기에서 클라이언트 다운받운후 putty 로 접속하면 된다. 그리고 putty 실행창에서 x11 enable 이라는 항목이 있는데 이걸 체크 하면 됨.


시골청년 2016년 4월 6일 수요일
시스템 모니터링 툴 sar
[SAR(System Activity Reporter)를 이용한 시스템 모니터]


[시스템 환경]
Cpu : Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz
Ram : 1G
Hdd : 10G
아키텍쳐: 64bit
KVM 가상화 환경.
작성자 : 서비님(https://dslee1.blogspot.kr/)


--------------------------------------------------------------------------------------
이 포스팅과 관련된 포스팅

리눅스 디스크 관리 툴 iostat

리눅스 트래픽 모니터링 vnstat


1. 개요


sar명령어는 지금 현재의 시스템 상황보다는 이전의 로그를 바탕으로 어떤 시기에 어떤 일들이 있었는가를 측정하여 시스템의 장기적인 부하량을 예측하고 대처할 수 있도록 해 주는 프로그램이다.   쉽게 말해서 시스템의 모니터링 툴 중에 하나 이다.


2. 내용


그러면 sar 의 주요 기능을 한번 살펴보도록 하겠다.


sar에서 확인할 수 있는 사항
- I/O 전송량 - 페이징- 프로세스 생성 숫자
- 블락 디바이스 활동
- 인터럽트 - 네트워크 통계
- run 큐 및 시스템 부하 평균
- 메모리와 스왑 공간 활용 통계
- 메모리 통계
- CPU 이용도
- 특정 프로세스에 대한 CPU 이용도
- inode, 파일, 기타 커널 테이블에 대한 상태
- 시스템 스위칭 활동(context switch)
- 스와핑 통계 - 특정 프로세스 통계
- 특정 프로세스의 자식 프로세스 통계
- TTY 디바이스 활동


생각보다 많은 것들을 확인 할수 있는 좋은 툴이다.


[설치]


그럼 sar 설치는 어떻게 하면 될까?


간단히 yum install sysstate 명령을 이용해서  설치하면 간편하게 설치가 완료!!
아니면 아래 사이트에서도 다운로드 받아 설치가 가능하다.


사용옵션 정리
- sar명령어에 옵션을 주지 않고 수행했을 경우 -u옵션이 default로 적용된다.
- sar -A: 모든 관련정보를 출력한다.
- Shell> sar
%user : 사용자 레벨(application level) 에서 실행중일때의 CPU 사용률 (%)
%nice : 사용자 레벨(appliaction level) 에서 nice 가중치를 준 CPU 사용률(%)
%system : 시스템레벨(kernel) 에서 실행중일때의 CPU 사용률(%)
%iowait : system이 I/O요청을 처리하지 못한 상태에서의 CPU의 idle 상태인 시간의 비율(%)
%steal : virtual processer에 의한 작업이 진행되는 동안 virtual CPU에 의해 뜻하지 않는 대기시간이 생기는 시간의 비율(%)
%idle : CPU가 쉬고있는 시간의 %


[명령어 살펴보기]


sar 5 2




5초 간격으로 2회 수행.




sar -b


버퍼의 activity를 점검하여 I/O와 transfer의 통계를 출력한다.


[위에 표시된 숫자의 의미는 아래를 참조.]
tps: 물리적 디스크에서 발생한 초당 전송량이며, 여기서의 전송은 물리적 디스크에 요청한 I/O이다.
rtps: 물리적 디스크로부터 발생된 초당 읽기의 총 요청 횟수
bread/s: 드라이브 안의 블럭에서 초당 읽은 데이터의 총합.
bwrth/s: 드라이브 안의 블록에서 초당 쓰여진 데이터의 총합


sar -B


페이징 통계를 출력.




[위에 표시된 숫자의 의미는 아래를 참조.]
pgpgin/s: 디스크로부터 초당 paged in된 page의 총 수
papgout/s: 디스크에 초당 paged out 된 page의 총 수


sar -w


새롭게 만들어져 활동하고 있는 프로세스를 출력한다.




sar -d


* DEV: network device의 결과로부터의 통계
 IFACE: Network Interface 이름
 rxpck/s: 초당 받은 패킷수
 txpck/s: 초당 전송한 패킷수
 rxbyt/s: 초당 받은 bytes
 txbyt/s: 초당 전송한 bytes
 rxcmp/s: 압축된 패킷을 초당 받은 수
 txcmp/s: 압축된 패킷을 초당 전송한 수
 rxmcst/s: 초당 받은 다중 패킷 수




sar -r


가용메모리 점검 및 메모리 공간의 통계를 출력한다.


kbmemfree : 사용가능한 총 메모리의 양(kbytes)
kbmemused : 사용중인 총 메모리의 양(kbytes), 커널에서 사용중인 메모리는 제외
%memused : 사용된 메모리의 %
kbbuffers : 커널에서 buffer 메모리로 총 사용된 메모리의 양 (kbytes)
kbcached : 커널에서 cache data 로 사용된 총 메모리의 양(kbytes)
kbcommit : 현재 작업을 위해 필요한 메모리의 총량(kbytes),메모리 부족이 발생하지 않기 위한 RAM/swap 사용량의 추정치  
%commit : 현재 작업을 위해 필요한 메모리 총량의 %, kernel은 보통 메모리를 overcommits하므로 일반적으로 100%를 넘을 것이다.



sar -R


메모리 통계.


frmpg/s : 시스템에서 초당 자유로워진 memory pages 의 양 페이지의 크기는 시스템 아키텍쳐에따라 달라지며 보통 4K / 8K 이다.
bufpg/s : 시스템에서 초당 buffer 에 추가적으로 더해진 memory pages 의 양  
campg/s : 시스템에서 초당 system에 의해 cache된 memory pages 의 양




[그외의 명령어 정리]


sar -S → 스왑 점검 및 공간의 통계를 출력한다.
sar -v → 커널테이블 & 파일에서 inode의 상태를 출력한다.
sar -w → 작업 생성과 시스템 switching활동 현황 출력
sar -W → swapping의 통계 출력 


[sar 설정하기]


- sa1은 매 10분마다 시스템 모니터링한 결과를 /var/log/sa/saXX파일에 바이너리 형태로 기록한다. XX는 기록하는 날짜이다.
- sa2 -A는 23시 53분에 바이너리 파일을 읽어서 사람들이 볼 수 있도록 보고서를 만든다. /var/log/sa/sarXX 형태로 기록된다. sa1에서 5 3이라고 해놓으면 매 10분마다 실행을 하면서 5초동안 3번을 기록한다는 뜻이다.
- sar를 이용하여 각 결과 값을 위에 설명한 옵션을 이용하여 확인하면 된다.


3. 마무리


지금까지 sar 에 대해서 살펴보았다. 시스템 관리를 하다보면, 부하가 언제부터 진행이 되었고, 현재 시스템에서 어떠한 곳에 부하가 많이 발생하는지 체크할수 있는 프로그램으로 좋을것 같다.
사용법도 어렵지 않고, 가볍게 사용할수 있으며,  각 프로세스의 사용률을 % 단위로 알수 있어서 좋은 점수를 주고 싶다.


시골청년 2016년 3월 28일 월요일
CentOS. php 2개 설치
Program : php 7.0.4
OS : Centos 6.5 64bit
CPU : Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz(Vitual Box)
Men : 2G
작성자 : 서비님(https://dslee1.blogspot.kr/)


1.개요


리눅스 운영체제에서 하나의 웹서버(apache) 하나의 php 를 운영중에 있다. 하지만 필요에 따라 apache 2대를 서비스 하거나 php 2대를 서비스해야되는 경우가 종종 발생된다.


apache 2대 서비스 방법에 대해서는 다음시간에 설명을 하고, 이번시간에는 php 2대를 서비스하는 방법에 대해서 설명하도록 하겠다.


2.설치


이번에 설치할 php 버전은 현재(2016.3.21) 최신버전인 7.0.4 버전 이다.
기존설치된 php 환경은 5.2.17 버전으로 오래된 버전이지만 안정성이 높고, 범용적으로 사용하는 버전이다.


2.1 mod_proxy 설치
cd /usr/local/src/httpd-2.2.31/modules/proxy
/usr/local/apache/bin/apxs -aic mod_proxy.c proxy_util.c


2.2 mod_prox_fcgi 설치
cd /usr/local/src      
wget https://github.com/ceph/mod-proxy-fcgi/archive/master.zip
mv master.zip mod-proxy-fcgi-master.zip
unzip mod-proxy-fcgi-master.zip
cd mod-proxy-fcgi-master
autoconf
### apxs path 설정 ###
export PATH=$PATH:/usr/local/apache/bin
./configure && make && make install


2.3 php 설치

cd /usr/local/src
tar xvfz php-7.0.4.tar.gz
cd php-7.0.4


./configure --prefix=/usr/local/php-7.0.4 --with-config-file-path=/usr/local/php-7.0.4/lib       --with-gd --with-freetype-dir --with-zlib --enable-sockets --enable-gd-native-ttf --with-png-dir       --with-jpeg-dir --enable-sigchild --with-gettext --enable-mbstring --enable-inline-optimization       --enable-bcmath --enable-shmop --enable-calendar --enable-ftp --with-gdbm --with-iconv       --enable-mbregex --with-openssl --with-curl=/usr/local/curl/ --enable-soap --disable-debug --with-mcrypt       --with-kerberos --enable-zip --with-zlib-dir --enable-exif --enable-fpm --with-fpm-user=nobody       --with-fpm-group=nobody --with-mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql


make && make install


## 환경설정 및 기타파일 복사 ##
cp php.ini-production /usr/local/php-7.0.4/lib/php.ini
cp /usr/local/php-7.0.4/etc/php-fpm.conf.default /usr/local/php-7.0.4/etc/php-fpm.conf
cp /usr/local/php-7.0.4/etc/php-fpm.d/www.conf.default /usr/local/php-7.0.4/etc/php-fpm.d/www.conf
cp sapi/fpm/init.d.php-fpm /usr/local/php-7.0.4/bin/php-fpmctl
chmod 700 /usr/local/php-7.0.4/bin/php-fpmctl


## 설정파일 내용 수정 ##
vi /usr/local/php-7.0.4/lib/php.ini


short_open_tag = On
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_STRICT
display_errors = On
date.timezone = "Asia/Seoul"


## 서비스실행 파일 복사 ##
ln -s /usr/local/php-7.0.4/bin/php-fpmctl /etc/init.d/php-fpmctl
chkconfig  php-fpmctl on
service php-fpmctl start


3.적용 및 테스트


3.1 모듈확인
## 모듈이 정상적으로 httpd.conf 파일에 적용되었는지 확인 ##
grep mod_proxy /usr/local/apache//conf/httpd.conf
grep mod_proxy_fcgi /usr/local/apache//conf/httpd.conf


만약 아무런 메시지도 표시 안되면 적용 안된것임.
LoadModule proxy_module       modules/mod_proxy.so
LoadModule proxy_fcgi_module       modules/mod_proxy_fcgi.so


적용해준다.


3.2 vhost.conf 적용

## proxy 방식으로 서비스 되기 때문에 각각의 virtual host 에 별도로 등록 해줘야된다.
<VirtualHost *:80>
   DocumentRoot "/home/pstree/www/"
   ServerName pstree.dslee.kr
   ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/pstree/www/$1
</VirtualHost>


/usr/local/apache/bin/apachectl -t
ok 떨어지면
/usr/local/apache//bin/apachectl restart


3.3 테스트
vi /home/pstree/www/phpinfo.php


<?
phpinfo();
?>




스크린샷, 2016-03-21 14:28:55.jpg


4. 마치며..

실제로 php 2개를 동시에 서비스하는 경우는 드물다. 때문에 국내에서 관련문서를 찾기 힘들었는데 이번기회에 설치 및 운영테스트를 함으로써 큰 어려움은 발견되지 않았다. 단지 아파치에서  proxy_fcgi 모듈방식으로 Match 만 잡아주고,  별도로 php-fpm 서비스를 올려주면 쉽게 해결이 되는걸 확인하였다.

시골청년