LINUX(리눅스) - 해당되는 글 65건
1. apache 설치(httpd)
yum install httpd

2. mysql 설치
yum install mysql
yum install mysql-server

3. php 설치

yum install php

여기까지 하면 php 연동은 되지만 mysql 연동은 되지 않는다.

4. php-mysql 연동 설치
yum install php-mysql
리눅스  |  07/04/19 13:37

'LINUX(리눅스)' 카테고리의 다른 글

리눅스 하드 추가 방법  (0) 2008.10.14
tar 간단 사용법  (0) 2008.10.14
yum 실행시 GPG 키 관련 에러  (0) 2008.10.14
sendmail 센드메일 설정 (SMTP-AUTH 포함) - 센트OS 4.2  (0) 2008.10.14
PHP + Mysql 연동 확인  (0) 2008.10.14
|
1. yum 실행시 GPG 키 관련 에러 발생할 때
fedora3에 와서는 yum으로 패키지를 업데이트할 때 GPG 키를 요구한다.

#yum -y update
You have enabled checking of packages via GPG keys. This is a good thing. However, you do not have any GPG public keys installed. You need to download tje keys for packages you wish to install and install them.
You can do that by running the command:
rpm --import public.gpg.key
For more information contact your distribution or package provider.


그런데 위의 메시지처럼 rpm --import public.gpg.key를 실행해도 이 역시 에러가 난다. 이때는 다음과 같은 커맨드로 패키지를 다운로딩할 사이트의 키를 가져오면 된다.


#rpm --import /usr/share/doc/fedora-release-3/RPM-GPG-KEY*
#rpm --import http://www.fedoralegacy.org/FEDORA-LEGACY-GPG-KEY


참조 : http://www.fedorafaq.org/#gpgsig





2 Package Update
불필요한 패키지를 삭제하려면, System Settings(시스템설정)->Server Settings(서버설정)->Services(서비스)에서 선택적으로 삭제해도 되며 rpm, yum을 이용하여 패키지를 삭제한다.

# yum remove slocate
yum을 사용하려면 먼저 yum 리스트를 업데이트 해준다. yum의 미러 사이트 목록을 담고 있는 yum.conf 파일을 다음의 url에서 다운받는다.
http://www.fedorafaq.org/samples/yum.conf


그리고 이 파일을 /etc/yum.conf로 카피해 준다. 이제 yum으로 설치할 수 있는 소프트웨어가 무엇이 있는지 확인해 보자.


#yum list available
만약 특정 패키지를 설치하고 싶다면 "yum install packagename" 하면 된다. 예를 들어,


#yum install gaim
라고 입력하면 gaim뿐 아니라 gaim을 설치하기 위해 의존성이 걸린 패키지까지 설치할 수 있다.(필자는 X윈도우에서 MSN 메신저를 사용하려고 gaim을 설치했다.)

설치뿐 아니라 패키지 업데이트를 위해선 "yum update packagename"라고 입력하면 된다. 만약 모든 패키지를 업데이트하고 싶다면,


#yum -y update
이렇게 하면 모든 패키지를 업데이트하므로 한세월이 걸린다.

시스템에서 어떤 패키지가 업데이트 필요한지를 보려면,


#yum check-update
패키지를 설치하기 전에 search 옵션으로 패키지에 대해 미리 알아 볼 수 있다.


#yum search packagename
그외 자세한 옵션은 man 페이지를 참조한다.

fedora core2부터는 다시 up2date를 지원하긴 하지만, Unofficial Fedora FAQ에서는 패키지 업데이트를 위해 up2date보다는 yum을 권장하고 있다.


GUI용 패키지 관리자(system-config-packages)를 설치했다면,


#system-config-packages
|
작성자 : 김주홍

1. sendmail 설정 (센트OS 4.2기준)
- 먼저 rpm -qa |grep sendmail 명령으로 sendmail이 설치되어 있는지 확인, 없으면 시디로 팩키지를 설치해준다
- 설치할 팩키지 -> sendmail-cf-8.13.1-2
- Pop3를 사용할려면 imap 팩키지가 설치되어 있어야 함(dovecot) -> 기본 imap에 비해 보안향상

**/etc/dovecot.conf 화일 변경

14라인 protocal = pop3 pop3s imap imaps 수정
21라인 imap_listen = [::],pop3_listen = [::] 부분을
        imap_listen = *, pop3_listen = * 으로 수정
22라인  imapslisten = [::],pop3s_listen = [::] 부분을
        imaps_listen = *, pop3s_listen = * 으로 수정
[::]는 ipv6 프로토콜을 의미하며 우리는 ipv4를 사용하므로 *로 바꿔준다.

30 ssl_disable = no 주석제거
87 login_executable = /usr/libexec/dovecopt/imap_login 주석제거
92 login_user = dovecot 주석제거
132 login_executable = /usr/libexec/dovecopt/pop3_login 주석제거
166 #mail_extra_groups = mail_extra_groups = mail 수정
338 imap_executable = /usr/libexec/dovecot/imap 주석제거
353 pop3_executable = /usr/libexec/dovecot/pop3 주석제거
437 auth_executable = /usr/libexec/dovecot/auth 주석제거

dovecot 구동은 selinux설정되어 있으면 꺼주세요.


2. 설정파일 위치
- /etc/mail/sendmail.cf : 센드메일의 가장 기본적인 설치파일 -> 265라인에 addr 제거
- /etc/mail/access : 릴레이 허용파일,기본적으로 로컬만 허용, 허용할 IP,domain추가 한다.
*엑세스 파일 교체되면 makemap hash /etc/mail/access < /etc/mail/access 실행
- /etc/mail/local-host-names : 메일을 수신할 호스트이름 결정

3. sendmail 데몬 시작 / 확인
- service sendmail start 또는 init/sendmail start
- 마지막으로 telnet localhost 25 로 접속해서 아래와 같은 화면이 나오면 정상적으로 SMTP데몬이 돌고 있다.
[root@test mail]# telnet localhost 25
Trying 127.0.0.1...ㅅㄷ
Connected to localhost.
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.12.8/8.12.8; Mon, 12 Apr 2004 14:18:30 +0900

[SMTP-AUTH 인증기능 추가]
* SASL 라이브러리가 설치되어 있어야 함
cyrus-sasl-md5-2.1.19-5.EL4
cyrus-sasl-2.1.19-5.EL4
cyrus-sasl-plain-2.1.19-5.EL4
cyrus-sasl-devel-2.1.19-5.EL4


SMTP 인증 기능을 사용하기 위해서 다음의 라인을 확인한다.
==============================================================================================
TRUST_AUTH_MECH(`LOGIN PLAIN EXTERNAL DIGEST-MD5 CRAM-MD5')dnl
define(`confAUTH_MECHANISMS', `LOGIN PLAIN EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5')dnl
==============================================================================================

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf ->바뀐것을 적용한다.

* 인증확인
[root@hong mail]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.13.1/8.13.1; Fri, 14 Apr 2006 13:22:51 +0900
EHLO localhost
250-localhost.localdomain Hello hong [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250-DELIVERBY
250 HELP

* 현재 인증되는 서버
529 O AuthMechanisms=LOGIN PLAIN EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5
리눅스  |  06/04/14 13:41
|
/* 접속하고, 데이터베이스를 선택 */
$link = mysql_connect("localhost", "root", "")
  or die("접속할 수 없습니다 : " . mysql_error());
echo "접속 성공";
mysql_select_db("test") or die("데이터베이스를 선택할 수 없습니다.");

/* SQL 쿼리 실행하기 */
$query = "SELECT * FROM test";
$result = mysql_query($query) or die("쿼리 실패 : " . mysql_error());

/* HTML로 결과 출력하기 */
echo " \n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
  echo "\t \n";
  foreach ($line as $col_value) {
     echo "\t\t \n";
  }
  echo "\t\n";
}
echo "
$col_value
\n";

/* 결과셋 해제하기 */
mysql_free_result($result);

/* 접속 종료 */
mysql_close($link);
?>
리눅스  |  06/04/05 14:11
|
php+mysql 구버전에서 php+mysql최신버전으로 마이그레이션할때 흔히들 겪는 문제중 아래의 문제들이 있습니다.



1. DB 데이터의 이전 문제

2. php 로 mysql 접속시 한글 인코딩 문제

3. 예약어와 동일한 컬럼명의 사용의 문제

4. PASSWORD 함수 변경의 문제



일반적인 경우 작업하는 사이트에서 문제가 발생하지 않는 다면 위의 두가지 사항은 참고하지 않으셔도 됩니다.



1. DB 데이터 이전 문제

- 기존 DB가 euckr로 구성되어 있었다면 상관이 없습니다. 문제는 기존 DB가 utf-8등으로 구성되었을때의 문제입니다. 이 경우 데이터를 임포트할때 --default-character-set=utf8 등의 옵션을 주어 임포트 작업해야 합니다.



2. php로 mysql 접속시 한글 인코딩 문제

- 최신버전의 PHP에서는 DB의 Default-charset 설정을 따르지 않고, PHP 자체내의 셋팅을 따르는 경우가 많습니다. 따라서 UTF-8로 임포트한 데이터는 php에서 UTF-8로 처리되지 않고 자체 한글 인코딩을 따르는 경우에 한글이 깨지는 경우가 많습니다. 이런경우 mysql_connect 함수로 DB에 접속한 이후, @mysql_query("SET NAMES utf8"); 쿼리를 날려 PHP의 기본 커넥션을 utf-8로 변경해주는 것이 좋습니다.



3. 예약어와 동일한 컬럼명의 사용의 문제

- 구버전의 mysql에서 아무런 에러가 발생하지 않던 쿼리가 새로운 버전의 PHP+mysql에서 문제가 발생하는 경우가 있습니다. 바로 예약어를 컬럼명으로 사용하는 경우입니다. 예를 들어 select * from term where div like '%기타%' 라는 쿼리가 있을때 기존 버전에서는 문제 없이 작동하지만, 신버전의 PHP+mysql에서는 여지없이 에러를 날려버립니다. div이라는 컬럼명때문에 그런건데요. div이란 컬럼명이 mysql에서 예약어로 사용되기 때문에, 예약어와 동일한 이름의 컬럼명을 사용하기 위해서는 컬럼명을 ` ` 으로 묶어야 합니다.



즉, select * from term where div like '%기타%' 쿼리는

     select * from term where `div` like '%기타%' 로 변경되어야 에러가 발생하지 않습니다.



또한 앞으로의 쿼리에는 모든 컬럼명에 `를 붙이면 예약어가 추가되어도 중복될 걱정 없이 사용할 수 있으니, 가급적 컬럼명에 ``로 묶는 습관을 들이는것도 괜찮은 방법 같습니다.

주의) ` 와 '는 다른 문자이오니 주의하시길..쉬프트 없이 물결표시 키..



4. PASSWORD 함수 변경의 문제

- 구버전의 mysql에서는 PASSWORD 함수를 암호화하는데 64bit 암호화 방법을 이용했습니다. 그러나 현재는 128bit 암호화를 사용하도록 변경되었습니다. 문제는 함수의 이름이 과거와 현재가 동일하다는데 있습니다. 64bit 암호화로 저장된 오래된 데이터가 마이그레이션후 128bit PASSWORD 함수로 제대로 풀릴리가 없기때문입니다. 그렇다고 해서 64Bit 암호화된 데이터를 128Bit로 변경할 수 있는 방법이 따로 있는것도 아닙니다.(제가 검색해본결과 없다고 결론내렸습니다.)



방법은 기존 데이터를 날리고, 새로 128bit 암호화를 따라가던가, 보안에서는 손해를 봐야하지만 기존에 사용하던 64bit 암호화 함수를 사용하는 방법이 있습니다. 전자는 설명할 필요가 없고, 후자는 OLD_PASSWORD라는 함수를 사용하시면 됩니다.



예를 들어 select * from member where id='lodes' and passwd = PASSWORD('1234') 라는 쿼리가 있다면 PASSWORD 함수를 OLD_PASSWORD('1234') 로 변경해주시면 됩니다.
리눅스  |  06/04/05 13:31
|
페라도용 RPM과 소스가 설치가 되지 않아..
- yum으로 인스톨 했음 ( yum install webalizer)
- 웹분석은 아파치의 로그파일을 분석해서 화일을 만듬
설정파일에서 기본적으로 수정할것
- LogFile 파일 ->아파치의 로그파일 위치를 지정
- OutputDir -> 홈디렉토리
실행
# /usr/bin/webalizer -c /etc/webalizer.conf 실행
- 아피치 CONF 설정
*Cron으로주기적으로 실행
59 * * * * /usr/bin/webalizer -c /etc/webalizer.conf
- 디렉토리 접근 제한 -인증사용
1.httpd.conf 수정
   293
   294   Options FollowSymLinks
   295   AllowOverride All -> All로 수정확인
   296

   370 AccessFileName .htaccess -> 주석처리 확인
2..htaccess파일을 인증받고자 하는 폴더에서 가서 생성하고 내용삽입
======================================================
AuthType Basic
AuthName web
AuthUserFile /인증디렉토리/.htpasswd
require user web
======================================================
web은 인증사용될 유저 원하시는 이름 만들면 됨
3..htpasswd 생성
host#/usr/local/apache/bin/htpasswd -c /인증디렉토리/.htpasswd web

4. 아파치를 재시작합니다.
# /usr/local/apache/bin/apachectl restart
|
서버 마이그레이션

현재서버

-Redhat9.0 / Linux ns 2.4.20-31.9smp
-중요팩키지 설치상태: mysql 4.0.23a, apache.1.3.33, PHP-4.3.10
-태터툴즈 Tatter Tools Classic - Release Candidate 3
bind백업/sendmail백업 /RPM으로 설치됨
그외 홈페이지 및 mysql database 이전 후 홈피복원


이전서버
-CentOS4.2/2.6.9-34.EL
-중요팩키지 설치:mysql 4.0.26, apache.1.3.34, PHP-4.4.2
-APM연동/FIrewall설정/SElinux 적용안함
-아파치 설정
(내계정 압출파일 풀기-권한확인 태터툴즈의 명우 TT폴더 777 설정해야함)

데이타베이스 백업받은것 복구(복구전에 mysql에서 DB생성및 권한설정)
*4.0대에서 4.1대로 옮길대 주의!!
(백업:./mysqldump -u kjhfull -p tt(디비명) > tt.sql)
./mysql -u kjhfull -p tt < tt.sql
./mysql -u kjhfull -p kjhfull < kjhfull.sql
- bind 복구(센트에서는 존파일 위치가 변경되었음
(/var/named/chroot/var/named/)
- 센드메일 smtpauth 적용 설치
- IP변경 연결확인 하면 끝
|
아파치 2.0.55+mysql 4.0.26+Php 4.4.2 연동
작성자:김주홍 (2006-02-15)
mysql 설치
[root@finebill local]# useradd mysql
[root@finebill local]# groupadd mysql
./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=euc_kr
**MySQL 4.1.X 에서는 --with-charset=euckr 으로 해야 합니다
make
make install
cd /usr/local/mysql/bin
**cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
./mysql_install_db
chown -R mysql.mysql /usr/local/mysql/data
./mysqld_safe &
./mysqladmin -u root password '암호명'
./mysql -u root -p ->mysql접속

=======================================================
MySQL 4.0.X 에서 MySQL 4.1.X 달라진점
4.0.X 에선 4.1.X 는 많은 변화들이 있습니다.
1. mysql 4.1의 table 이름은 utf8으로 저장(한글 테이블명을 사용할수 없습니다.)
2. mysql db 에 user 테이블의 password 필드가 더 길어졌습니다.(16->41)
3. password 다루는 방식이 달라졌습니다. 보안을 강하게 하기 위해서 hashing 메커니즘이 바뀌었습니다.
- hashing 이 16바이트에서 41바이트바뀌었습니다. 보이는건 45바이트. 4바이트는? 소금^^;
- 새로운 포멧은 *부터 시작. 예전포멧은 그렇지 않았습니다.
- 예전 포멧을 사용하려면, old_password()함수를 사용해야 합니다.
4. configure 할때 --with-charset=euc_kr 에서 --with-charset=euckr 으로 바뀌었습니다.

*. 더 자세한 것은. ... http://dev.mysql.com/doc/mysql/en/Upgrading-from-4.0.html 참조하세요

*lmysql 셧다운 시키기 -> ./mysqladmin -u root -p shutdown
*mysql 데이타베이스 생성및 데이터 베이스 계정추가..(제로보드 사용시)
- create database zero_board; // 데이타베이스 생성
- 3) zero_board 데이타베이스에 계정 사용자(ID:kjhfull)를 주고 암호(Password:xxxx)까지
    설정해서 한방에 끝내겠습니다.
- GRANT ALL PRIVILEGES ON kjhfull.* TO kjhfull@localhost IDENTIFIED BY '1234' WITH GRANT OPTION;
*계정 등록을 확인해 보겠습니다.
- use mysql; // 참고로 mysql 은 사용자가 등록되는 DB 입니다.root 도 여기등록 됩니다.
- select * from user; // 위에서 만든 kjhfull 이 사용자에 보여야 함
- DELETE FROM user where user='kjhfull'; 사용자 삭제
==========================================================
apache2 설치
./configure --enable-so --prefix=/usr/local/apache2
make
make install

PHP 설치
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-charset=euc_kr --with-config-file-path=/usr/local/lib
make
make install
cp php.ini-dist /usr/local/php/lib/php.ini

==아파치 conf 수정추가 작업==
기본언어 설정 한글로
AddDefaultCharset EUC-KR

DirectoryIndex index.html index.html.var index.php index.html -> 395라인
AddType application/x-httpd-php .php .htm .php3 .html 추가 -> 838라인
AddType application/x-httpd-php-source .phps
===================================================================
cd /usr/local/apache/bin
./apachectl start

===test.php===
phpinfo();
?>
===============

시작시 자동실행
echo "/usr/local/mysql/bin/mysqld_safe --language=korean &" >> /etc/rc.d/rc.local
echo "/usr/local/apache/bin/apachectl start" >> /etc/rc.d/rc.local
|
센트OS4.2는 리눅스엔터프라이즈 버전의 클론버전으로 최신의 2.6 커널이 탑재되어 있다. 업데이트가 매우 잘되면 패키지들 역시 매우 안정적인 버전으로 구성되어 있다.
*설치하다 보면 SELinux 부분이 있는데 적용하지 않는다.->각종 데몬들실행에 영향을 미치니다. 설정을 했었다..설치후 적용하지 않는다.
ex)부팅시 selinux=0 값적용

커널버전 : Linux cent-42 2.6.9-22
*참고로 반입된 Q서버는 2.6커널에서 부팅이 되지 않는데 이대는 ACPI기능을 부팅시 OFF 시킨다.
SSH 버전 : openssh-server-3.9p1-8.RHEL4.9

전체적으로 Yum으로 업데이트 한번 한다.
yum -y update
*커널Linux cent-42 2.6.9-22.0.2 및 팩키지들이 업데이트 된다.

필요한 서비스를 올린다.
리눅스  |  06/02/23 08:49
|
1. lsof, ps top 등의 명령이 잘 동작하는지 확인한다.

2. /var/log 에 있는 message, maillog 등 메일과 메시지 관련 등의 파일확인 (이 파일들의 저장상태가 0 이거나, 이상상황이면 해킹의심)

3. ps 프로그램을 통하여 이상한 프로세스를 찾아본다.

start .. 등 잘모르는 프로세스가 실행중에 있을경우 man 으로 확인해 본다.

4. 이상한 프로세스가 있으면 find 명령을 통하여 위치를 확인한다.

  find / -name "start" -print

5. 파일의 위치가 정상적이지 않은곳에 위치한다면, 해킹을 단한것이라고 판단한다.

  파일위차가 : /dev/cmd/.../mach 등... 이상한 폴더에 관리중일것이다.

6. 아래 명령을 치면 /dev 아래에 해킹관련 파일들이 나타나기도 한다.

find /dev -type f

 

/dev/MAKEDEV
/dev/shm/ptrace
/dev/shm/bindz
/dev/hdx1
/dev/hdx2
리눅스  |  06/02/21
|

샹콤홍쓰's Blog is powered by Daum & tistory