Nvidia 는 AMD 와 함께 그래픽 카드 시장을 양분하고 있는 회사 입니다. 어느쪽이 더 좋은지는 각 회사에 새로운 제품이 출시될때마다 달라질만큼 우열을 가리기 힘듭니다. Nvidia 와 AMD 는 리눅스를 위한 드라이버도 만들어서 배포하는데 CentOS 7 에서 Nvidia Driver 를 설치하는 방법에 대한 것입니다. 사실 AMD HD2600 을 썼었는데 AMD 에서 더 이상 드라이버를 업데이트를 해주지 않아 그래픽 가속을 쓸수 없었는데, 몇일전에 Nvidia Geforce GTS 450 이 손에 들어와서 설치하는 과정을 정리한 글이기도 합니다. 1. Requirement Nvidia Driver 를 설치하기 위해서는 […]
Nginx Gzip Compression 설정
HTTP 에서도 압축전송을 지원 합니다. 이는 Header 에 압축에 대한 정보가 다음과 같이 담깁니다. Nginx Gzip Compression 설정 은 다음과같이 하시면 됩니다.
1 |
Content-Encoding: gzip |
압축전송을 하게되면 트래픽을 줄일 수 있어, 서버 호스팅을 이용하는 분들에게는 큰 도움이 됩니다. 사용법은 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# gzip compression 켜기 gzip on; # 파일을 압축하기 위한 최소 파일 크기 gzip_min_length 1100; # gzip 버퍼 크기, 4 32k 면 대부분 상황에서 적당한 크기 입니다. gzip_buffers 4 32k; # 압축을 적용할 파일타입. 파일타입은 MIME 타입을 말함. gzip_types text/plain application/x-javascript text/xml text/css; # 헤더 응답에 "Vary: Accept-Encoding" 리턴. gzip_vary on; # 압축률 지정. 1 ~ 9 사이이며 9가 최고등급의 압축. gzip_comp_level 9; # 압축을 사용하기 위해서 클라이언트에게 HTTP 1.1 사용하도록 요구함. gzip_http_version 1.1; |
잘 동작하는지 다음과 같이 테스트를 할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 |
curl --header "Accept-Encoding: gzip,deflate,sdch" -I http://linux.systemv.pe.kr HTTP/1.1 200 OK Server: nginx/1.6.1 Date: Mon, 03 Nov 2014 14:22:28 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive Keep-Alive: timeout=5 Vary: Accept-Encoding X-Powered-By: PHP/5.3.3 X-Pingback: http://linux.systemv.pe.kr/xmlrpc.php Content-Encoding: gzip |
“Content-Encoding: gzip” 이 보이면 정상으로 설정이 된 것 입니다.
Atheros AR81 Family GigaEthernet 드라이버 설치.
AMD 칩셋을 달고 나오는 저가형 메인보드의 경우에 Atheros 의 Ethernet 칩셋을 탑재하는 경우가 있습니다. 문제는 Atheros Ethernet 드라이버가 윈도우용은 제공하는데 리눅스용은 제공을 않하더군요. 인터넷을 검색해보니까 누군가 리눅스용 드라이버를 제작해 놨는데, 오래된 경우라 최신의 리눅스 커널을 위해서는 패치를 해야하고 그 패치도 누군가 만들어서 올려놨더군요. 이 문서는 Atheros AR81 Family GigaEthernet 리눅스 드라이버를 설치하는 방법을 설명한 것 입니다. 1. 다운로드 첨부파일을 다운로드 하면 됩니다. 첨부파일: AR81Family-linux-v1.0.1.14.tar 2. 설치 먼저, 커널 소스를 설치합니다. 현재 설치된 커널의 버전에 맞는 것을 설치해야 합니다.
1 2 3 |
uname -r #2.6.18-398.el5PAE yum install kernel-PAE-devel |
Atheros […]
TIMESTAMP and DATETIME 기능 개선
MariaDB 10 버전이 올라가면 기능이 향상되는데, TIMESTAMP 와 DATETIME 의 데이터 타입(Data Type)을 사용하는 컬럼에 경우 Update, Insert 시에 몇가지 기능이 향상되었습니다.
1 2 3 4 5 6 |
CREATE TABLE test_date ( a INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, b INT, created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); |
여기서 주목해야 할 것은 ‘created TIMESTAMP DEFAULT CURRENT_TIMESTAMP‘와 ‘updated TIMESTAMP ON UPDATE CURRENT_TIMESTAMP‘ 입니다.
1 2 3 4 5 6 7 8 9 10 |
desc test_date; +---------+------------------+------+-----+---------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +---------+------------------+------+-----+---------------------+-----------------------------+ | a | int(10) unsigned | NO | PRI | NULL | auto_increment | | b | int(11) | YES | | NULL | | | created | timestamp | NO | | CURRENT_TIMESTAMP | | | updated | timestamp | NO | | 0000-00-00 00:00:00 | on update CURRENT_TIMESTAMP | +---------+------------------+------+-----+---------------------+-----------------------------+ 4 rows in set (0.01 sec) |
Default와 Extra 컬럼에 내용을 자세히 보십시오. 여기서 Insert 를 다음과 같이 합니다.
1 2 3 4 5 6 7 8 9 10 |
root@localhost:test 16:40:38> INSERT INTO test_date SET b=1; Query OK, 1 row affected (0.02 sec) root@localhost:test 16:41:38> SELECT * FROM test_date; +---+------+---------------------+---------------------+ | a | b | created | updated | +---+------+---------------------+---------------------+ | 1 | 1 | 2014-10-26 16:41:38 | 0000-00-00 00:00:00 | +---+------+---------------------+---------------------+ 1 row in set (0.00 sec) |
‘created’ 컬럼에 자동으로 시간이 등록됩니다. 과거에는 다음과 같이 해줬어야 했습니다.
1 |
INSERT INTO test_date SET b=1, created=now(); |
‘now()’ 함수를 사용해서 했어야 했지만 Mariadb 10 에서 TIMESTAMP 타입을 이용해서 컬럼을 정의하면 더 손쉽게 자동으로 처리를 해줍니다. 다음과 […]
아파치 로그 분석하기
아파치 웹 서버에는 접속에 대한 로그를 남길 수 있습니다. 로그의 형식은 다양하지만 대략적으로 어느 컴퓨터(IP 주소)에서 어떤 기기, 어떤 프로그램을 이용해서 어떤 웹 페이지를 접속했는지, 각 컨텐츠의 전송량등의 정보가 담깁니다. 이 문서는 아파치 로그 분석하기 에 대한 것입니다. 전송량 통계 로그 파일에 컨텐츠의 전송량이 담기기 때문에 이것들을 전부 더하면 아파치 웹 서버가 내보낸 전송량을 알 수 있겠지요? awk 쉘 스크립트로 간단하게 할 수 있습니다.
1 |
awk '{ s += $10 } END { print "Total ", s/1024/1024 " MB", "- Average ", s/NR/1024/1024 " MB", "- Access ", NR }' access_log |
여기서 중요한 것이 access_log 파일에 전송량을 표시하는 위치 입니다. 위 명령어 앞줄에 ‘s += $10’ […]
MariaDB 10 소스 설치
MariaDB 는 MySQL 의 오픈소스 버전 입니다. MySQL 를 최초로 개발한 사람이 점점 폐쇄성이 짙어가는 MySQL 을 대체하기 위해 MySQL 을 복제하고 기능을 개선한 MySQL 의 또 다른 버전 입니다. 현재 MariaDB 는 10.0.14 버전 입니다. MariaDB 10 소스 설치를 해보겠습니다. 설치 환경은 다음과 같습니다. 배포판: CentOS 7 아키텍쳐: 64bit 준비 MariaDB 10.0.14 버전은 MariaDB 홈페이지에서 다운받을 수 있습니다. 그런데, 이 소스 버전을 가지고 설치를 할 수도 있지만, Fedora 배포판에서 패치한 버전을 가지고 설치를 해보겠습니다. Fedora 배포판의 경우에 10.0.14 버전에 […]
MariaDB 오픈 소스 데이터베이스
MariaDB 는 한 개발자의 노력을 시작된 오픈 소스 프로젝트 입니다. 과거 오픈 소스 데이터베이스의 대명사인 MySQL 을 개발한 개발자 중에 한인 Monty Widenius. 1962년 핀란드 태생으로 1995년 MySQL 데이터베이스를 개발하기 시작해서 그 이듬해에 첫 릴리즈를 하게 됩니다. 그리고 1998년, 3.21 버전부터 www.mysql.com 을 만들어 운영하면서 명실상부한 오픈 소스 데이터베이스로 발을 딛기 시작 합니다. MySQL은 오픈소스 정책을 가지고 있지만 개발과 판매등을 총괄하는 회사가 있습니다. MySQL AB 라는 회사인데, 개발지원에서부터 판매, 홍보까지 MySQL에 거의 모든것을 관장하던 회사입니다. MySQL이 오픈소스이긴 하지만 라이센스정책이 이중으로 […]
Apache Options, AllowOverride
Apache 설정 중에 Directory 디렉티브(Directive) 내에서 Options, AllowOverride 등을 사용할 수 있는데 이에 대해서 자세히 알아 보겠습니다. AllowOverride AllowOverride 는 AccessFileName 에 지정한 파일에서 아파치의 설정을 덮어쓸 수 있도록 해줍니다. 보통 AccessFileName 에는 .htaccess 를 지정해주고 DocumentRoot 에 .htaccess 파일에 아피치 설정에 대한 것을 해두면 아파치는 이 파일을 읽어서 반영해 줍니다. 만일 AccessFileName 을 지정하지 않았고 .htaccess 파일이 필요없을 경우에는 AllowOverride 를 사용할 필요가 없기 때문에 다음과 같이 None 으로 설정해주면 좋습니다.
1 2 3 |
<Directory "/home/nymph203/www"> AllowOverride None </Directory> |
AllowOverride 를 사용할때에 지정할 수 있는 […]
smartctl을 이용한 하드디스크 진단
컴퓨터에서 디스크의 의미는 매우 중요합니다. 사람의 데이터를 영구적으로 보관해야 할 의무를 가지 때문이지요. 이러한 디스크에 문제가 발생한다면 데이터를 영구적으로 잃을 수도 있고 오늘과 같이 IT 를 기반으로 사회가 움직이는 마당에 그러한 일이 발생한다면 큰 금전적인 손실을 입을 수도 있습니다. 이렇게 중요한 디스크의 문제나 오류를 차단하기 위해서는 주기적으로 점검을 해야할 필요가 있는데, 리눅스 시스템에서는 이러한 유용한 도구를 제공 합니다. smartctl smartctl 도구는 S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology) 기능이 탑재된 하드디스크를 점검하는 도구 입니다. 사실상 S.M.A.R.T 의 기능을 이용하는 도구이다보니 이 […]
Apache mod_ruid2 설치
Apache 는 TCP/IP 접속과 접속이 이루어진 후에 컨텐츠를 처리하는 프로세스의 권한이 다릅니다. TCP/IP 접속관련은 Root 권한으로 동작하고 이후 동작은 아파치의 설정에 따른 권한으로 실행 됩니다. 아파치의 동작 권한은 다음과 같이 설정 합니다.
1 2 3 4 5 6 |
# User/Group: The name (or #number) of the user/group to run httpd as. # It is usually good practice to create a dedicated user and group for # running httpd, as with most system services. # User nobody Group nobody |
위 설정은 아파치의 컨텐츠를 처리하는 프로세스가 nobody:nobody 권한으로 동작하도록 지정한 것입니다. 그런데, 이렇게 하면 버추얼 호스트(VirtualHost) 설정을 할 경우에 보통 각 계정별로 RootDocument 를 설정하는데, 이럴경우 아파치 프로세스는 한가지의 권한으로 동작하고 모든 계정에 접근해야 함으로 각 계정에 액세스 권한을 줘야 합니다. 그래서 주로 다음과 같이 해줘야 […]