Search Results for '프로그래밍/리눅스 & MY-SQL'
206 posts related to '프로그래밍/리눅스 & MY-SQL'
- 2019/03/12 특정 페이지만 리다이렉트 하기.
- 2018/08/19 MySql - update의 그누보드5 활용
- 2018/08/04 Windows and Linux pscp 파일 복사
- 2018/08/03 리눅스에서 <?php 는 작동하는데 <? 로 시작하면 파일 깨질때
- 2018/07/30 우분투에 sendmail 설치 설정
- 2018/07/29 멀티 도메인 멀티 루트의 Letsencrypt 인증서 만들기
- 2018/07/25 마리아DB(RDBMS)에서 NoSQL처럼 유동적인 필드만들기
- 2018/07/25 SSL 보안서버 적용시 fa아이콘 사용자 깨짐현상 해결 방법
- 2018/07/25 letsencrypt 추가 및 갱신 방법 - 우분투
- 2017/12/01 Mysql .frm 과 .idb파일만 남았을때 테이블 구조 및 데이터 복구
- 2017/05/21 How to Install PHP 7 on Ubuntu 15.10, 15.04 & 14.04 using PPA
- 2017/05/21 How to Install PHP 5.4 or PHP 5.5 or PHP 5.6 on Ubuntu 16.04, 14.04 or…
- 2017/05/21 Ubuntu 16.04 : Nginx, PHP 7, MySQL 5.7 설치
- 2017/04/18 [DBMS] mysql 접속자 많아서 버벅일때 팁입니다.
- 2017/04/18 [DBMS] 그누보드 databas 튜닝
- 2017/03/18 Nginx에서 모든 요청을 https non-www로 돌리는 방법
- 2017/03/10 리눅스 우분투 계정생성 및 폴더 상위 접근 제한 하기
- 2017/03/03 XPEnology(헤놀로지) DSM 6.0 설치하는법
- 2017/02/28 MYSQL SELECT 위력을 보여드리죠.
- 2017/02/27 우분투 계정 관리
- 2012/11/01 Secure CRT 유니코드 한글 설정
- 2012/08/06 SQL에서의 기본적인 Join문 설명
- 2012/02/07 파일생성 권한 초기화 시키기
- 2012/02/07 특정 파일(ex: mp3,avi,mpg)만 찾아서 자동으로 삭제하기!
- 2012/02/07 리눅스에서 쓰레드 최대 생성 갯수 확인
- 2012/02/07 리눅스 하위 디렉토리의 문자열 검색
- 2012/02/07 SSH 포트22번 불량 접속 시도 IP 자동 막기 1
- 2011/12/25 우분투 IP변경하기
- 2011/12/06 원격서버의 Virtualbox 의 웹관리툴 Phpvirtualbox 관련 삽질
- 2011/10/16 우분투에서 웹서버 환경 구축하기 (LAMP or APM)
조건 값보다 큰 필드의 레코드 값을 수정
UPDATE 테이블명 SET 필드명 = "바꿀 값" WHERE 필드명 > "조건 값"
조건 값을 제외한 모든 레코드 값을 수정
UPDATE 테이블명 SET 필드명 = "바꿀 값" WHERE 필드명 <> "조건 값"
조건에 맞는 두개의 필드를 바꿈
UPDATE 테이블명 SET 필드명 = "바꿀 값", 필드명2 = "바꿀 값" WHERE 조건들
필드의 값에 '철수'라는 단어가 포함 되어 있다면 모두 '영희'로 수정
UPDATE 테이블명 SET 필드명 = REPLACE(필드명, '철수', '영희')
조건에 맞는 필드명의 값에 '영희'단어를 덧붙임
UPDATE 테이블명 SET 필드명 = CONCAT(필드명,'영희') WHERE 조건들
그누보드 게시판의 여분필드 값을 바꾸는 예제를 해보도록 하겠습니다.
Example.01
게시물 번호 wr_id가 3인 게시물의 wr_subject(제목)과 wr_content(내용)을 변경하는 예제입니다.
UPDATE g5_write_게시판아이디 SET wr_subject="제목변경", wr_content="내용변경" WHERE wr_id = 3;
이럴경우 필요한 프로그램이 있습니다 PSCP 입니다 PSCP는 윈도우와 리눅스 간에 파일을 복사 할수 있습니다.
먼저 PSCP.EXE 파일을 다운 받습니다.
이후 pscp.exe 실행 파일을 system32 디렉토리로 복사합니다.
일반적으로 C : \ Windows \ System32 경로에 있습니다. 이렇게 하는 이유는 어떤 경로에서도 pscp 명령어를 사용하기 위해서 입니다.
다음 명령어 형식을 사용하십시오.
cmd 스크립트 입니다.
pscp -pw password C:\Users\Admin\Desktop\test.txt \
user@192.168.33.10:/home/youngsam
위의 명령은 리눅스에서 윈도우 폴더로 복사하는 명령어 입니다.
미리 mysql의 데이터를 백업시켜놓지 않고 db가 터져서 접속이 불가능한 상태이기 때문에 .frm파일과 .idb파일만 남아서 이것을 이용해서 복구해야 했기에
재가 썻던 방법을 남깁니다.
.frm에는 테이블 스키마가 남겨져 있는데
shell>mysqlfrm --diagnostic <복구하고 싶은 frm이 담겨있는 mysql database의 경로>
여기서 shell이란 linux terminal과 windows powershell 다 포함됩니다.
또한 ibd는
frm에서 나온 테이블을 추가해준 후에
1. alter table <table.name> discard tablespace
2. 복구하고 싶은 idb파일을 해당 db가 있는 폴더에 넣어준다.
3. alter table <table.name> import tablespace
4. .cfg오류는 무시해도 좋습니다.
Install PHP 7
Use the following set of commands to add PPA for PHP 7 in your Ubuntu system and install it.
$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get update $ sudo apt-get install -y php7.0
Check PHP Version
Now use the following command to check installed php version on your system.
$ PHP 7.0.1-4+deb.sury.org~trusty+1 (cli) ( NTS ) Copyright (c) 1997-2015 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
Install PHP 7 Modules
You may also need to install modules based on your application requirements. Use the following command to find our available php 7 modules.
$ php7.0-common - Common files for packages built from the PHP source libapache2-mod-php7.0 - server-side, HTML-embedded scripting language (Apache 2 module) php7.0-cgi - server-side, HTML-embedded scripting language (CGI binary) php7.0-cli - command-line interpreter for the PHP scripting language php7.0-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary) php7.0-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary) libphp7.0-embed - HTML-embedded scripting language (Embedded SAPI library) php7.0-dev - Files for PHP7.0 module development php7.0-dbg - Debug symbols for PHP7.0 php7.0-curl - CURL module for PHP php7.0-gd - GD module for PHP php7.0-imap - IMAP module for PHP php7.0-intl - Internationalisation module for PHP php7.0-ldap - LDAP module for PHP php7.0-pgsql - PostgreSQL module for PHP php7.0-pspell - pspell module for PHP php7.0-recode - recode module for PHP php7.0-snmp - SNMP module for PHP php7.0-tidy - tidy module for PHP php7.0-json - JSON module for PHP php-all-dev - package depending on all supported PHP development packages php7.0-sybase - Sybase module for PHP php7.0-modules-source - PHP 7.0 modules source package php7.0-sqlite3 - SQLite3 module for PHP php7.0-mysql - MySQL module for PHP php7.0-opcache - Zend OpCache module for PHP
Now install modules which is required for you.
$ sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi
How to Install PHP 5.4 or PHP 5.5 or PHP 5.6 on Ubuntu 16.04, 14.04 or…
프로그래밍/리눅스 & MY-SQL | 2017/05/21 12:12Install PHP 5.4
Use the following set of command to add PPA for PHP 5.4 in your Ubuntu system and install PHP 5.4.
$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:ondrej/php5-oldstable $ sudo apt-get update $ sudo apt-get install -y php5
Check Installed PHP Version:
# php -v PHP 5.4.35-1+deb.sury.org~precise+1 (cli) (built: Nov 19 2014 19:34:07) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
Install PHP 5.5
Use the following set of command to add PPA for PHP 5.5 in your Ubuntu system and install PHP 5.5.
$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get update $ sudo apt-get install -y php5.5
Check Installed PHP Version:
# php -v PHP 5.5.19-1+deb.sury.org~precise+1 (cli) (built: Nov 19 2014 19:32:57) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
Install PHP 5.6
Use the following set of command to add PPA for PHP 5.6 in your Ubuntu system and install PHP 5.6.
$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get update $ sudo apt-get install -y php5.6
Check Installed PHP Version:
# php -v PHP 5.6.3-1+deb.sury.org~precise+1 (cli) (built: Nov 19 2014 19:34:53) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
Installing Nginx with PHP 7 and MySQL 5.7 (LEMP) on Ubuntu 16.04 LTS
Nginx(발음 “engine x”)는 무료이며 오픈소스이고 높은 성능의 HTTP 서버이다. Nginx는 매우 적은 자원을 사용하면서 안정적이고 풍부한 기능들을 가지고 있다. 또한 설정도 매우 간단하다. 본 지침서는 우분투 16.04 서버에서 PHP 7(PHP-FPM), MySQL 5.7을 지원하는 Nginx 설치를 설명하고 있다. LEMP = Linux + nginx(engine x) + MySQL + Linux
1. 준비 단계
이 지침서에 호스트 이름은 server1.example.com, 아이피 주소는 192.168.1.100을 사용한다. 이 설정은 사용자마다 다르므로 적절하게 수정 후 사용해야 한다. 이 지침서의 모든 단계는 루트 권한으로 진행하였다. 다음과 같이 루트(root)로 :
sudo -s
2. MySQL 5.7 설치
MySQL을 설치하기 위해서 다음과 같이 실행한다. [root@server1 ~]#
은 터미널의 프롬프트이다. 타이핑하는 것은 아니다.
[root@server1 ~]# apt-get -y install mysql-server mysql-client
New password for the MySQL "root" user: <-- yourrootsqlpassword
Repeat password for the MySQL "root" user: <-- yourrootsqlpassword
데이터베이스의 보안을 위해 익명사용자와 테스트 데이터베이스를 제거하기 위해 다음을 실행한다.
[root@server1 ~]# mysql_secure_installation
위의 명령을 실행 후 다음의 몇 가지 질문에 답을 하자.
Enter password for user root: <-- Enter the MySQL root password
...
Press y|Y for Yes, any other key for No: <-- Press y if you want this function or press Enter otherwise.
...
Change the password for root ? ((Press y|Y for Yes, any other key for No) : <-- Press enter
...
Remove anonymous users? (Press y|Y for Yes, any other key for No) : <-- y
...
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : <-- y
...
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : <-- y
...
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : <-- y
3. Nginx 설치
Apache2가 이미 설치되어 있다면 Nginx를 설치하기 전에 Apache2를 제거한다.
[root@server1 ~]# service apache2 stop
[root@server1 ~]# update-rc.d -f apache2 remove
[root@server1 ~]# apt-get remove apache2
이제 Nginx를 설치한다.
[root@server1 ~]# apt-get -y install nginx
// 시작은 다음과 같이
[root@server1 ~]# service nginx start
제대로 설치되었는지 확인하기 위해 웹 브라우저에서 주소를 입력해 본다 (예, http://192.168.1.100). 기본 페이지가 보이면 설치 성공이다. 그리고 Nginx의 웹 문서의 기본 디렉터리는 /var/www/html
이다.
4. PHP 7 설치
PHP-FPM(FastCGI Process Manager)를 이용한다1. FastCGI 데몬 소켓은 /run/php/php7.0-fpm.sock
에서 확인할 수 있다.
[root@server1 ~]# apt-get -y install php7.0-fpm
5. Nginx 설정
vi(또는 nano)편집기를 이용하여 다음의 설정파일을 편집한다2.
[root@server1 ~]# vi /etc/nginx/nginx.conf
[root@server1 ~]# vi /etc/nginx/sites-available/default
예를들면 기본 디렉터리는 설정은 root /var/www/html;
이다. 그리고 php 연동을 위해 다음과 같이:
[root@server1 ~]# vi /etc/php/7.0/fpm/php.ini
// 다음과 같이 설정한다.
cgi.fix_pathinfo=0:
[root@server1 ~]# service nginx reload
[root@server1 ~]# service php7.0-fpm reload
이제 /var/www/html/
에 info.php
파일을 하나 만들고 웹에서 확인 : <?php phpinfo(); ?>
6. PHP에서 MySQL 지원 및 기타 주요기능 설치
[root@server1 ~]# apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext
[root@server1 ~]# service php7.0-fpm reload
7. 기타 설정 (옵션)
TCP Connection
[root@server1 ~]# vi /etc/php/7.0/fpm/pool.d/www.conf
...
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
...
[root@server1 ~]# php7.0-fpm reload
[root@server1 ~]# vi /etc/nginx/sites-available/default
...
fastcgi_pass 127.0.0.1:9000;
...
[root@server1 ~]# service nginx reload
- PHP-FPM의 자세한 내용은 https://php-fpm.org/를 참고하자. ↩︎
- 설정파일 예제, https://www.nginx.com/resources/wiki/start/topics/examples/full/ ↩︎
1. HTTPS + non-www
server {
listen 80;
server_name wsgvet.com www.wsgvet.com;
location / {
rewrite ^/(.*)$ https://wsgvet.com/$1 permanent;
}
}
server {
listen 443 ssl http2;
server_name wsgvet.com www.wsgvet.com;
...
if ($host != 'wsgvet.com' ) {
rewrite ^/(.*)$ https://wsgvet.com/$1 permanent;
}
...
}
2. HTTPS + www
server {
listen 80;
server_name www.wsgvet.com wsgvet.com;
location / {
rewrite ^/(.*)$ https://www.wsgvet.com/$1 permanent;
}
}
server {
listen 443 ssl http2;
server_name www.wsgvet.com wsgvet.com;
...
if ($host != 'www.wsgvet.com' ) {
rewrite ^/(.*)$ https://www.wsgvet.com/$1 permanent;
}
...
}
3. 결론
성능에는 별 차이없는 것 같습니다만, 예전에는 두번 거쳐서 넘어가는 느낌이라면
지금은 단 한번의 리라이트로 넘어가기 때문에 더 나은 것 같습니다.
후배 친구에게 계정을 생성해 주었다고 한다. 그 친구가 상위 폴더까지 모두 접근해서.
DB 정보등을 확인해서 SSH 로 접근해 ROOT 권한으로 로그인까지 성공 했다고 한다. 그래서 . 전화 상으로 설명하기 힘들듯 하여 내용을 정리 한다.
1.
우분투 설치후 계정 생성 간단하다
adduser 생성하고자하는아이디
위내용을 입력하면 즉시 사용할 암호를 물어보고 암호를 입력하면 엔터만 치고 마지막 y 하면 계정 생성이 끝난다.
이렇게 하면 사용자는 생성된 아이디 비밀번호로 로그인을 할수 있다. 하지만 상위 폴더 접근이 가능하다 이를 해결하기 위해서 여러가지 방법이 있지만 간단한 방법 권한 설정으로 처리 하는 방법을 설명한다.
2.
최상위 퍼미션 조정
chmod 711 /
chmod 711 /home
chmod 711 /etc
이렇게 하면 상위 폴더 접근을 막을수 있다 하지만. 문제는 생성된 아이디로 sftp 접속후 파일을 수정 하려고 하면 수정이 안된다 .
생성된 계정 폴더 소유권자가 아마 root 로 되어 있기 때문이다. 위에서 생성된 계정으로 소유권을 바꾸면 된다.
예) 생성된 계정 이름이 youngsam 이라고 하자
chown -R youngsam:youngsam /home/youngsam/www
명령어가 될것이다 . 마지막 www 부분이 빠질수도 있다. 이후 ls-al 명령어로 소유권이 변경된 것을 확인 할수 있다.
XPEnology 포럼에서 JUN이라는 유저분이 시놀로지 나스 운영체제인 DSM 커널을 동적으로 패치하는 리눅스 커널 모듈을 개발했다고 합니다.
그.래.서 외장하드에 나스 자료를 급하게 백업하고 XPEnology DSM 6.0.2 을 설치해봤습니다. 덕분에 BLOG파일을 날려먹었네요
설치하고 몇일동안 만지작 거려보니 XPEnology DSM 5.2보다 빠르고 안정적이네요.
XPEnology DSM 6.0.2 준비물
XPEnology DSM 6.0.2 준비물
서버1(블로그 자료실)
DS3615xs 6.0.2 Jun's Mod(부트로더) : 다운로드
DSM 소프트웨어(운영체제) : 다운로드
Win32DiskImager(프로그램) : 다운로드
USB View(프로그램) : 다운로드
서버2(구글 드라이브)
DS3615xs 6.0.2 Jun's Mod(부트로더) : 다운로드
DSM 소프트웨어(운영체제) : 다운로드
Win32DiskImager(프로그램) : 다운로드
USB View(프로그램) : 다운로드
Osfmount(프로그램) : 다운로드
XPEnology DSM 6.0 설치하는법
<사진에 있는 이름과 다운받은 부트로더 이름이 다를수있습니다>
1. Win32DiskImager 프로그램을 실행후 부트로더 이미지 경로선택과 USB 디바이스를 선택후 Write(=쓰기)버튼을 클릭해주세요.
2. 경고버튼이 뜨면 Yes(=네)버튼을 클릭해주세요.
3. 부트로더 이미지파일을 USB에 기록중이니 잠시 기다려주세요.
4. 정상적으로 기록이 끝나면 OK(=알겠음)버튼을 클릭해주세요.
[BONUS] 만약, 부트로더 USB 만들고나서 인식이 안되는 경우에는 ofsmount프로그램을 이용해 마운팅 작업해주세요.
이전 XPEnology(헤놀로지) 설치 방법과 다르게 부트로더 파일을 수정해서 속이는 과정을 거쳐야합니다.
5. USB VIEW 프로그램을 실행후 부트로더 이미지를 기록한 USB를 선택해주세요.
6. idVendor와 idProduct를 메모장에 기록해주세요.
7. /grub 경로에 있는 grub.cfg파일을 메모장이나 에디터플러스로 열어주세요.
8. set vid=0x058f 부분을 아까 기록해둔 idVendor 값을 교체해주세요.
9. set pid=0x6387 부분을 아까 기록해둔 idProudct 값으로 교체해주세요.
10. SataPortMap=1 부분을 연결된 하드디스크 개수만큼 수정해주시고 저장해주세요.
samsung|SM-G925K|1/30sec|F/1.9|ISO-500
< 바이오스/UEFI 마다 다르게 나올수있습니다 >
11. 바이오스/UEFI 설정 들어가신후 부팅 옵션 1순위를 부트로더 USB로 선택해주세요.
samsung|SM-G925K|1/10sec|F/1.9|ISO-250
< 부트로더 버젼에 따라서 다르게 나올수있습니다>
11. 정상적으로 부트로더 USB 부팅이 되면 위 사진처럼 나타납니다.
12. 브라우저에 아래 주소를 입력해주신후 자작나스로 자동연결되면 설정버튼을 눌러주세요.
주소 : http://find.synology.me 혹은 http://diskstation:5000
13. 다운받으신 DSM 소프트웨어(운영체제) 경로선택후 지금설치 버튼을 클릭해주세요.
14. " 이 하드 디스크의 모든 데이타가 제거된다는 사실을 이해합니다. " 체크후 확인버튼을 클릭해주세요.
15. 소프트웨어(운영체제) 설치가 끝나면 자동으로 설정창이 연결되니 창을 끄지말아주세요.
16. 서버이름과 사용자이름, 패스워드 확인을 기입해주신후 다음 버튼을 클릭해주세요.
17. 다음 버튼을 클릭해주세요.
18. ' 수동으로 DSM 업데이트 다운로드 및 설치 ' 선택후 다음버튼을 클릭해주세요.
19. 퀵커넥트 서비스(기능)은 정품 시놀로지 사용자만 이용가능하므로 '이 단계 건너뛰기'을 클릭해 넘겨주세요.
20. '이 단계를 건너뛰면 인터넷을 통해 원격으로 Diskstation에 액세스하기 위해 포트 전달을 설정해야 합니다.' 팝업창이 뜨면 예버튼을 클릭해서 넘겨주세요.
21. 한번 더 예 버튼을 클릭해주세요.
정상적으로 XPEnology DSM 6.0.2 설치가 끝났습니다.
오랜만에 데이터 베이스에 관련해여 포스트를 작성한다.
조금씩 공부하고 포스트를 올리는 것보다는 몇 단원정도 전체를 흝어본후 포스트를 쓰는게 더 나을 것 같아서 근간에 글을 올리지 않았다 ㅋ
SELECT
이번에는 Select에 대해 알아보자.
Select문은 원하는 자료를 찾아서 출력해주는 명령어이다.
사용법은 단순하다.
SELECT [Field(column)] FROM [table_name] WHERE [조건들.......]
위는 해당 테이블 내의 조건에 맞는 필드들을 출력해주는 것이다. 출력은 열에 맞추어 출력하고 조건은 행의 자료에 맞춰 출력이 된다.
보통 많이 쓰이는 예를 들어보자.
테이블은 미리 작성해둔 것이고, 명령어 select * from easy_drinks 에서 easy_drinks는 테이블 네임이고 "*" 은 모든 Field=column을 출력하겠다는 뜻이다.
위처럼 출력하면 지저분하고 원하는 자료를 검색하기가 쉽지 않다.
그래서 사용되는 것이 바로 WHERE절이다. 이 WHERE절은 DELETE절이나 UPDATE문등 다양하게 쓰이기 때문에 잘 알아둬야 한다. 솔직히 프로그래밍 언어에 익숙한 사람에게는 별 것 없고, 조건 절이라고 생각하면 된다. select절 에서는 어떤 조건으로 검색된 Record의 Field를 출력할 것인지를 판별한다.
그럼 위의 보기 지저분한 소스를 (확인하고자하는 조건)에 맞추어 SELECT를 해보자.
급하게 쓰느라 소문자로 써버렸다 -.-; 사실 소문자, 대문자는 단지 가독성을 위한것이다.
위 결과만 보면 일단 지저분한 상단보다 단순하게 나온 것을 알 수 있을 것이다.
내가 테이블로부터 알고 싶은 것은 가게 이름과 요리들이다. 그리고 조건은 싸구려 요리들만 검색해 보았다.
SELECT drink_name,main,second FROM easy_drinks WHERE amount1<2.5 AND amount2<4.0;
처음의 밑줄친 곳은 보여질 Field의 이름이고 두번째 밑줄은 테이블 명이다.
내가 원하는 것은 가게 이름과 요리들이기 때문에 drink_name과 main, second를 설정하였다. 가로 없이 쉼표로만 표현 가능하다.
easy_drinks는 단순히 테이블 명이다.
WHERE 이하는 검색 조건으로서 record 내의 값을 분류하게 된다.
내가 설정한 조건은 메인 요리가 2.5달러보다 싸고 세컨요리가 4.0달라보다 싼요리다.
※ 참고할 것 : 문자열이나 문자를 my-sql에서는 '로 시작 종료를 하는데 그럼 문자열 내의 '는 어떻게 처리하는지가 문제가 된다. 그 점은 여타 언어와 같이 \'을 사용한다. 역슬래시 '를 사용하는 것이다. 그러면 단순 문자 '로 처리된다. 그렇지 않으면 '(작은따옴표)의 개수 오류로 에러처리가 되거나 다음 쉼표를 기다리는 대기 열만 계속해서 나올 것이다.
WHERE
아마 WHERE절 사용법은 딱 보면 감이 올 것이다.
조건이 하나일 경우에는 하나만 사용하면 되고 여러개일 경우에는 AND와 OR을 사용할 수 있다.
AND는 둘다 참일 경우 : (다른말로) 첫번째가 거짓이면 검사 종료 (라고 표현하기도 한다.)
OR은 둘중 하나만 만족할 경우 : (다른말로) 첫번째가 참이면 검사 종료 (라고 표현하기도 한다.)
비교연산자는 =, <>, <, > , <=, >= 가 존재한다.
여타 언어랑 유의깊게 봐야할 것은 =이 ==과 같이 쓰인다는 것이다. 비교연산자나 바인딩할때도 같이 사용된다. 또한 !=가아니라 <>가 사용된다. ( 둘다 같지 않다의 의미)
만약 찾으려고 하는 VALUES값이 NULL이면 어떻게 해야 할 것인가
생각하는 것처럼 amount1=NULL 또는 amount1=0 또는 amount1='NULL'을 하면 3게다 되지 않는다.
NULL이 C,C++처럼 0으로 처리되지 않기 때문에 안되고 NULL은 정의되지 않은 값으로 나온다.
이 경우에는 "IS NULL"을 사용한다.
위를 보면 is null을 통해 age가 널처리된 값을 뽑아낼 수 있다.
자료를 검색할때 단어내의 원하는 부분이 있는 단어를 원할 때가 있다. 즉 원하는 문자의 일부만으로 결과를 찾아내고 싶을때는 와일드카드 문자를 사용할 수 있다.
이때 사용되는 것은 "LIKE"이다.
LIKE다음에는 %와 _ 두개의 와일드 카드가 사용된다.
% : 다수의 불특정 문자를 의미
_ : 하나의 불특정 문자를 의미
은근히 유용하게 쓰인다. 한번 사용해 보자.
보는 바와 같이 원하는 결과를 얻어낼 수 있다.
LIKE가 등호 대신에 사용된다고 생각하면 이해하기 편할 것이다. '내용~~' 이로 이루어지듯이 문자나 문자열을 대상으로만 가능하다.
어떤 사이의 구간을 표시하기 위해서는 BETWEEN 'A' AND 'B' 가 쓰인다. 물론 A와 B는 정수이다.(문자도 되긴된다. 아스키 코드기준값으로...)
숙어 뜻대로 A와 B사이의 값을 골라준다.
사용예를 보자.
BETWEEN 20 AND 30은 20과 30사이의 값을 찾아달라는 것이다. age 다음에 between이 나왔으므로 등호연산자(=)처럼 사용되었다고 생각해도 된다. 이런명령어는 기본이 AND OR등으로 이루어져있는데 사용자 편의를 위해 등장한 것이다.
다음으로 알아볼 것은 IN이다. 이것은 여러 OR절들의 집합체라고 할 수 있다. 아니 OR의 집합들의 간소화라고 표하는게 더 어울릴 것이다.
사용 예를 보자.
이는 계속 사용해 왔던 shin444 테이블을 select한 것이다.
WHERE age IN('26','28','12')를 말로 풀어서 쓰면 다음과 같다.
age 필드내에 26이거나 28이거나 12의 값이 있다면 선택하라.
이는 OR문으로 여러개를 선택해야할 때 IN을 통해 간단하게 표현된다. IN또한 등호처럼 생각하면 된다^^;
알아본 WHERE내에 특수한 경우는 LIKE와 BETWEEN, IN 3가지가 있었다.
마지막 한가지는 NOT이다. 이 NOT은 말그대로 부정을 의미하고 이를 이용하여 하나의 표현을 다른표현으로서 가능하게 한다. 이는 곧 쿼리문 간소화에도 영향을 끼친다.
NOT의 위치는 WHERE 바로 뒤에 사용된다. 모든 기본위치는 NOT이 WHERE뒤에 있는것이고 가끔 예외가 있다. 특수한 예는 NOT IN과 IS NOT NULL 정도가 있다.
헷갈린다면 WHERE다음에 무조건 NOT을 사용하면 될 것이다.
우분투를 설치후 매번 admin으로 접속하기는 찜찜(?)하니 계정을 추가하여 접속을 해보도록 하자.
우분투에서는 계정을 생성하는 명령어가 두가지가 있다. 바로 adduser와 useradd이다.
두 명령어 모두 계정을 추가하는 명령어지만 약간의 차이점이 있다.
adduser의 경우 명령어 실행시 기본 계정정보를 같이 생성해주지만
useradd의 경우 계정만 생성하며 기타 다른 정보를 수동으로 생성 및 설정해주어야 한다.
하나하나 실행하면서 살펴보도록 하자.
1. adduser [계정이름] - 계정 추가
- 계정생성시 비밀번호 까지 입력받으며 기본정보를 바로 입력 시켜줄수 있다. 홈 디렉토리 또한 자동으로 생성된다.
$ adduser mirUseradd |
'miradduser' 사용자를 추가 중... 새 그룹 'miradduser' ( 1002 ) 추가 ... 새 사용자 'miradduser' ( 1002 ) 을(를) 그룹 'miradduser' (으)로 추가 ... '/home/miradduser' 홈 디렉터리를 생성하는 중... '/etc/skel' 에서 파일들을 복사하는 중... 새 UNIX 암호 입력: 새 UNIX 암호 재입력: passwd: password updated successfully Changing the user information for miradduser Enter the new value, or press ENTER for the default Full Name []: Mir Room Number []: 2000 Work Phone []: 0101111111 Home Phone []: 0102222222 Other []: test 정보가 올바릅니까? [Y/n] y |
이렇게 adduser로 계정을 생성시 우선 암호입력창이 뜨고 후에 부가적인 Commant 입력창이 생성된다.
2. useradd [계정이름] - 계정 추가
- 순수 계정만 생성해주고 기본 셀인 sh가 할당되며 홈 디렉토리와 패스워드는 따로 설정해줘야 한다.
$ useradd mirUseradd |
useradd로 계정을 추가시 따로 결과 메세지나 입력메세지가 없다.
이제 이 두가지 계정을 한번 비교해보도록 하자
3. /etc/passwd - 계정 정보 파일
- 사용자 인증에 필요한 계정 정보를 가지고 있다. cat 명령어로 내용을 살펴보자.
$ cat /etc/passwd |
[생략]... mirUseradd:x: 1000 : 1000 ::/home/mirUseradd:/bin/sh miradduser:x: 1002 : 1002 :Mir, 2000 , 0101111111 , 0102222222 ,test:/home/miradduser:/bin/bash |
맨 아래줄에 보면 mirUseradd와 miradduser 계정이 추가된것이 보인다.
하나하나 자세히 분석해보자.
miradduser:x:1002:1002:Mir,2000,0101111111,0102222222,test:/home/miradduser:/bin/bash
mirUseradd:x:1000:1000::/home/mirUseradd:/bin/sh
- 사용자 계정을 표시한다.
miradduser:x:1002:1002:Mir,2000,0101111111,0102222222,test:/home/miradduser:/bin/bash
mirUseradd:x:1000:1000::/home/mirUseradd:/bin/sh
- 비밀번호를 표시한다. (모두 x로 표시되며 자세한 비밀번호는 아래에서 검색해보겠다.)
miradduser:x:1002:1002:Mir,2000,0101111111,0102222222,test:/home/miradduser:/bin/bash
mirUseradd:x:1000:1000::/home/mirUseradd:/bin/sh
- 사용자 ID를 표시한다. (0 : 관리자, 1~499 : 시스템 계정, 500~ : 일반 계정)
miradduser:x:1002:1002:Mir,2000,0101111111,0102222222,test:/home/miradduser:/bin/bash
mirUseradd:x:1000:1000::/home/mirUseradd:/bin/sh
- 그룹 ID를 표시한다.
miradduser:x:1002:1002:Mir,2000,0101111111,0102222222,test:/home/miradduser:/bin/bash
mirUseradd:x:1000:1000:(null):/home/mirUseradd:/bin/sh
- 계정정보(Comment)를 표시한다.
miradduser:x:1002:1002:Mir,2000,0101111111,0102222222,test:/home/miradduser:/bin/bash
mirUseradd:x:1000:1000::/home/mirUseradd:/bin/sh
- 홈 디렉토리를 표시한다.
miradduser:x:1002:1002:Mir,2000,0101111111,0102222222,test:/home/miradduser:/bin/bash
mirUseradd:x:1000:1000::/home/mirUseradd:/bin/sh
- 로그인 쉘을 표시한다.
분명 위에서 useradd 명령은 홈 디렉토리를 따로 설정해줘야 된다고 말했지만 계정정보를 보면 홈디렉토리가 보인다.
하지만 실제로 홈 디렉토리를 가볼려고 하면 디렉토리가 없다고 표시된다.
$ cd /home/mirUseradd |
-bash: cd: /home/mirUseradd: 그런 파일이나 디렉터리가 없습니다 |
즉 설정된 홈디렉토리를 생성시켜주거나 다른 홈디렉토리를 생성하여 설정값을 바꿔줘야 한다.
4. /etc/shadow - 암호 정보 파일
- 사용자 인증에 필요한 암호 정보를 가지고 있다. cat 명령어로 내용을 살펴 보자.
$ cat /etc/shadow |
[생략]... miradduser:$ 6 $..[생략]..vE.: 16596 : 0 : 99999 : 7 ::: mirUseradd:!: 16595 : 0 : 99999 : 7 ::: |
암호정보도 하나하나 분석해보자.
miradduser:$6$..[생략]..vE.:16596:0:99999:7:::
mirUseradd:!:16595:0:99999:7:::
- 사용자 계정을 표시한다.
miradduser:$6$..[생략]..vE.:16596:0:99999:7:::
mirUseradd:!:16595:0:99999:7:::
- 암호화 시킨 패스워드를 표시한다. (useradd명령어로 추가한 계정에는 패스워드가 없어서 !로 표시됨)
miradduser:$6$..[생략]..vE.:16596:0:99999:7:::
mirUseradd:!:16595:0:99999:7:::
- 1970년 1월 1일 기준으로 패스워드를 수정한 마지막 날짜를 계산하여 표시한다.
miradduser:$6$..[생략]..vE.:16596:0:99999:7:::
mirUseradd:!:16595:0:99999:7:::
- 패스워드를 변경하기위한 최소 사용일수를 표시한다.
miradduser:$6$..[생략]..vE.:16596:0:99999:7:::
mirUseradd:!:16595:0:99999:7:::
- 패스워드를 사용할수 있는 최대 사용일수를 표시한다.
miradduser:$6$..[생략]..vE.:16596:0:99999:7:::
mirUseradd:!:16595:0:99999:7:::
- 패스워드 만기일 전에 경고메세지를 몇일전 부터 알려줄지 표시한다.
miradduser:$6$..[생략]..vE.:16596:0:99999:7:(null)::
mirUseradd:!:16595:0:99999:7:(null)::
- 로그인 차단 일수를 표시한다. (현재는 아무런 정보가 없어서 임의로 null로 표시해주었다.)
miradduser:$6$..[생략]..vE.:16596:0:99999:7::(null):
mirUseradd:!:16595:0:99999:7::(null):
- 얼마간 로그인 차단을 시킬지 표시한다. (현재는 아무런 정보가 없어서 임의로 null로 표시해주었다.)
miradduser:$6$..[생략]..vE.:16596:0:99999:7:::(null)
mirUseradd:!:16595:0:99999:7:::(null)
- 현재는 사용되지 않는 정보이다.
5. usermod [옵션] [계정명]- 계정 수정
- 옵션과 계정명을 받아서 해당 계정을 옵션의 명령에 따라 처리 한다.
-c : [Comment] - 계정 Comment를 수정한다.
-d : [Home Diretory] - 계정 홈 디렉토리를 수정한다.
-e : [Expiredate] - 계정 만기 날짜를 수정한다.
-L : [Lock User] - 사용자 계정을 잠근다.
-U : [Unlock] - 잠금처리되어 있는 계정을 풀어준다.
-h : [Help] - 명령어 옵션 설명을 표시해준다.
위 옵션이외의 많은 옵션이 있으며 -h를 이용하여 알아보는것도 좋다.
몇몇 명령어를 테스트 해볼겸 useradd로 생성시킨 계정에 Comment를 넣어보자.
$ usermod -c Comment_Test mirUseradd |
확인은 /etc/passwd를 살펴보면 된다.
[생략]... mirUseradd:x: 1000 : 1000 :Comment_Test:/home/mirUseradd:/bin/sh miradduser:x: 1002 : 1002 :Mir, 2000 , 0101111111 , 0102222222 ,test:/home/miradduser:/bin/bash |
새로운 Comment가 추가된것을 확인할수 있다.
6. passwd [계정명] - 계정 암호 수정
- 계정 Password를 수정시 usermod -p를 사용하면 /etc/shadow를 직접 바꾸게 되기때문에 실제로 바꾼 Password로 로그인을 할수가 없다. 그래서 passwd 명령어를 사용하여 수정해주어야 한다.
$ passwd mirUseradd |
새 UNIX 암호 입력: 새 UNIX 암호 재입력: passwd: password updated successfully |
새 암호 입력후 확인을 위해 /etc/shadow를 살펴보자
[생략]... mirUseradd:$ 6 $Vx23FZI.$6pguZVI5T9oO7nVf7N7cURTqrPAvBj4nT.6LEuIY99fZJxvRabKNp3OuK4jc2TYeE/mE6nlKqy0e0ZXiMUhrs.: 16596 : 0 : 99999 : 7 ::: miradduser:$ 6 $uqJt2OQg$ZZtpcfz7WMdvOx1gmDzlYEuM4l1vKNyF9.SdkqZwsNIw0z8kO50O8nNmB7fj.tOHmXbFdu9Ty0M1hv0brymZR0: 16596 : 0 : 99999 : 7 ::: |
위에서 살펴볼때는 아무 설정도 되어 있지 않았지만 현재는 암호화되어 Password가 들어가 있는것이 확인 된다.
7. deluser [계정명] - 계정 삭제
- 계정을 삭제하는 명령어이다.
기본적으로 계정만 삭제되며 계정에 관련된 폴더, 파일을 삭제할려면 옵션을 주어야 한다.
$ deluser mirUseradd |
$ deluser -remove-all-files miradduser |
useradd로 추가한 계정은 어차피 계정 정보밖에 없으므로 옵션을 주지 않고 삭제하였고
adduser로 추가한 계정은 홈디렉토리까지 삭제하기 위해 옵션을 주었다.
만약 옵션을 주지 않고 삭제한경우 홈디렉토리가 그대로 남아있는걸 확인할수 있다.
root @mirwebma001 :~# ls /home miradduser |
리눅스 계정관리에 관한 기본적인 명령어를 살펴보았다.
다음번엔 리눅스 계정에 sudo 권한 부여에 대해 알아보겠다.
참고로 useradd로 계정을 생성할경우 다양한 옵션값으로 생성시 모든 정보를 입력할수도 있지만
특별한 경우가 아니면 adduser 명령어로 그냥 자동으로 생성되게 하는게 편한듯 하다.
Secure CRT로 솔라리스 10에 접속해서, 유니코드(UTF-8)로 된 한글을 보려면
1. 계정 환경파일
##### ANSI (KSC-5601)
#setenv LANG ko; /bin/stty cs8 -istrip defeucw
##### unicode (UTF-8)
setenv LANG ko.UTF-8; /bin/stty cs8 -istrip \defeucw
##### 영문 전용
#setenv LANG C; /bin/stty cs7 istrip defeucw
2. Secure CRT 옵션 설정 메뉴 중에
Session Option -> Emulation -> Advanced
또는
Session Option -> Appearance -> Fonts -> Character
부분을 'UTF-8'로 변경
* 아래 alias를 환경파일에 넣어두면, 조금 편하게 전환할 수 있다. (물론 Secure CRT 옵션도 바꿔야 한다.)
alias euckr "setenv LANG ko; /bin/stty cs8 -istrip defeucw"
alias utf8 "setenv LANG ko.UTF-8; /bin/stty cs8 -istrip \defeucw"
alias asc "setenv LANG C; /bin/stty cs7 istrip defeucw"
* 상기 Secure CRT 옵션은 세션(Session)별로 설정하는 것이다. 따라서, 유니코드용 세션을 하나 더 추가해서 창을 2개 열어 놓고 전환해 가면서 사용하면, 편하게 사용할 수 있다.
-------------------------------------------------------
Linux vi editor
:set enc=utf8
:set enc=cp949
샘플 테이블
test1)
+--------+------+
| a | b |
+--------+------+
| 금강 | 1 |
| 한강 | 2 |
| 대동강 | 3 |
| 두만강 | 4 |
test2)
+------+--------+
| b | d |
+------+--------+
| 1 | 백두산 |
| 2 | 금강산 |
| 5 | 지리산 |
| 6 | 한라산 |
1) INNER JOIN
Inner join를 이용하여 앞 예제와 동일한 결과를 얻을 수 있는 예는 다음과 같다.
이는 select 문에서 join에 사용할 컬럼명을 ON test1.b=test2.b와 같이 직접 지정해도 된다.
【예제】
mysql> select * from test1 inner join test2 using(b);
+------+------+------+--------+
| a | b | b | d |
+------+------+------+--------+
| 금강 | 1 | 1 | 백두산 |
| 한강 | 2 | 2 | 금강산 |
+------+------+------+--------+
2 rows in set (0.00 sec)
mysql> select * from test1 inner join test2 on test1.b=test2.b;
+------+------+------+--------+
| a | b | b | d |
+------+------+------+--------+
| 금강 | 1 | 1 | 백두산 |
| 한강 | 2 | 2 | 금강산 |
+------+------+------+--------+
2 rows in set (0.00 sec)
mysql> select * from test1, test2 where test1.b=test2.b;
mysql>
2) NATURAL JOIN
두 테이블에 같은 이름을 가진 컬럼이 있고, 이 컬럼을 기준으로 join을 하려면 natural join
을 사용한다.
【예제】
mysql> select * from test1 natural join test2;
+------+------+------+--------+
| a | b | b | d |
+------+------+------+--------+
| 금강 | 1 | 1 | 백두산 |
| 한강 | 2 | 2 | 금강산 |
+------+------+------+--------+
2 rows in set (0.00 sec)
mysql>
3) LEFT OUTER JOIN
test1에는 4개의 레코드가 있는데 where test1.b=test2.b라는 조건 때문에 두 개의 레코드 밖
에 선택되지 않았다. 이때 test2의 b에 test1의 b 값이 존재하지 않더라도 test1의 레코드를
모두 가져오려면 left outer join을 사용한다. left outer join에서 outer는 옵션이므로 생략해
도 된다.
【예제】
mysql> select * from test1 left join test2 using(b);
+--------+------+------+--------+
| a | b | b | d |
+--------+------+------+--------+
| 금강 | 1 | 1 | 백두산 |
| 한강 | 2 | 2 | 금강산 |
| 대동강 | 3 | NULL | NULL |
| 두만강 | 4 | NULL | NULL |
+--------+------+------+--------+
4 rows in set (0.00 sec)
mysql> select * from test1 left join test2 on test1.b=test2.b;
+--------+------+------+--------+
| a | b | b | d |
+--------+------+------+--------+
| 금강 | 1 | 1 | 백두산 |
| 한강 | 2 | 2 | 금강산 |
| 대동강 | 3 | NULL | NULL |
| 두만강 | 4 | NULL | NULL |
+--------+------+------+--------+
4 rows in set (0.01 sec)
mysql>
4) RIGHT OUTER JOIN
test2에는 4개의 레코드가 있는데, where test1.b=test2.b라는 조건 때문에 2개의 레코드 밖
에 선택되지 않는다. 이때 test1의 b에 test2의 b값이 존재하지 않더라도 test2의 레코드를
모두 가져오려면 right outer join을 사용한다. right outer join에서 outer는 옵션이므로 생략
할 수 있다.
【예제】
mysql> select * from test1 right join test2 on test1.b=test2.b;
+------+------+------+--------+
| a | b | b | d |
+------+------+------+--------+
| 금강 | 1 | 1 | 백두산 |
| 한강 | 2 | 2 | 금강산 |
| NULL | NULL | 5 | 지리산 |
| NULL | NULL | 6 | 한라산 |
+------+------+------+--------+
4 rows in set (0.00 sec)
mysql>
chmod -R go+X * (디렉토리별 실행권한을 준다)
chmod -R 707 나머지 바꾸고 싶음 퍼미션 폴더
for LIST in `find / | grep mp3`
do
rm -f $LIST
echo $LIST
done
이런 예제의 문제점은 mp3.html 도 지울수가 있다는 것이겠죠
그렇다면 다음과 같이 바꿀수 있겠죠
for LIST in `find / -name *.mp3`
do
rm -f $LIST
echo $LIST
done
이렇게 바꿀수가 있답니다.
그러면 저걸 vi 를 열어서 작성한다음 저장하고 빠져나옵니다
(파일명은 자기맘^^)
그런후 excute 권한을 줘야죠.. 지금 이 작업을 하시는분은 당연히 root 이실테니..
# chmod 700 파일명
자기자신이외에 실행을 못시킵니다..
그러나 여기서 또 발견되는 문제점.. 의사를 확인하지않고 지우면 문제가될수있으니..
다음과 같이바꿀수 있죠(그러나, 귀찮은 단점이있습니다)
for LIST in `find / -name *.mp3`
do
rm $LIST
echo $LIST
done
그럼.. 계정관리하시는데 도움이 되길 바랍니다~~
명령을 할 경우 최대 생성 갯수가 나옴
명령 실행시 실행시키는 디렉토리의 하위 디렉토리의 문자열과
문자열이 들어있는 파일이 검색된다.
SSH를 돌리면 /var/log/secure 에 22번포트로 접속시도가 많이 보인다. 부적절하게 접속시도하는 IP 들을 자동으로 차단하는 스크립트를 만들어 보겠다.
과정은 /var/log/secure 에서 불량 ssh 접속 ip를 추려내서 /etc/hosts.deny 에 등록된다.
# grep "Failed password for" /var/log/secure | egrep -v "invalid user" | egrep -v "{USERID}|{LOGINIP}" | awk '{ print $11}' | uniq | sed "s/^/all:/" > /root/ssh-login-ip
# grep "Failed password for invalid user" /var/log/secure.1 | awk '{ print $13}' | uniq | sed "s/^/all:/" >> /root/ssh-login-ip
[위의 명령어 설명] USERID=관리자 ssh 접속계정 LOGINIP=관리자 ssh접속계정의 공인 ip : 직접 입력해야함.
-------------------------------------------------------------------------------------------------------------
grep "Failed password for" /var/log/secure: /var/log/secure 파일 내에서 "Failed password for" 문장이 들어간 행만 뽑아냄
egrep -v "invalid user" : 위 결과에서 "invalid user" , "USERID" , "LOGINIP" 가 들어간 부분은 제외
egrep -v "{USERID}|{LOGINIP}": 위 결과에서 관리상 필요에 의해 접속했던 계정, IP는 제외
awk '{print $11}' : 위 결과에서 각 행마다 11번째 문장을 뽑아냄 -> 비정상 IP
uniq : 중복된 문장을 하나씩만 출력
sed "s/^/all:/" > /root/ssh-login-ip: 각 행의 맨 앞에 "all:" 을 입력 후 /root/ssh-login-ip 파일에 저장
grep "Failed password for invalid user" /var/log/secure.1 : var/log/secure.1 파일에서 "Failed .... user" 문장이 들어간 행만 추출
awk '{print $13}' : 각 행마다 11번째 문장만 뽑아냄 -> 비정상 IP
>> /root/ssh-login-ip : 위의 /root/ssh-login-ip 파일에 뒤이어 내용을 첨가함
------------------------------------------------------------------------------------------------------------
# cat /root/ssh-login-ip /etc/hosts.deny | sort | uniq >> /root/hosts.deny : hosts.deny에 블럭킹할 ip 등록
▶crontab 등록
# crontab -e
------------------------------------------------------------------------------------------------------------------
05,15,25,35,45,55 * * * * grep "Failed password for" /var/log/secure | egrep -v "invalid user" | egrep -v "{USERID} | {LOGINIP}" | awk '{ print $11}' | uniq | sed "s/^/all:/" > /root/ssh-login-ip
06,16,26,36,46,56 * * * * cat /root/ssh-login-ip /etc/hosts.deny | sort | uniq > /root/hosts.deny
07,17,27,37,47,57 * * * * cp /root/hosts.deny /etc/hosts.deny
-------------------------------------------------------------------------------------------------------------------
우분투가 데비안 커널을 사용하는것인지 서버설정이며 기본명령어가 대부분 데비안과 비슷하다. ㅡ.,ㅡ;
이제껏 사용했던
빨간모자-레뎃(redhat)의 네트웍 설정은 아무런 도움이 되지 못했다.
초기 설치시 DHCP를 사용하게 되어있던 항목을 고정아이피로 바꿔주기 위해서 구글신을 빌었다.
설정은 아래와 같이 하면된다.
우선 서버콘솔박스 앞에서 작업한다면 (리모트로 작업한다면 ifdown하는 동시에 터미널접속이 끊어지므로 주의)
ifdown eth0
로 네트웍카드를 잠시 멈춘후 아래 내용을 etc/network/interfaces에 설정한다.
auto lo
iface lo inet
loopbackauto eth0
iface eth0 inet static
address 192.168.10.136
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
gateway 192.168.10.1
dns-nameservers 168.126.63.1 168.126.63.2
ifup eth0
sudo /etc/init.d/networking restart
### 쓴건 : 원격서버의 Virtualbox 웹관리를 위한 Phpvirtualbox 설치
### 쓴이 : 권성재 (nonots@hanmail.net, http://www.badaweb.co.kr)
### 쓴때 : 2011-12-13
###########################################################################
### 환경
- CentOS 5.x 64비트
- 아파치 2.2, PHP 5.2
- X 윈도우(GUI) 없이 텍스트모드(TUI)로 서버 실행중
1) 서버 CPU 가 가상화기술을 지원하는지 확인. 지원 안한다면 포기.
# egrep '(vmx|svm)' /proc/cpuinfo
2) php 확장기능에 soap, json 이 포함되어 있는지 확인. 없다면 추가 설치.
php 버전도 5.1 이상이어야 한다.
# php -i | egrep -i '(soap|json)'
3) dkms 패키지 설치
아래 링크에서 다운받아 설치
- http://rpmfind.net/linux/rpm2html/search.php?query=dkms
- http://linux.dell.com/dkms/permalink/
# rpm -Uvh dkms-~~~.rpm
4) VirtualBox 4.1 및 확장팩 설치
-http://download.virtualbox.org/virtualbox/
글쓰는 현재 최신버전이 4.1.6 이다. 확장팩도 같이 다운받는다
# rpm -Uvh VirtualBox-4.1-4.1.6_74727_rhel5-1.x86_64.rpm
-확장팩 설치
# VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.6-74713.vbox-extpack
부가기능 설치 위한 VBoxGuestAdditions_4.1.6.iso 파일도
다운받아 놓는다.
- vbox 사용자 추가하고 비밀번호 정한다. 비번을 kawkf123 이라고 하자
# useradd -g vboxusers vbox
# passwd vbox
만약 홈디렉토리를 /home/vbox 가 아니라 용량큰 다른 곳에 마운트한
/data/vbox 와 같은 위치를 사용한다면 -d /data/vbox 와 같이 추가
- /etc/vbox/vbox.cfg 파일 생성
[root@home3 ~]# cat /etc/vbox/vbox.cfg
VBOXWEB_USER=vbox
VBOXWEB_HOST=222.231.xxx.xxx
VBOXWEB_PORT=18083
VBOXWEB_LOGFILE=/var/log/vbox.log
와 같이 하고 반드시 /var/log/vbox.log 를 만들어줌
# touch /var/log/vbox.log
# chmod 600 /var/log/vbox.log
# chown vbox.vboxusers /var/log/vbox.log
이렇게 안만들어주고 데몬시작하니 말도 없이 까칠하게 생깜.
VBOXWEB_HOST=222.231.xxx.xxx 이 부분을
VBOXWEB_HOST=0.0.0.0 으로 하기도 한담.
18083 포트가 막혀있으면 열어준다.
5) Phpvirtualbox 4.1 설치
- http://code.google.com/p/phpvirtualbox/
위 링크에서 phpvirtualbox-4.1-5.zip 다운받아서 웹루트 적당한 곳에
압축을 푼다.
만약 Virtualbox 4.0 이 설치되었다면 phpvirtualbox 도 4.0 버전대를 사용
해야 할꺼다.
config.php-sample 파일을 config.php 로 복사한 후 편집기로 열어서 상단에
var $username = 'vbox';
var $password = 'kawkf123';
var $location = 'http://222.231.xxx.xxx:18083/';`
여기 username,password 는 4)에서 생성한 리눅스 서버 vbox 계정정보다.
이 웹접속 위치가 http://www.mysite.com/phpvirtualbox/index.php 라고 하자
어떤데서는 아래 명령어 줘야한다고함. vbox 계정으로 전환한 뒤 해야하거나.
# VBoxManage setproperty websrvauthlibrary null
6) 접속방법
# /etc/init.d/vboxballoonctrl-service start
# /etc/init.d/vboxdrv start
# /etc/init.d/vboxweb-service start
와 같이 데몬을 시작한다.
만약 위 3)에서 dkms 커널모듈이 설치가 불안정하게 되었다면
# /etc/init.d/vboxdrv setup 로 재설치할 수도 있다.
위 3 개 데몬 실행에 오류가 없고 18083 포트가 열렸고,프로세스가
# ps aux |grep vbox
vbox 32002 0.0 0.1 149588 4268 ? Sl 18:26 0:00 /usr/lib/virtualbox/vboxwebsrv --background -H 222.231.xxx.xxx -p 18083 -F /var/log/vbox.log
vbox 32007 0.0 0.0 119560 2200 ? S 18:26 0:00 /usr/lib/virtualbox/VBoxXPCOMIPCD
vbox 32012 0.0 0.1 140076 5620 ? Sl 18:26 0:00 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
와 같이 보이면 일단 된거다.
http://www.mysite.com/phpvirtualbox/index.php 와 같이 접속하면
로그인 아이디 비번 물을꺼다.
여기에 위에서 vbox 서버 계정 정보를 넣으려고 삽질하면 안.된.다. 나처럼 -_-;;
아이디 비번에 모두 admin 이라고 넣어야 한다.
로그인후 메뉴에서 admin 비밀번호를 바꾸면 된다.
보이는 화면은 그냥 virtualbox 와 비슷할꺼다.
..
이제 알아서 직관적으로 사용하면 된다.
### 참고
http://codefat.com/tag/phpvirtualbox/
http://www.oss.kr/12792
우선 apache를 설치합니다.
$ sudo apt-get install apache2
설치후 잘 작동하나 확인해 봅시다.
브라우저 주소창에 http://localhost/ 입력해 다음 메세지가 나오면 정상적으로 작동하는겁니다.
$ sudo apt-get install php5 libapache2-mod-php5
설치가 끝나면 재시작 합니다.
$ sudo /etc/init.d/apache2 restart
재시작후 PHP가 잘 작동하는지 확인합니다. (다음 코드를 입력후 저장)
$ sudo gedit /var/www/testphp.php
<?php phpinfo(); ?>
브라우저 주소창에 http://localhost/testphp.php 입력해 다음 메세지가 나오면 정상적으로 작동하는겁니다.
마지막으로 MySQL 을 설치합시다.
$ sudo apt-get install mysql-server
설치 중간에 암호를 설정하는 화면이 나옵니다.
New password for the MySQL "root" user: 비밀번호 입력
Repeat password for the MySQL "root" user: 비밀번호 확인
$ mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yourpassword');
* 참고로 서버 주소를 바꾸려면 다음처럼 입력후 bind-address 라인의 IP주소를 바꿔주시면 됩니다.
$ sudo gedit /etc/mysql/my.cnf
bind-address = 127.0.0.1 # 기본설정은 localhost
설치가 끝나면 MySQL 관리자 (phpMyAdmin) 를 설치합니다.
$ sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin
설치 중간에 다음 메세지가 나오면 apache2를 선택합니다. (space bar로 선택)
Web server to reconfigure automatically: apache2
그후 phpMyAdmin의 데이터베이스를 dbconfig-common으로 설정합니다.
"예"를 눌러 넘어가면 phpMyAdmin에서 사용할 암호를 묻습니다.
이제 끝으로 phpMyAdmin에서 디비 서버와 연결할 비밀번호를 설정하면 설치가 끝납니다.
(임의의 암호 생성이 있는거보니 직접 제어 할일이 적은 설정 같은데 혹시 모르니 적어둡시다.)
역시 phpMyAdmin가 잘 설치되었나 확인해 봅시다.
브라우저 주소창에 http://localhost/phpmyadmin/ 입력해 다음 메세지가 나오면 정상적으로 작동하는겁니다.