유용한 정보<컴퓨터>/홈서버

홈서버 최적화 방법

조남식 2009. 5. 29. 02:15

 필자가 오랜 시간 동안 Windows 홈서버를 운영한 끝에 만족스러운 Windows 서비스 최적화, Apache+PHP+MySQL 최적화 설정 방법을 찾게 되어 블로그를 통해 정보를 공유하게 되었습니다. 이 포스트에서 소개하는 내용은 Windows Server 2003 운영체제 + APMSETUP 소프트웨어를 기준으로 작성되었습니다.


Windows 서비스 최적화

Net Runtime Optimization Service v2.0.50727_x86
Alerter
ASP.NET Sate Service
ClipBook
Computer Browser
Distributed Link Tracking Server
Error Reporting Service
File Replication
Help and Support
HTTP SSL
Human Interface Device Access
IMAP CD-Burning COM Service
Indexing Service
Intersite Messaging
Java Quick Starter
Kerberos Key Distribution Center
License Logging
Messenger
Microsoft Software Shadow Copy Provider
Net. TCP Port Sharing Service
NetMeeting Remote Desktop Sharing
Network DDE
Network DDE DSDM
Portable Media Serial Number Service
Protected Storage
Remote Registry
Removable Storage
Routing and Remote Access
Secondary Logon
Smart Card
SNMP Trap Service
Special Administration Console Helper
System Event Notification
Telephony
Telnet
Termial Services Session Directory
Theme (Luna[루나] 테마를 사용할 수 없습니다.)
Uninterruptible Power Supply
Volume Shadow Copy
WebClient
Windows Audio (사운드 기능을 사용할 수 없습니다.)
Windows CardSpace
Windows Firewall/Internet Connection Sharing (ICS)
Windows Management Instrumentation Driver Extensions
Windows Presentation Foundation Font Cache 3.0.0.0
Windows User Mode Driver Framework
Windows Time
WinHTTP Web Proxy Auto-Discovery Service
Wireless Configuration
 제어판→관리 도구→서비스에서 회색 박스에 첨부한 항목을 사용 안 함으로 변경하면 불필요한 하드웨어 리소스 사용을 줄일 수 있습니다. 필자의 홈서버에 해당 서비스 항목을 사용 안 함으로 설정하고 오랜 시간 동안 운영해왔지만 문제 되는 부분은 없었습니다.


Apache 웹서버 최적화

1. 세션관리
PidFile E:/temp/apache/httpd.pid
Timeout 5
KeepAlive On
KeepAliveTimeout 2
MaxKeepAliveRequests 100
UseCanonicalName Off
ServerTokens Full
ServerSignature Off
HostnameLookups Off

2. 사용모듈 로드
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule dir_module modules/mod_dir.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule env_module modules/mod_env.so
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
LoadModule imagemap_module modules/mod_imagemap.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule unique_id_module modules/mod_unique_id.so

3. 에러 검사안함
Redirect 404 /favicon.ico
Redirect 404 /MarkAny/Websafer/MaSiteInfo.ini
 Apache 웹서버의 httpd.conf를 메모장으로 열고 회색 박스에 첨부한 내용을 참고해 항목 값을 적절하게 수정하시면 이전보다 훨씬 가볍게 동작하는 Apache 웹서버를 확인할 수 있습니다. 참고로 모듈은 필요한 항목만 활성화하고 필요 없는 항목은 비활성화하고 사용하는 것을 추천합니다. (상기 모듈값은 제로보드XE, 그누보드4, 텍스트큐브에서 테스트 되었습니다)


Apache 웹서버 메모리 반환 문제 임시 해결방법

 Apache 웹서버가 메모리를 제대로 반환하지 않는 문제를 겪고 계신다면 이 포스트에서 소개하는 내용을 참고해 Apache 웹서버를 사용자가 지정한 일정에 따라 자동으로 재시작되도록 설정할 수 있습니다. 참고로, Apache 메모리 반환 문제에 대한 근본적인 해결책은 아니지만, 문제를 해결하기 전까지 임시로 사용하기에는 괜찮은 것 같아 공유하게 되었습니다.


PHP 최적화

1. 서버의 타이머 설정
max_execution_time = 30
max_input_time = -1

2. 안전모드 및 함수 조절
safe_mode = Off
safe_mode_gid = Off
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
expose_php = Off
disable_functions = shell_execc,passthru,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

3. 첨부파일 용량 향상
max_execution_time = 0
max_input_time = 0
memory_limit=20M
post_max_size=2048M
upload_max_filesize=2048M

4. 플러그인 설정
extension=php_mbstring.dll
extension=php_exif.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_mcrypt.dll
extension=php_mysql.dll
extension=php_mysqli.dll
 필자가 사용 중인 PHP 최적화의 경우 혼자서 사용한다는 가정하에 만들어졌습니다. 첨부파일의 경우 최대 2048M(2GB)까지 첨부가 가능합니다. 물론, 이 정도의 파일은 게시물로 게시할 일이 없습니다. 더불어, 플러그인은 가장 기본적인 항목인 gd2를 비롯한 mysql등만 로드하도록 설정하였습니다. 위의 설정값으로 제로보드XE, 텍스트큐브와 같은 설치형 서비스의 설치 및 사용에 전혀 문제가 되지 않습니다. 필요시에는 extension=을 추가로 만들어서 플러그인을 추가해주시면 됩니다.


MySQL 최적화

1. 이전 버젼 연동 (주석처리)
#old_passwords=1
#connect_timeout = 10

2. 인덱스 버퍼 크기 조절
key_buffer = 8M
 이 항목의 경우에는 이전 버전 연동에 관한 항목을 주석 처리하여 보안을 향상시켰으며, 인덱스 버퍼 크기를 조절함으로써, MySQL의 효율성을 높여주었습니다. 물론, 위의 설정값은 가장 기본적인 설정값이며, MySQL의 경우 서버의 성능에 많은 영향을 주지 않으므로 설정할 수 있는 옵션이 많지 않은 편입니다.