728x90

phpize 실행시 에러가 발생하면서 동작이 제대로 안되는 현상이 있는 사이트가 있다.


Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF
environment variable is set correctly and then rerun this script.


이런 메시지가 나오면서 phpize 가 실행이 되지 않는다.


검색해보니 http://panic910.tistory.com/52 에 해결방법이 나온다.

따라서 해보니 제대로 동작되고 동적 모듈이 추가된다.


# phpize 실행시 에러가 발생할 때

cd /usr/local/APM/
wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz

cd /usr/local/APM/
tar -zvxf m4-1.4.9.tar.gz
cd /usr/local/APM/m4-1.4.9/
./configure && make && make install

cd /usr/local/APM/
tar -zvxf autoconf-2.62.tar.gz
cd /usr/local/APM/autoconf-2.62
./configure && make && make install


이렇게 해결되기도 하지만, 모듈이 제대로 추가되었다고 나오는데도 불구하고 모듈이 추가되지 않는 곳도 있다.


[root@localhost /]# /usr/local/php/bin/phpize
Cannot find config.m4.
Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module

해결방법

확장할 모듈까지 이동하여 phpize를 실행해야 함.

cd /usr/local/APM/php-5.6.30/ext/snmp
phpize


728x90
블로그 이미지

Link2Me

,
728x90

phpMyAdmin을 접속하면 아래와 같은 메시지가 나오는 사이트가 있다.

이 메시지가 나오지 않도록 해보자.


그리고

PHP언어를 통해 AES 암호화를 하려면 mcrypt_encrypt 함수를 이용해야 한다.
이 함수를 사용하려면 php-mcrypt 모듈 확장을 설치해야 한다.

가장 먼저 할 일은 <?php phpinfo();?> 로 PHP 버전을 확인한다.

그리고 설치된 사항을 확인한다.

PHP 버전을 확인했으면 리눅스 서버에 소스 컴파일했던 PHP 파일이 있는지 찾아본다.

만약 없다면 해당 버전을 받아 압축을 푼다.


=== 참고용 ====

yum install php-mcrypt 를 하면 버전이 낮은 버전이 설치된다.
# php-mcrypt 버전
rpm -qa | grep mcrypt
# 설치한 php-mcrypt 의 경로
rpm -ql php-mcrypt
# 설치된 경로가 /usr/lib/php/modules/mcrypt.so 라고 보여준다.
# 모듈 제거하기
rpm -qa | grep mcrypt
# 버전을 확인한 다음 remove 로 지운다.
yum remove php-mcrypt-5.1.6-15.el5.centos.1
yum remove libmcrypt-2.5.8-4.el5.centos


그래서 설치했던 걸 모두 삭제처리했다.


libmcrypt-2.5.8.tar.gz


먼저 위 파일을 다운로드 받아서 리눅스 서버에 올린다. (PHP 버전과 호환이 안되면 호환되는 버전을 찾아야 한다.)

cd /usr/local/APM/
tar -xvzf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/
make && make install

그 다음에 설치한 버전과 동일한 버전의 PHP 소스 파일을 다운로드 받아서 압축을 해제한다.


tar -xvzf php-5.4.6.tar.gz
cd /usr/local/APM/php-5.4.6/ext/mcrypt
# phpize 파일을 실행한다.
/usr/local/php/bin/phpize

# configure 및 compile
./configure --with-php-config=/usr/local/php/bin/php-config --with-mcrypt=/usr/local/
make
# make 명령어를 실행후 ./modules/확장모듈명.so 파일이 생성되었는지 확인한다.

# 확장모듈.so 파일을 php.ini 파일의 extension_dir=확장모듈 경로에 복사한다.
# 먼저 php.ini 에서 .so 로 설치된 모듈을 찾는다.
# find / -name 'openssl.so'
# 찾은 경로로 복사한다.

cp -arp modules/mcrypt.so /usr/local/php/lib/php/extensions/no-debug-zts-20100525
cd /usr/local/php/lib/php/extensions/no-debug-zts-20100525

# php.ini 파일을 열어 extension=mcrypt.so 파일을 추가한다.
# 아파치(Apache) 재시작한다.
/usr/local/apache/bin/apachectl restart

파일이 설치되었는지 확인한다.
확인방법은
/usr/local/php/bin/php -m
또는 phpinfo()함수로 확인한다.



모듈이 추가된 것을 확인할 수 있다.

그리고 phpMyAdmin 접속시 메시지 나오는 것이 없어진 것을 확인할 수 있다.

728x90

'리눅스' 카테고리의 다른 글

CentOS6 SSH 포트 변경  (0) 2017.08.18
phpize 실행시 에러  (0) 2017.06.08
php sockets 동적 모듈 추가 (phpize)  (0) 2017.06.08
윈도우기반 리눅스 VMware 네트워크 설정  (0) 2017.05.28
리눅스 시스템 종료  (0) 2017.05.19
블로그 이미지

Link2Me

,
728x90

안드로이드 socket 통신에 대한 강의를 들으면서 소켓통신에 관한 사항을 알고 싶어졌다.

자바 서버 소스 파일을 다루는 방법은 아직 모르다보니 PHP 와 연동하는 방법을 찾아봤다.

PHP 서버에서 socket 설치 방법을 알아보니 현재 설치된 APM(Apache + PHP + MySQL)에 sockets.so 모듈이 설치 안되어 있다는 걸 확인했다.



가장 먼저 해야 할 일은 서버에 설치된 PHP버전과 동일한 php-5.4.6.tar.gz 파일을 인터넷에서 찾아서 받아야 한다.

받은 파일을 리눅스 서버에 올리고 압축을 해제한다.


cd /usr/local/APM/
tar -xvzf php-5.4.6.tar.gz


소스파일에서 설치할 확장모듈과 동일한 이름의 경로로 이동한다.
cd /usr/local/APM/php-5.4.6/ext/sockets


phpize 파일을 실행한다.

만약 에러가 발생하면 config.m4 파일이 없어서 발생하는 에러이므로 폴더를 확인하고 config.m4 파일로 복사한다.

/usr/local/php/bin/phpize


configure 및 compile 한다.
./configure --with-php-config=/usr/local/php/bin/php-config --enable-sockets
make


make 명령어를 실행후 ./modules/확장모듈명.so 파일이 생성되었는지 확인한다.


확장모듈.so 파일을 php.ini 파일의 extension_dir=확장모듈 경로에 복사한다.

확장모듈이 설치된 경로를 찾기 위해서 php.ini 에서 .so 로 설치된 모듈을 찾는다.


find / -name 'sockets.so'


찾은 경로로 복사한다. (모듈 설치 경로는 다를 수 있다)

cd /usr/local/APM/php-5.4.6/ext/sockets/modules
cp -arp sockets.so /usr/local/php/lib/php/extensions/
sockets.so

cd /usr/local/php/lib/php/extensions/

ll

로 sockets.so 파일이 복사되었는지 확인한다.


php.ini 파일을 열어 extension=확장모듈.so 파일을 추가한다.

extension=/usr/local/php/lib/php/extensions/sockets.so


아파치(Apache) 재시작한다.
/usr/local/apache/bin/apachectl restart

파일이 설치되었는지 확인한다.
확인방법은
/usr/local/php/bin/php -m
또는 phpinfo()함수로 확인한다.


여기서 주의할 점은 phpinfo()로 확인하면 아래 화면에는 변동된 내역이 없다.

최초 설치한 정보만 보인다.


하지만 아래로 내려보면 모듈이 추가된 것을 확인할 수 있다.


728x90

'리눅스' 카테고리의 다른 글

phpize 실행시 에러  (0) 2017.06.08
PHP mcrypt 동적 모듈 추가  (0) 2017.06.08
윈도우기반 리눅스 VMware 네트워크 설정  (0) 2017.05.28
리눅스 시스템 종료  (0) 2017.05.19
sftp 파일 전송 shell script  (0) 2017.03.09
블로그 이미지

Link2Me

,
728x90

윈도우 운영체제에 리눅스를 설치하기 위해서 VMware 를 이용해서 CentOS 6.6 을 설치했다.


리눅스 설치가 되고 WinSCP, SSH 접속 모두 잘된다.


네트워크 환경설정하는 방법을 알아보고 적어둔다.




vi /etc/sysconfig/network-scripts/ifcfg-eth0 로 접속해서 위 정보를 토대로 수정한다.


vi /etc/resolv.conf 로 nameserver 를 추가한다.



/etc/init.d/network restart 로 네트워크를 재시작한다.


ping 168.126.63.1 로 테스트하면 성공적으로 패킷이 온다.


하지만 IPTime 공유기 외부에서 접속하는 건 성공하지 못했다.


http://blog.naver.com/bongss2/220830879059 참고해서 한번 해봐야겠다.



728x90

'리눅스' 카테고리의 다른 글

PHP mcrypt 동적 모듈 추가  (0) 2017.06.08
php sockets 동적 모듈 추가 (phpize)  (0) 2017.06.08
리눅스 시스템 종료  (0) 2017.05.19
sftp 파일 전송 shell script  (0) 2017.03.09
리눅스 파일/디렉토리 구조  (0) 2017.03.09
블로그 이미지

Link2Me

,
728x90
# shutdown -H now

will halt the system - meaning the system will shutdown and at the end stop at a screen with the last message beeing something like "System halted".

# shutdown -P now

will power off the system - meaning the system will shutdown and at the end power off (only possible if the system actually supports it but most systems I know have for quite a while now)

# shutdown -h now

will only halt or power off the system depending on what's the default on that system (can sometimes be changed in BIOS)

728x90
블로그 이미지

Link2Me

,
728x90

서버에서 주기적으로 백업을 하거나, 소스 등을 수정했을 경우 파일을 특정 백업서버로 백업을 하는 게 좋다.


백업 서버로 백업을 하는 스크립트다.


#!/bin/bash

COMPANY_NAME=   // 회사의 영문 약어명
TODAY=`date +%Y%m%d`
BACKUP_DIR=/root/backup
DEST_SERVER_DIR=/backup/Chart/${COMPANY_NAME}
#########################################################
# 다른 패키지와 혼동되지 않도록 PATH 우선 설정
#########################################################
export PATH=/usr/local/apache/bin:/usr/local/mysql/bin:/usr/local/mysql/scripts:${PATH}

#########################################################
# 기존 파일 있으면 지우기
#########################################################
cd ${BACKUP_DIR}
rm -f *
#########################################################
# MySQL 덤프
#########################################################
echo "Dumping MySQL database..."
mysqldump -u아이디 -p패스워드 DB명 > ${BACKUP_DIR}/${COMPANY_NAME}_mysqldb_backup_${
TODAY}.sql
echo "${COMPANY_NAME}_mysqldb_backup_${
TODAY}.sql DB create !!\n\n"
sleep 1

########################################################
# Web Source 백업
########################################################
echo "source backup doing !!\n\n"
cd /usr/local/apache/
tar cvzf ${COMPANY_NAME}_srcbackup_${
TODAY}.tar.gz htdocs/
mv ${COMPANY_NAME}_srcbackup_${
TODAY}.tar.gz ${BACKUP_DIR}

sleep 1
#########################################################
# Secure FTP 백업
#########################################################
# 백업할 파일이 있는 디렉토리로 경로 변경
cd ${BACKUP_DIR}
echo "now ${BACKUP_DIR} backup doing !!\n\n"

FTP_HOST="IP주소"

/usr/bin/sftp root@${FTP_HOST} << EOF
cd ${DEST_SERVER_DIR}
mput *
exit
EOF

# 로컬 백업파일 삭제
cd ${BACKUP_DIR}
rm -f *

exit 0


728x90
블로그 이미지

Link2Me

,
728x90


1. 리눅스 파일/디렉토리 구조 파헤치기

1.1 /bin

/bin에는 필수적인 실행 명령어들이 모여 있다. 대부분이 모든 사용자가 실행 가능한 것들이며 우리가 쓰는 거의 모든 기본 명령어들이 담겨 있다. 예를 들어 cat, chmod, chown, cp, date, echo, kill, ln, ls, mkdir, more, mount, mv, ps, pwd, rm, sh, su, vi 등등등...


1.2 /boot

말 그대로 시스템 부팅에 관련된 모든 파일을 담고 있다. 단, lilo(LInux LOader)의 설정 파일은 /etc/lilo.conf 에 있으며, lilo 자체는 명령어로서 /sbin/lilo에 위치하고 있다. 특히 커널 이미지인 vmlinuz 가 위치하고 있는데, lilo 가 아닌 다른 부트로더 프로그램들 모두가 공통적으로 vmlinuz 를 이용해 시스템을 부팅하므로 이 디렉토리가 매우 중요하다고 할 수 있다. 이 디렉토리의 파일들은 직접 편집할 수 없으며 커널 컴파일 등의 과정으로부터 생성된다.


1.3 /dev

각종 디바이스 파일들이 위치해 있는데 크게 블록 디바이스와 캐릭터 디바이스로 나뉠 수 있다. 블록 디바이스란 HDD와 같은 주변 장치를 말하는데, 데이타가 블록 단위로 읽고 쓰여지며 랜덤하게 액세스할 수 있다. 반면 캐릭터 디바이스는 입출력이 한 바이트 단위로 이루어지며 데이터가 순차적으로 읽고 쓰여진다. 디바이스를 새로 만들 때에는 mknod 명령을 이용하면 되며, 물론 /bin 에 위치해 있다. mount를 할 때에 필요한 디바이스 몇 개만 소개한다.

플로피 디스크 디바이스

/dev/fd0

첫 번째 FDD의 디바이스로 두 번째의 경우는 0 대신 1을, 세 번째의 경우는 2를 써주면 된다.

IDE 하드 디스크 디바이스

/dev/hda or /dev/hda1

마지막 부분의 hda에서 'a'는 위치를 나타내는 것으로, 'a'는 primary master, 'b'는 primary slave, 'c'는 secondary master, 'd'는 secondary slave를 의미한다. 그리고 그 뒤에 숫자가 없을 경우에는 전체를 의미한다. 숫자를 달 경우에는 파티션을 의미한다.

SCSI 하드 디스크 디바이스

/dev/sda, /dev/sda1

IDE 하드 디스크 디바이스와 같으나 'h' 대신 's'를 쓴다.

하드웨어 관련 디바이스

/dev/cdrom

CD-ROM 디바이스이다.


1.4 /etc

시스템 설정 파일들이 모여 있다. 그런 만큼 시스템을 백업하고자 할 때는 꼭 이 디렉토리를 가장 먼저 백업해야 한다. 각 파일들에 대한 설명은 에디터로 파일을 열어보면 주석처리로 설명이 되어 있으므로, 참고하면 될 것이다.

/etc/(cshrc.login, cshrc.cshrc, profile)

bash 나 csh,tcsh 사용자가 로그인할 때 기본으로 읽어들여 초기화시키는 파일이다. 그러므로 모든 사용자에게 공통으로 적용할 쉘 관련 사항이 있다면 이 파일들을 수정하면 된다. 각 사용자들은 자신의 홈 디렉토리에 개별 설정 파일이 있으므로 역시 원하는 대로 설정할 수 있다.

/etc/fstab

시스템 부팅시 처리되는 마운트와 관련한 사항들이 기록되어 있다.


/dev/hda1 / ext2 defaults 1 1 /dev/hdb5 /home ext2 defaults 1 2 /dev/hdb2 /public ext2 defaults 1 2 /dev/hda2 /public2 ext2 defaults 1 2 /dev/hdb6 /sysbackup ext2 defaults 1 2 /dev/hdb3 swap swap defaults 0 0 /dev/fd0 /mnt/floppy ext2 owner,noauto 0 0 /dev/cdrom /mnt/cdrom iso9660 owner,noauto,ro 0 0 none /proc proc defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0


첫 번째 항목은 마운트될 디바이스가 적혀 있다. 디바이스 이름은 이미 보고 넘어갔으니 모르는 사람은 없겠죠? 두 번째 항목은 마운트시킬 마운트 포인트가 적혀 있다. 세 번째 항목은 해당 디바이스의 파일 시스템 타입이 적혀 있다. ext2는 리눅스에서 사용하는 파일 시스템이며, msdosvfat는 각각msdos와 windows에서 사용하는 파일 시스템이고, iso9660은 CD-ROM에서 지원되는 파일 시스템이다. 자세한 것은 mount를 참고하자.

/etc/group

사용자 그룹이 정의되어 있으며, 다음과 같은 형식으로 쓰여져 있다.


Group Name:Password:GID:Member


/etc/issue

시스템에 로그인할 때 나타나는 'login:' 위에 나타나는 메시지이다. 만약 로그인할 때 나타나는 메시지를 바꾸고 싶으면 /etc/rc.d/rc.local 파일의 맨 아래 부분에 #로 시작되는 주석을 참고하자.

/etc/motd

'message of the day'의 약자로 로그인 직후의 메세지를 담고 있다. 관리자가 공지를 띄우는 데 유용한 파일.

/etc/passwd

사용자들의 계정 정보와 패스워드, 홈 디렉토리에 대한 정보를 담고 있으며 다음과 같은 형식으로 쓰여져 있다.


user ID:passwd(암호화상태):UID:GID:사용자 정보:홈디렉토리:로그인쉘


/etc/shadow

쉐도우 패스워드 파일


1.5 /home

사용자들의 모든 홈 디렉토리가 담겨 있다.


1.6 /lib

공유 라이브러리와 커널 모듈들이 담겨있다. 이전에 짚고 넘어간 /bin과 /sbin디렉토리에 있는 실행 명령어들이 실행될 때 필요한 공유 라이브러리들이 존재한다.


1.7 /mnt

마운트 포인트 디렉토리로써 꼭 여기에만 마운트해야 하는 것은 아니다. 하지만 일부러 만들어 놓인 곳이니 이곳을 쓰자^^;


1.8 /proc

일종의 가상 파일 시스템으로 메모리 정보만을 담고 있다. 우리가 흔히 사용하는 ps 프로그램이 여기에서 프로세스 정보 등을 참조한다.


1.9 /root

root(수퍼 유저)의 홈 디렉토리. 뭐 그게 끝이지 뭐...^^;


1.10 /sbin

수퍼 유저가 사용하는 실행 명령어들이 거의 다 들어 있다. 그러므로 물론 일반 유저는 사용할 수 없다. 예를 들어 halt, reboot, fdisk, mkfs등이 있다.


1.11 /tmp

임시 디렉토리이다. 그러므로 임시 파일들의 간이 저장 창고 역할을 한다.


1.12 /usr

/usr 은 리눅스 시스템에서 가장 많은 용량을 차지하는 부분으로 대부분의 프로그램들이 여기에 깔린다.

/usr/X11R6

/usr/X11, /usr/X386 이 모두 /usr/X11R6 의 심볼릭 링크이다. /usr/X11R6/lib/X11 에는 X-윈도와 관련한 여러가지 파일 및 디렉토리가 있다.

/usr/bin

/bin 에서 짐작되듯이, 대부분의 사용자 실행 명령어들이 담겨 있다. gcc나 perl등의 개발도구도 여기에 담겨 있다.

/usr/doc

역시 doc에서 유추할 수 있듯이 각종 리눅스에 관한 문서들이 담겨 있다.

최신버젼의 문서를 보길 원한다면 kldp.org(Korea Linux Documentation Project)를 방문하면 많은 도움이 될 것이다.

/usr/include

C, C++ 프로그램의 헤더 파일들이 담겨 있다.

/usr/info

여기에는 여러가지 GNU 프로그램들(gcc, make, autoconf...)의 info 파일들이 담겨 있다. 이 디렉토리를 이용하는 방법은 단순히 'info 프로그램 - ex) info gcc -'라고 치면 된다. 상당히 유용하므로 기본적으로 알아두자.

/usr/local

새로운 프로그램들이 설치되는 곳으로 프로그램 관리를 용이하게 할 수 있도록 되어 있다. make install로 프로그램 설치시 기본 디렉토리가 대부분 /usr/local 로 되어 있는 이유가 바로 그것이다. M모사의 '창문들'이라는 OS에 있는 'Program Files'라는 디렉토리와 유사하다고 보면 된다.

/usr/man

info 와 비슷한 역할을 한다. 메뉴얼 페이지가 담겨 있는 것으로 역시 'man 프로그램'을 쳐서 이용할 수 있다. 모르는 명령어들은 꼭 한 번씩 man으로 확인하는 습관을 갖길...

/usr/src

프로그램 소스들이 보관되어 있는 것으로 리눅스 커널이 위치하고 있는 곳이다.


1.13 /var

이 디렉토리 아래에는 시스템 작동 중 변경되는 파일들이 담겨 있다. 로그 파일이나 스풀 파일들이 그것들인데, 즉 다른 시스템과 공유가 되지 않음을 의미한다.


출처 : http://coffeenix.net/doc/kuls/file_system-4.html

728x90
블로그 이미지

Link2Me

,
728x90

phpMyAdmin 에서 특정한 테이블만 삭제한다는 것을 실수로 DB 전체를 날려버렸다.

정신이 아득하다. 검색해서 실수로 날린 DB 복구방법으로 시도를 했는데 안된다.

아~~ 미처버리겠다는 생각이 들었고 나온 방법으로 수동 비슷하게도 복구를 시도해봤다.

그런데 문제는 PHP 소스코드 구현 방식에 약간 문제있는 부분이 있다는 걸 알게되었고, 이 방법으로는 정상적인 복구가 안된다.


최종적으로 복구를 한 방법을 적어둔다.


# cd /usr/local/mysql/data

에 가면 방금 삭제한 로그를 기록한 파일이 있다.

시간대를 보면 확인할 수 있다.

해당 파일을 보니 mysql-bin.000003 로 되어 있다.


복구방법에 보니까 이걸 한줄 한줄 실행해서 파일 하나로 합치라는 명령어가 있다.

그런데 이건 잘못된 듯하다.


/usr/local/mysql/bin/mysqlbinlog -d testdb mysql-bin.000003 > resque.sql

를 실행한다.

여기서 testdb 대신 실제 사용하는 DB명으로 수정해야 한다.

이렇게 하면 복구를 위한 1단계 준비는 되었다.


※ grep "insert" resque.sql > resque1.sql 이런거 하라고 되어 있는 곳도 있던데 이런거 하면 약간의 명령어는 나온다. 하지만 100% 복구 방법이 절대 아니다. 이거 해본다고 시간만 낭비했다.


2단계로 이 파일을 PC로 백업한다.

  mysql-bin.000003 파일도 PC로 복사를 해두는 편이 좋다고 생각하면 복사를 하라.

  테스트를 거치다보니 동일한 파일에 시간대가 달라지면서 계속해서 작업한 내용이 쌓이더라.


3단계로 이 파일을 EditPlus 로 열어서 맨 하단에 보면 drop table 이라고 표시된 부분이 보일 것이다.

  이 부분을 삭제 또는 주석처리 해주어야 한다.

  그런 다음에 저장하고 이 파일(rescue.sql )을 다른 이름으로 변경(rescue_modify.sql )하여 다시 서버에 복사를 한다.


4단계

# mysql -u 계정아이디 -p DB이름 < rescue_modify.sql
를 해주고 나면 패스워드 입력하고 나면 복구가 된다.


이렇게 복구하면 혹시라도 다시 만든 테이블이 있다면 삭제되어 버린다.

즉, 복구한 명령어를 가진 파일로 업데이트를 해버린다는 말이다.

728x90

'리눅스' 카테고리의 다른 글

sftp 파일 전송 shell script  (0) 2017.03.09
리눅스 파일/디렉토리 구조  (0) 2017.03.09
리눅스 날짜시간 변경  (0) 2016.10.24
2개의 APM(Apach + PHP + MySQL) 소스 설치  (0) 2016.07.17
SSH chroot 설정방법  (0) 2016.07.04
블로그 이미지

Link2Me

,
728x90

리눅스에서 날짜와 시간 변경 방법


수동으로 변경하는 방법

#date 월일시분년.초

로 입력해야 한다.

예시) date 102410202016.30


Time Server 와 동기화하는 방법

#rdate -s time.kriss.re.kr


H/W(하드웨어) BIOS 시간 확인

#hwclock --show


H/W BIOS 시간을 리눅스 시간으로 동기화하는 방법

#hwclock --systohc

728x90
블로그 이미지

Link2Me

,
728x90

리눅스를 호스팅업체에서 최신버전으로 설치를 해준 것이 있는 상태에서 다른 걸 테스트해야 할 경우가 있었다.

즉, 최신버전의 APM 에서는 동작이 되지 않았다.


고민하다가 호스팅업체에 문의를 해보니 이미 설치된 리눅스 버전의 이름을 변경하고 나서 다시 소스 컴파일을 해보면 된다고 했다.


그래서 소스 컴파일을 다시 해봤더니 잘 되었다.


변경해서 사용할 일(테스트)이 생기면 디렉토리 이름만 서로 변경하여 사용한다.

물론 변경하고 나면 DB 인식등은 새로 해주어야 한다.


1. 디렉토리 이름 변경전에 할일

   모든 웹서버 데몬 죽이기 : killall httpd

   MySQL 데몬 중지 :  /etc/init.d/mysqld stop


2. 새로운 APM 설치

    APM 이 설치되어 있지 않은 상태에서는

    먼저 기존 apache, php, mysql 디렉토리 이름에 날짜 또는 다른 식별자로 표시하여 디렉토리명을 변경한다.

    그 다음에 APM(Apache + PHP + MySQL)을 소스 컴파일한다.

    그러면 apache, php, mysql 디렉토리가 새로 생긴다.


3. 디렉토리 이름 서로 변경


4. 데몬 구동

    MySQL Start : /etc/init.d/mysqld start

    HTTPD Start : /etc/init.d/httpd start


5. MySQL root 비밀번호가 생각나지 않아서 접속해서 작업을 못하는 상황이 생겼다.

   이럴 경우에는

ps -ef | grep mysql
killall mysqld
cd /usr/local/mysql/bin/
./mysqld_safe --skip-grant &
# 대기모드 상태가 된다. 여기서 엔터키를 치면 대기모드에서 빠져나오므로
# 아래 작업이 끝나기 전에는 엔터키를 치지 말아야 한다.

# 또다른 콘솔창을 하나 더 띄운 상태에서 실행
mysql -u root -p
mysql> use mysql;
mysql> UPDATE user SET password=password('ROOT_비밀번호') WHERE user='root';
mysql> flush privileges;
mysql> quit

#### mysql 데몬 다시 구동
/etc/init.d/mysqld start



6. 새로운 DB 세팅 및 사용자 권한 부여 방법

    색상 표시를 한 부분은 원하는 형태로 변경하여 사용할 부분임

   // DB 생성
      create database webdb default character set utf8;

   // 새로운 Database 를 생성하고 사용자에게 권한을 부여하는 방법
      mysql > use mysql;
      mysql > create user web@localhost identified by 'passwdsetting';
   // 사용자(user)를 추가하면서 패스워드까지 설정
      mysql > grant all privileges on webdb.* to web@localhost;
      mysql > flush privileges;

   // 권한 회수
      revoke all on webdb.* from web@localhost;

   // 권한확인
   show grants for web@localhost;


728x90
블로그 이미지

Link2Me

,
728x90

FTP chroot 를 설정하여 FTP 홈 디렉토리 상위 디렉토리로 이동이 불가능해진다.
하지만 SFTP 로 접속하면 홈 디렉토리 상위 디렉토리로 이동이 가능하다.
따라서 SSH chroot 적용 방법으로 적용해야 한다.
- Chroot를 지정한 유저 또는 그룹은 SSH를 사용할 수 없다.
- SFTP에서 Chroot를 설정하면, FTP로서의 기능만 하게 된다.

1. Group 사용자 등록
groupadd sftponly
useradd -g sftponly test
usermod -s /bin/false test

// 사용자 계정을 그룹에 등록하는 방법
usermod -g sftponly user1  // sftponly 그룹에 user1 멤버 등록

※ 일반 계정을 추가하고 SSH 접속을 하면 접속이 되어버림
  그러나 sftponly 그룹에 추가하고 SSH 접속을 시도하면 접속이 차단됨.
  SCP 이용하려면 SSH 권한이 되어야 이용이 가능함.


vi /etc/group
// sftponly 그룹을 찾아서 제한할 걸 사용자 계정 추가 (계정 구분은 콤마(,))

※ 그룹 사용자 추가/삭제/변경 방법은 http://link2me.tistory.com/500 참조

2. 사용자 홈 디렉토리 만들기 및 권한 적용
cd /
mkdir -p /home/test
chown root:sftponly /home/test
chmod 0664 /home/test

# 하위 디렉토리를 추가하고 쓰기 권한을 부여한다. (테스트 목적)
cd /home/test
mkdir web             
chown root:sftponly /home/test/web
chmod 664 /home/test/web

※ 일반사용자(Other)와 그룹사용자(group)에게 실행권한이 설정되지 않게 파일은 644 또는 664 로 퍼머션 설정 필요

# 사용자 패스워드 변경
passwd user계정명

# 사용자의 홈디렉토리 확인
cat /etc/passwd
test:x:500:500::/home/test:/bin/bash


3. chroot 설정
- chroot 계정을 격리시킬 디렉토리를 생성한다.

vi /etc/ssh/sshd_config
// 중간에 Subsystem sftp 부분을 # 처리 해준다
// # Subsystem sftp /usr/lib/openssh/sftp-server 처리하면 SSH는 사용 가능, SFTP는 사용불가
// 맨 하단에 아래줄을 추가한다. Match 구분은 sshd_config 파일의 가장 마지막에 존재해야 함
// %h : 사용자의 홈디렉터리를 뜻함
Subsystem sftp internal-sftp

Match Group sftponly
    ChrootDirectory %h
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

# SSH 재시작
service sshd restart

※ SFTP chroot 를 사용하려고 user를 추가하면 FTP 접속할 수 있는 계정이 생성되므로
  FTP 사용을 못하게 Port 20, 21 번을 방화벽에서 차단하는 것이 필요

728x90
블로그 이미지

Link2Me

,
728x90

호스팅업체에 APM 소스 설치를 해달라고 해서 사용하고 있는데 오늘 XML 파일 출력 테스트를 하는데 계속 문제가 나온다.

왜 그런지 도무지 이해가 안가서 구글링을 열심히 하고서 혹시나 하고 찾아봤더니 MySQL 환경설정 파일이 잘못되었다.


먼저 MYSQL 에서 명령어로 확인을 해본다.


SHOW VARIABLES LIKE 'c%'



이렇게 나온다.

서버와 클라이언트간에 통신을 utf8 로 맞춰서 하도록 해야 하는데 세팅이 그렇게 안되어 있다.


리눅스상에서

MySQL  설치 경로를 찾아야 한다.

# whereis mysql


cd /usr/local/mysql

에 설치된 것을 확인할 수 있다.

이제 해당 디렉토리로 이동한 다음 ls 명령어로 파일을 찾는다.

my.cnf 파일을 찾을 수 있다.


my.cnf 파일에 추가해준다.

[mysqld] 항목 하단에


collation-server=utf8_general_ci
character_set_server=utf8
#collation_server=euckr_korean_ci;
#character_set_server=euckr;

[client]
default-character-set=utf8
#default-character-set=euckr


저장하고 나서 MySQL을 재기동해준다.

# service mysqld restart



이런 메시지가 나오면 my.cnf 파일에 잘못 추가된 내용이 있다는 것이므로 수정해서 다시 재기동을 해봐야 한다.

성공이면 이제 MySQL 상태 정보를 다시 확인해보자..



SHOW VARIABLES LIKE 'c%'


이미 생성된 DATABASE의 문자셋 바꾸기
mysql> SET character_set_client = utf8;
mysql> SET character_set_results = utf8;
mysql> SET character_set_connection = utf8;
mysql> ALTER DATABASE [DB명] DEFAULT CHARACTER SET utf8;


728x90
블로그 이미지

Link2Me

,
728x90

PHP 를 매일 일정한 시간에 주기적으로 실행해야 할 경우가 있다.

 

먼저 whereis php 로 PHP의 경로를 알아야 한다.

/usr/bin/php 라면 이걸 적어야 하고

/usr/local/php/bin/php 라면 이걸 적는다.

 

리눅스의 crontab 기능을 이용하여 PHP 파일을 실행하기 위해 알아야 할 사항

1. PHP 코드에 DB 연결하는 파일 정보는 절대경로로 적어야 한다.

    include "/home/httpd/db.info.php";
    include "/home/httpd/dbClass.php";

 

2. PHP 코드 상단에 한줄 적어줄 내용

    !#/usr/local/php/bin/php -q

    <?php

        include "/home/httpd/db.info.php";
        include "/home/httpd/dbClass.php";

 

        PHP 소스코드

     ?>

 

 

※ crontab 에서 직접 PHP 코드를 호출해서 돌리는 경우에는 위와 같이 하면 된다.

   첫줄 !#/usr/local/php/bin/php -q 은 PHP 파일의 절대경로인데

   파일의 위치를 모르면

   리눅스 Shell 상에서 whereis php 로 찾으면 된다.

   그리고 해당 경로로 들어가서 실제 php 파일이 있는 곳을 확인해야 한다.

 

이제 crontab 에 스케쥴할 사항을 등록하자.

 

1. 크론탭 수정하는 방법
    crontab -e

    입력화면에서 입력하려면 i 를 눌러 insert 모드로 변경하고

    스케쥴링할 내용을 적어준다.

    15 23 * * * wget -O - -q -t 1 http://IP주소/xml/web_member.php

    를 붙여넣기 한 다음에 저장하고 나온다.

2. 크론탭 시작
    service crond start

 

이 두가지 사항만 하면 매일같이 정해진 시간(23시 15분)에 실행된다.

 

다른 방법으로 할 경우

shell 스크립트 파일을 작성해서 스크립트 파일을 돌리는 경우에는

shell script

15 23 * * * /home/httpd/xml/cron_member.sh

 

shell script 파일 안에는

echo "Insert and Update member table of MySQL database..."
/usr/local/php/bin/php -f  /home/httpd/xml/cron_member.php

처럼 작성된 코드가 포함되어야 한다.

 

cron_member.php 파일에는

DB 파일의 경로는 절대경로를 반드시 적어줘야 한다.

 

 

shell script 를 만들어서 사용하는 경우

몇가지 처리를 하나의 스크립트에서 해야 할 때 효과적이다.

 

2시 5분에 스크립트가 자동으로 실행된다.

5 2 * * * /usr/local/php/bin/php /usr/local/apache/htdocs/accessLog.php

 

만약 매 5분마다 실행하고 싶다면

*/5 * * * * /usr/local/php/bin/php /usr/local/apache/htdocs/accessLog.php

로 해주면 된다.

728x90
블로그 이미지

Link2Me

,
728x90

아파치 로그(Apache Log) 관리법
접속자가 많은 사이트에서는 아파치 로그를 관리하는 것도 만만치 않다.
불필요한 정보는 로그에 쌓이지 않도록 처리하는 것이 중요하다.
로그 파일이 크면 클수록 서버에 필요없는 무리를 주므로 날짜별로 분리하여 로그를 남기자.


아파치 환경설정 파일에서 <IfModule log_config_module> 부분을 찾아서 아래와 같이 수정해준다.


<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    # 그림 이미지, css, js는 기록하지 않게 처리
    SetEnvIfNoCase Request_URI "\.(jpg|png|gif|css|ico|js|swf)$" notloglist

    #CustomLog "logs/access_log" common
    #CustomLog "logs/access_log" combined
    #CustomLog "|/아파치 설치 경로/bin/rotatelogs /로그를 저장할 경로/파일명 %Y%m%d%H 86400 +540" combined
    # 날짜별로 로그기록 남기기
    CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log_%Y%m%d 86400 +540" combined env=!notloglist  
</IfModule>


※ 86400 + 540 : GMT 기준 + 9시간,  한국시간 0시 기준 파일 분할 목적


/usr/local/apache/conf/extra/httpd-vhosts.conf 파일이 같이 동작되는 경우에는

이곳에 적어준다.

즉, httpd.conf 파일 안에

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

라고 되어 있으면 /usr/local/apache/conf/extra/httpd-vhosts.conf 에 적어준다.

virtualhost 에 적어주는 경우에는 access_log_%Y%m%d 보다는 사이트명을 식별할 수 있는 구분자를 넣어주는게 좋다.


728x90
블로그 이미지

Link2Me

,
728x90

주기적으로 반복작업이 수행되게 하고 싶은 경우가 있다.

이럴 때 사용하는 것이 crontab 기능이다.

 

crontab 설치 여부 확인

ps -ef | grep cron

 

 

설치되어 있는 것을 확인할 수 있다.

 

크론탭 시작
service crond start


크론탭 중지
service crond stop


크론탭 재시작
service crond restart

# CentOS 7 에서
systemctl restart crond.service

 

현재 설정된 크론탭 확인하는 방법
crontab -l

크론탭 수정하는 방법
crontab -e

 

실행파일 권한 부여
chmod 100 backup.sh

크론탭 설정시 위치별 의미
* * * * *

* * * * *  수행할 명령어
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ │
│ │ │ │ └───────── 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일)
│ │ │ └───────── 월 (1 - 12)
│ │ └───────── 일 (1 - 31)
│ └───────── 시 (0 - 23)
└───────── 분 (0 - 59)

예약설정은 분, 시, 일, 월, 요일, 명령어 순으로 설정하면 된다.

 

범위

 1

 분

 0-59

 2

 시

 0-23

 3

 일

 0-31

 4

 월

 1-12

 5

 요일

 0-7(일요일 :0 또는 7, 월요일 :1, 화요일:2 ...)

 6

 명령어

 실행할 명령

 

 

* crontab 등록 예



출처: http://fruitdev.tistory.com/10?category=554679 [과일가게 개발자]


0 1 15 * *  /bin/sh  /usr/local/backup_full.sh   <== chmod 100 으로 권한 미부여시
0 2 * * *  /usr/local/backup_part.sh   <== chmod 100 으로 권한 부여시

# 매 5분마다 실행
*/5 * * * * /root/sh/backup_photo.sh

※ 스크립트가 제대로 동작되지 않아서 구글링으로 확인해보니 /bin/sh 를 넣어주면 되는거 같아서 넣어줬더니 제대로 동작된다.

EditPlus 에서 스크립트 파일을 수정하고 동작여부를 확인했더니 계속 문제를 일으킨다.

명령어를 자세하 봤더니 \r 이 붙어있다.

원래 리눅스상에서 작성해야 하는데 편하게 작업하려고 EditPlus 에서 작성하고 수정했더니 문제를 일으켰다.

리눅스 Shell 상에서 dos2unix backup_part.sh 이런 식으로 해주면 \r 정보가 전부 삭제된다.

EditPlus 에서도 파일형식을 Unix 형식으로 저장하는 옵션이 있더라.

 

유닉스(Unix)/리눅스(Linux)에는, LF (헥사로는 0x0A에 해당) 문자로 줄바꿈을 하고
도스(DOS)/윈도우(Windows)에서는, CR-LF (헥사로는 0x0D 0x0A에 해당) 라는 2문자로 줄바꿈을 하고
맥(Mac)에서는, CR (헥사로는 0x0D 에 해당) 로 줄바꿈한다. "\n" 로 표현한다.

 

 

일정기간이 지난 파일을 삭제하는 방법은 find 명령어를 이용하여 삭제하면 된다.
예제 디렉토리가 "/home/tour/log" 라고 했을때 파일 삭제방법은 다음과 같다.

1. 30일이 지난 파일 삭제
find /home/tour/log -mtime +30 -print -exec rm -f {} \;

2. 10분이 지난 파일 삭제
find /home/tour/log -mmin +10 -print -exec rm -f {} \;

3. 30일이상 err_log 로 시작하고 확장자가 txt 파일인것들만 삭제
find /home/tour/log -mtime +30 -name "err_log*.txt" -print -exec rm -f {} \;

4. 파일 사이즈가 1MB 이상인 파일 삭제(KB로 입력)
find /home/tour/log -size +1024k -print -exec rm -f {} \;

 

# 매시 15분, 45분에 /root/every_30min.sh 를 수행 (하루에 48회[3])
15,45 * * * * /root/every_30min.sh

# 10분마다 /root/every_10min.sh 를 수행 (하루에 144회[4])
*/10 * * * * /root/every_10min.sh

#매일 02:00에/root/backup.sh 를 수행 (하루에 1회)
0 2 * * * /root/backup.sh

# 매 6시간마다 수행(00:30, 06:30, 12:30, 18:30)
30 */6 * * * /root/every_6hours.sh

# 1시부터 매 6시간마다 수행(01:30, 07:30, 13:30, 19:30)
30 1-23/6 * * * /root/every_6hours.sh

# 평일(월요일~금요일) 08:00
0 8 * * 1-5 /root/weekday.sh

# 주말(일요일, 토요일) 08:00
0 8 * * 0,6 /root/weekend.sh
728x90
블로그 이미지

Link2Me

,
728x90

홈페이지 접속경로의 디렉토리 정보가 보이는 경우가 있다.

호스팅업체에 설치를 해달라고 했는데도 불구하고 이런 정보를 세팅하지 않아서 생긴 문제점이었다.

리눅스를 소스설치로 설치를 해봤는데 이 경우에도 아래처럼 Indexes는 기본 설정이 되어 있다.



이렇게 디렉토리 정보가 보이는 증상은 왜 그럴까?

httpd.ini 환경설정 파일안에서

DocumentRoot "/usr/local/apache/htdocs"
<Directory "/usr/local/apache/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order deny,allow
    Allow from all
    Require all granted
</Directory>


에서 Indexes 를 삭제해줘야 한다.

Indexes 란 해당 디렉토리의 내용과 리스트들을 보여주도록 허용하겠다는 옵션이다.


그러면


로 변경되어 보인다.


그 밖에 설정 참고할 사항으로는

<Directory "/usr/local/apache/htdocs">
    Options IncludesNoExec FollowSymLinks
    AllowOverride None
    <LimitExcept GET POST>
      Order allow,deny
      Allow from all
    </LimitExcept>
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>


<IfModule mime_module>
    AddType application/x-httpd-php .php .phtml .php3 .php4 .inc .do
</IfModule>



AddType application/x-httpd-php .php .phtml .php3 .php4 .inc 역할은

서버 디렉토리에 abc.inc 파일을 직접 접속하면 내용이 보이지 않는다.

하지만 여기에 등록되어 있지 않으면, abc.inc 파일은 다운로드 되거나 정보 내용이 그대로 노출되어 보안에 매우 취약해진다.

확장자를 모르게 하고 싶어 do 확장자로 변경하여 코딩을 하는 사람도 있다.


728x90
블로그 이미지

Link2Me

,
728x90

호스팅업체에 가상서버를 새로 할당 요청하여 APM(Apache + PHP + MySQL)을 소스 설치를 요청했다.

PHP는 버전 5.6 이상, MySQL 버전 5.6 이상으로 요청했다.


기존 홈페이지에서 데이터를 백업받아야 한다.

홈페이지가 설치된 폴더를 tar -cvzf backup.tag.gz 폴더명/

으로 압축했고 이 파일을 다운로드 받아서 새로운 서버에 업로드했다.

MySQL DB를 dump 받아서 새로운 DB에 접속해서 업로드했다.


에러가 나면서 접속이 안된다.

도메인 경로가 새로운 서버로 설정되지 않은 것 같아서 도메인을 등록한 호스팅업체에서 무료 DNS 를 설정했다.

그런데도 불구하고 제대로 접속이 안된다.

확인 결과, MySQL 사용자 패스워드를 잘못 입력했다. 변경하고 다시 접속을 시도했더니

화면에 timezone 에러가 발생했다.


php.ini 파일을 찾아서 파일을 열고

찾기(Ctrl + F)로 timezone을 입력하니까 해당 라인으로 이동된다.


date.timezone = "Asia/Seoul"

를 추가했다.


이제 아파치를 재기동해야 한다.

/etc/init.d/apachectl stop

/etc/init.d/apachectl start


아파치 재기동을 해주고 나서 에러메시지가 완전히 사라졌다.


PHP 에서 MySQL 접속방식도 MySQLi 로 접속해야 에러가 발생하지 않고 정상적으로 접속된다.

Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/public_html/.../mysql.func.php on line 4


728x90
블로그 이미지

Link2Me

,
728x90

OpenSSH 4.8p1 버전부터는 chroot 기능을 자체적으로 지원하기 시작하였다.

호스팅 업체에 문의하니까 내가 사용하는 버전도 SSH chroot 기능이 지원된다고 하여 인터넷 검색하고 직접 테스트하여 설정하는 기능을 적용해봤다.


먼저 설치된 openssh 패키지 검색

# rpm -qa|grep openssh



chroot 설정을 위한 환경설정 파일 수정

# vi /etc/ssh/sshd_config



Match Group과 ChrootDirectory 옵션의 순서가 서로 뒤바뀌지 않도록 한다.

Match Group sshgroup 에서 sshgroup 은 실제 그룹을 뜻한다.

%u 는 로그인한 사용자의 계정을 말한다.


# groupadd sshgroup

# usermod -g sshgroup jsk005

# usermod -s /bin/false jsk005

# usermod -d /home/httpd/jsk005   // 홈디렉토리의 경로명 변경


# /etc/rc.d/init.d/sshd restart  // ssh 데몬 재시작


동작이 제대로 안된다. ㅠㅠ

728x90
블로그 이미지

Link2Me

,
728x90

리눅스 이동/이름변경 명령어 mv


리눅스에서 파일을 다른 디렉토리로 이동하거나 다른 이름으로 바꾸고자 할 때 mv 를 사용하면 된다

<기본문법>
mv [옵션] <file1> <file2> <file3> ....<file n> destination

mv [옵션] 원본디렉토리 옮길디렉토리


옵  션

기   능

-b

파일이 지워지기전에 백업파일 만듬

-f

대상파일이 있더라도 파일을 강제로 삭제

-i

대상파일이 있는 경우 덮어쓸 것인가 물어 봄

-r

서브 디렉토리 내에 있는 모든 파일까지 통채로 복사

-u

대상파일보다 원본파일이 새로운 것일 때

-v

파일 옮기기 전의 과정을 보여줌


경로가 동일하면 rename 이 되고

경로가 다르면 파일이 이동된다.


여러개의 파일을 동시에 옮기는 방법

mv filename* /home/test  

해석 : 현재 디렉토리의 filename으로 시작하는 모든 파일을 /home/test 로 옮긴다.


위 그림에서 현재 디렉토리를 확인(pwd)하고 ls 명령어로 어떤 파일과 서브디렉토리가 있는지 확인하고 나서,

mv *.php /home/http/test 로 현재디렉토리(/home/http/test/modules/plan/)에 있는 모든 php 파일을

/home/http/test 디렉토리로 옮기라고 명령했다.

모든 PHP 파일이 옮겨진 것을 확인할 수 있다.


_m* 으로 시작되는 파일을 하위디렉토리 modules/plan/ 으로 옮기라는 것을 실행해보고

경로를 이동하여 실제로 파일이 옮겨진 것을 확인할 수 있다.


mv /home/test/ab* /root/test 

해석 : /home/test/ 디렉토리에 존재하는 ab로 시작하는 모든 파일을 /root/test 디렉토리로 옮긴다.


위 그림에서 보면 디렉토리가 존재하지 않는 곳으로 파일을 옮기려고 했더니 디렉토리가 없다고 출력한다.

그래서 디렉토리가 존재하는 /root 로 파일을 옮기고 나서 확인했다.

파일이 옮겨진 것을 확인할 수 있다. (보안상 보여주면 안되는 사항은 검은색으로 처리함)



mv /home/http/test /home/http/test2

해석 : /home/http/test/ 디렉토리 자체를 /home/http/test2/ 디렉토리로 옮긴다.



파일을 디렉토리째로 다른 것으로 복사하려면 mv 처럼 뒤에 옵션을 붙이지 않는게 아니라 옵션을 붙여야 디렉토리째 복사가 된다.



현재 디렉토리 하위 디렉토리(plan/)의 전부를 /home/http/test/ 디렉토리로 옮겨봤다.

옮기고 나서 경로를 이동하여 옮겨진 것을 확인했다.

728x90
블로그 이미지

Link2Me

,
728x90

리눅스에서 운영중인 MySQL 버전을 확인하는 방법이다.


MySQL 로 접속해서 들어가서 select version; 이라고 입력하면 현재 운영중인 버전 정보가 출력된다.



728x90
블로그 이미지

Link2Me

,