Chat node.js socket.io

Chat node.js socket.io
http://www.tamas.io/simple-chat-application-using-node-js-and-socket-io/
http://www.tamas.io/advanced-chat-using-node-js-and-socket-io-episode-1/
http://www.tamas.io/advanced-chat-using-node-js-and-socket-io-episode-2/
http://psitsmike.com/2011/09/node-js-and-socket-io-chat-tutorial/
http://psitsmike.com/2011/10/node-js-and-socket-io-multiroom-chat-tutorial/

vim

 
vim
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Vim/Documents/UsedVim
 
Vim 쓰다가 Ctrl + z로 vim에서 잠시 shell로 빠져 나올수 있습니다.
shell에서 fg입력하면 다시 vim으로 복귀합니다.

CentOS 시간 동기화 설정 – ntp

CentOS 시간 동기화 설정 – ntp
 
서버 시간을 자동으로 동기화하기 위한 설정입니다.
 
이 설정을 안하면 게시판에 글을 썼는데 작성시간이 1시간전으로 나올 수 도 있습니다.
 
리눅스 서버에서 시간 동기화는 ntp, rdate 크게 2가지가 있는데,  요즘 대세는 여러 시간 서버와 자동으로 동기화해주어 편리하고 
정확한 ntp 입니다.
 
1. ntpd 를 설치합니다.
1 yum install ntp
 
2. nptd 데몬을 시작하고, 부팅시에도 자동 실행되도록 합니다.
1 /etc/init.d/ntpd start
2 /sbin/chkconfig ntpd on
 
3. 시간을 수작업으로 1회만 동기화해보고, 현재 시간을 확인합니다.
1 ntpdate -d 0.centos.pool.ntp.org
2 date
 
4. 앞으로 수분에서 수십분 정도 지나면, 아래처럼 시간이 자동으로 동기화되므로, 따로 신경쓸 부분이 없습니다.
1 grep ntpd /var/log/messages|tail

Linux command basic

원래 부팅시 정해진 서비스 또는 스크립트를 실행시키는 건 init (System V Init)라는 프로그램의 몫이였습니다. 유닉스가 처음 생길때부터 그래왔고, 지금도 그렇습니다.(하지만 지금은 다른 아이로 교체되는 시기입니다.) init는 그 이름처럼 리눅스의 초기화부분을 담당합니다.
 
init 사용자들이 /etc/rc.d/init.d 디렉토리에 부팅시 실행할 서비스 스크립트를 넣으면, init는 부팅이나 특정행동이 있을때 그 스크립트들을 자동으로 실행시키는 역활을 했었습니다. 그러면 사용자들은 chkconfig명령으로 자동실행 서비스를 관리하거나 service start 명령으로 서비스들을 실행키거나 끌 수 있었습니다.
 
하지만 centos 7을 넘어온 현재…
끝까지 유지될 것 같았던 init는 systemd이라는 새로운 아이에게 임무를 빼앗버렸답니다. 결국 유눅스 탄생부터 항상 init가 있었던 자리.. 프로세스1(PID 1)의 자리 또한 systemd에게 빼앗기고 말았습니다. 
따라서 centos 7에서는 부팅 서비스를 systemd 에서 관리하게 되었습니다. init는 없어지지는 않았지만 제 기능을 하지못하는 상태입니다.
 
 
1. init를 밀어낸 새로운 아이 systemd의 정체
systemd는 init에 비해 우월한 성능과 뭐든지 잘하는 재능(기능)을 가지고 있었습니다. 그야말로 “엄친아”였던 것입니다. 그러니까 개발자들도 systemd 매력에 흠뻑 빠졌기에 데려왔겠죠.. 
 
systemd는 정말 기능이 많습니다. 서비스관리, 시스템 로그관리, 사용자관리, 시간, 원격, cgroup 관리등.. 참 할 수 있는 일이 많습니다. 시스템의 전반적인 관리를 전부 systemd 이 담당하고 있습니다. 그리고 아이는 부팅시 실행하는 서비스를 최소화하고, 추후 병렬실행이라는 정책을 갖고 있었습니다. 때문에 centos 7 에서는 부팅시간이 많이 잛아졌답니다.
 
참조사항 : http://www.freedesktop.org/wiki/Software/systemd/
 
잡설이지만, 아이를 데려오기전 말들이 많았다고 해요.. 기능많은 아이가 “한가지만 잘하자”라는 유닉스의 철학(?)과 맞지않다는 의견도 있었고, 오랫동안 함께한 init를 버리자니, 슬프다(?)는 의견도 있었습니다. 이처럼 논란이 있었다고 해요.. 집안(리눅스)에 새로운 아이를 들이는 문제로…
 
 
2. systemd 잠시 살펴보기
이 글의 목적과는 별로 상관없지만, 그래도 새로운 아이를 만났으니, 한번 살펴봅시다.
 
먼저 systemd의 설정파일들은 /etc/systemd 에 있습니다. 
( bootchart.conf  logind.conf  system.conf  user.conf )
 
systemd는 설정파일과 미리 정의된 Service, Target 파일을 통해서 시스템을 제어하게 됩니다. 파일이 있는 디렉토리는 다음과 같습니다.
관련된 바이너리 실행파일 : /usr/lib/systemd
Service, Target 파일 : /usr/lib/systemd/system
 
* 유용한 명령어
# systemd-analyze : 부팅에 걸린시간 표시
# systemd-analyze blame : 부팅시 서비스별 걸린 시간표시
# journalctl : 부팅을 포함한 전체적인 시스템 로그
# journalctl -b : 마지막 부팅 이후 시스템 로그
# hostnamectl : 호스트 이름표시
# hostnamectl set-hostname [변경이름] : 호스트이름 변경
 
 
3. systemd 에서 서비스 관리하기
A. 서비스 상태표시
 
– 존재하는 전체 서비스 목록
# systemctl 
 
– 서비스 목록 (활성화 여부만 표시) 
# systemctl list-unit-files
 
– 부팅시 실행에 실패한 서비스목록
# systemctl –failed
 
– 서비스 활성화 여부
# systemctl is-enabled [서비스명]
 
– 서비스 현재 동작 여부
# systemctl is-active [서비스명]
 
– 서비스의 자세한 상태 (해당 서비스의 로그도 표시)
# systemctl status -l [서비스명]
 
 
B. 서비스 제어
서비스를 활성화하게 되면 부팅시 해당 서비스가 자동실행됩니다.
 
– 서비스 활성화
# systemctl enable [서비스명]
 
– 서비스 비활성화
# systemctl disable [서비스명]
 
– 서비스 시작
# systemctl start [서비스명]
 
– 서비스 종료
# systemctl stop [서비스명]
 
– 서비스 재시작
# systemctl restart [서비스명]
 
– 서비스 갱신
# systemctl reload [서비스명]
 
위의 서비스 설정을 데몬에 즉시 반영하려면 아래 명령어를 실행하면 됩니다.
#systemctl daemon-reload
 
– 서비스와 관련된 프로세스도 모두 죽임
# systemctl kill [서비스명]

​​​MariaDB install on CentOS 7

MariaDB install on Centos 7 with wordpress
CentOS Setting up MariaDB Repositories
https://downloads.mariadb.org/mariadb/repositories/#mirror=kaist&distro=CentOS&distro_release=centos6-amd64–centos6&version=10.1
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
#/etc/yum.repos.d/MariaDB.repo 에 save
installing MariaDB with yum
https://mariadb.com/kb/en/mariadb/yum/
Installing MariaDB with YUM
With the repo file in place you can now install MariaDB like so:
#sudo yum install MariaDB-server MariaDB-client
설치중 에러 발생시
In our case I have found all packages related to Mariadb with command
#rpm -qa | grep -i ‘^MariaDB’
And removed them with commands like:
#yum remove MariaDB-server
#yum remove mysql
#yum install MariaDB-server MariaDB-client
#service mysql start
Set MariaDB to start on boot:
# chkconfig mysql on
Secure MariaDB after installation
# mysql_secure_installation — all yes
# service mysql restart
# mysql -u root -p
How to Create a New User
mysql>CREATE USER ‘newuser’@’localhost’ IDENTIFIED BY ‘password’;
mysql>GRANT ALL PRIVILEGES ON * . * TO ‘newuser’@’localhost’;
mysql>FLUSH PRIVILEGES;

SELinux Commands

■ SELinux 상태 확인
○ SELinux 현재 상태 확인 : sestatus  -v
○ 모든 SELinux boolean 값 확인 : getsebool  -a
○ 파일/디렉토리 컨텍스트 확인 : ls -Z
○ 메모리 프로세스 컨텍스트 확인 : ps -Z
 
 
■ 로그파일
○ 기본적으로 권한이 거부되었을 때만 기록되도록 설정되어 있다.
○ auditd 서비스 데몬이 작동 중일 경우 로그 경로 : /var/log/audit/audit.log
○ auditd가 작동 안할 경우 로그 경로 : /var/log/messages
 
 
■ SELinux 중지/작동
○ 일시적임.  재부팅하면 설정파일대로 다시 되돌아옴.
○ 중지 : setenforce  0
○ 작동 : setenforce  1
 
  
– 컨텍스트 설정 복원 : /sbin/restorecon  -R  -v  /opt/cubrid/lib/libcubridcs.so
– 컨텍스트 타입 변경 : /usr/bin/chcon  -t  texrel_shlib_t  /opt/cubrid/lib/libcubridcs.so​
 
 
 
 
○ SELinux 설정 : 웹서버가 사용자별 웹 디렉토리에 접근할 수 있도록 권한을 설정한다.
    – 상태확인 : getsebool  httpd_enable_homedirs
       — 확인결과 : httpd_enable_homedirs –> off
    – 상태설정 : setsebool -P httpd_enable_homedirs  on
 -P : 설정을 설정파일에 기록해서 재부팅되어도 계속 유지되도록 한다.
 
 
 
 
○ SELinux 설정 : 웹서버가 사용자의 컨텐츠에 대한 접근을 할 수 있도록 설정한다.
    – 설정 : chcon  -R  -t  httpd_user_content_t  /home/account/public_html
    – 확인 : ls  -aldZ  /home/account/public_html
    ※ httpd가 httpd_t type으로 실행되며 httpd_user_content_t, httpd_sys_content_t type으로 설정된 파일만 접근할 수 있다.
 -R : 디렉토리 하위 객체에도 동일하게 적용한다.
 -t : context type을 설정한다.
 
 
 
setsebool -P httpd_read_user_content 1

파일 시스템의 퍼미션 및 소유권


1. 퍼미션(Permission)의 이해
 

 – 리눅스 시스템과 같은 다중 사용자 운영체제에서 파일이나 디렉토를 읽거나(read), 쓰거나(write), 실행(execute) 하는 등의 행위를 말함 

 – 파일 시스템과 같은 자원에 액세스할 수 있는 자격 또는 접근 허가를 의미

 – 일반적으로 각 파일은 서로 다른 종류의 액세스나 사용자, 사용자 그룹, 나머지 사용자들에게 대해 각각 다른 퍼미션을 부여할 수 있음.

2. 파일과 디렉토리의 속성 값 확인

파일 형태 사용권한  하드링크 번호  owner 이름  group 이름  파일 크기  시간  파일명 
 – rw-r–r–  root  root  31904   

 

 

 

3. 파일 유형

기호  설명 
–  일반 파일의 의미 
디렉토리 파일을 의미 
심볼릭 링크 파일을 의미 
Block Device 파일을 의미 

Character Device 파일을 의미 

4. 파일 퍼미션

 1) 소유자(uesr) 

  – 첫 3개의 문자(상위 rw-) 

  – 소유자는 해당 파일이나 디렉토리를 생성하거나 해당 파일을 소유한 사용자를 의미

 2) 그룹 소유자(group)

  – 소유자 퍼미션 다음 3개의 문자(상위 r–)

  – 시스템 운영 시 필요에 따른 그룹을 생성하고 각 그룹에 사용자 계정을 포함시키게 됨. 

  – 그룹에 포함됨. 

  – 그룹에 포함되어 있는 사용자들이 해당 파일이나 디렉토리에 대한 권한을 의미

 3) 나머지 사용자(other) 

  – 마지막 3개 문자(상위 r–).

  – 소유자와 그룹 소유자에 포함되지 않는 모든 사용자가 해당 파일이나 데렉토리에 가지는 권한을 의미

기호 퍼미션 일반 파일

디렉토리 

읽기 권한  내용을 읽을 수 있는 권한   ls 등의 명령어를 이용하여 디렉토리 내의 리스트를 확인할 수 있는 권한
쓰기 권한  파일을 쓰거나 지울 수 있는 권한  디렉토리 내에 파일을 생성, 삭제할 수 있는 권한
x

실행 권한 

 바이너리 파일(실행 파일)에 대한 실행 권한   디렉토리 위치를 변경하거나 디렉토리 내의 항복들을 읽을 수 있는 권한

5. 퍼미션의 예

 1) drwxrw-r– : 디렉토리이며 소유자는 모든 권한(읽기, 쓰기, 실행), 그룹에 포함된 사용자는 읽거나 쓸 수 있는 권한, 나머지 사용자는 는 읽기만 가능

 2) drw-r—– : 디렉토리이며 소유자는 읽기와 쓰기 권한, 그룹에 속한 사용자는 읽기 권한만, 나머지 사용자는 접근 권한이 없음

 3) -rwxrwxr– : 일반 파일이며 소유자는 모든 권한, 그룹 사용자도 모든 권한, 나머지 사용자는 읽기만 가능

6. 퍼미션 인증 절차

 – LINUX의 모든 파일과 디렉토리는 소유자와 그룹소유자를 가지고 있으며 이는 ls-l 혹은 ls-n 명령을 통해 확인이 가능

 – ls -l : 소유자와 그룹소유자를 계정명과 그룹명으로 표현

 – ls -n : 소유자와 그룹소유자를 uid, gid로 표현

 – 계정명과 uid는 동일하게 취급되며 그룹명과 gid도 동일하게 취급됨

 

7. 퍼미션 인증 절차 예

 1) 사용자가 install.log 파일을 수정하기 위해 쓰기 권한을 요청

 2) install.log 파일의 uid를 이용하여 사용자 계정과 uid와 비교

 3) 일치하면 소유자로 인정하여 소유자의 퍼미션을 부여

 4) 일치하지 않으면 다음 단계인 gid와 비교

 5) 일치하면 그룹소유자로 인정하여 그룹소유자의 퍼미션을 부여 

 6) gid도 일치하지 않은 경우 other에 해당하는 퍼미션을 부여

8. 파일 소유권 및 소유권 그룹 변경(chown)

 사용 방법
 chown [계정명] [파일명] 파일의 소유자를 변경 
 chown [계정명]:[그룹명] [파일이름] 파일의 그룹명을 변경
 chown uid.gid [파일이름] 파일의 소유자와 그룹소유자를 변경
 옵션
 -r

하위 디렉토리까지 소유자와 그룹 소유자를 변경 

1) 파일의 소유자 및 소유 그룹 변경 방법

 – useradd tester : tester라는 계정 생성

 – groupadd test : test라는 그룹 생성

 – touch file1 : touch 명령어를 이용한 file1이라는 파일 생성

 – ls -l : 파일 목록의 형태, 권한, 소유자, 그룹, 크기, 시간, 파일명을 나열함.

 – ls -n : ls -l과 비슷하며 소유자를 UID로 소유주 그룹을 GID로 표시하여 나열함.

 – chown tester.test file1 : file1의 소유주를 tester로 소유주 그룹을 test로 변경함

 

2) 하위 디렉토리 전체의 소유자 및 소유 그룹 변경

 – mkdir tmp : tmp라는 디렉토리 생성

 – touch tmp/test : tmp 디렉토리 하위에 test라는 파일 생성

 – chown -R tester.test tmp/ : tmp 디렉토리 하위에 있는 전체를 소유주를 tester로 소유주 그룹은 test로 변경

 

9. 파일의 그룹 소유권 변경 (chgrp)

 옵션  설명
 -r

 하위 디렉토리까지 그룹 소유권 변경

 

10. 파일의 퍼미션 변경 (chmod)

1) 상대 모드 (Symbolic method)

명령어 설명 
chmod [mode] [파일이름]  상대모드, 절대모드를 통해 파일의 퍼미션 변경
기호 의미 
 u user
 g group
 o other
 a all
기호 의미 
 + 추가
 – 삭제
 = 지정 (현재의 권한을 제거하고 설정한 권한으로 설정된다.)
 s 소유자 또는 그룹만 실행 
기호 의미 
 r 읽기(read) 
 w 쓰기(write) 
 x

실행(execute) 

2) 상대 모드를 이용한 퍼미션 변경

– touch file1 file2 file3 : touch 명령어를 이용한 file1,file2,file3 생성

– chmod a+x file1 : file1의 user, group, other 퍼미션 실행(execute)권한 추가

– chmod u+x,g+w,o-r  file2 : file2의 user에는 실행권한 추가, 그룹에는 쓰기권한 추가, other에는 읽기권한 삭제  

 

3) 절대모드

 소유자(user)  그룹(group)   나머지(other) 
 r  w  x  r  w  x  r  w  x
 4  2  1  4  2  1  4  2  1
 2^2  2^1  2^0  2^2  2^1  2^0  2^2  2^1

 2^0

4) 절대모드를 이용한 표현 방법

# rwxrw-r–

# chmod 764 file1

 소유자(user)  그룹(group)   나머지(other) 
 r  w  x  r  w  x  r  w  x
 4  2  1  4  2  1  4  2  1
 4+2+1  4+2   4 

 764

# rw-r-xr-x

# chmod 655 file2

 소유자(user)  그룹(group)   나머지(other) 
 r  w  x  r  w  x  r  w  x
 4  2  1  4  2  1  4  2  1
 4+2  4+1   4+1 

 655

# r-xr–r–

# chmod 544 file3

 소유자(user)  그룹(group)   나머지(other) 
 r  w  x  r  w  x  r  w  x
 4  2  1  4  2  1  4  2  1
 4+1  4  4 

 544

# r——–

# chmod 400 file4

 소유자(user)  그룹(group)   나머지(other) 
 r  w  x  r  w  x  r  w  x
 4  2  1  4  2  1  4  2  1
 4  0   0 

 400

 

11. 특별한 퍼미션

– 리눅스의 권한은 소유자, 그룹 소유자, 나머지 사용자의 세 부류로 나누며 각각 파일에 대한 권한을 읽기, 쓰기, 실행의 세 가지로 나타낸다.

– 관리자의 입장에서 시스템의 모든 상황을 고려해야 하기 때문에 이런한 권한 외에 몇가지 특별한 권한을 사용하여 시스템 관리의 효율성을 높인다.

 특별한 퍼미션  절대 모드 표현
SetUID  4000 
SetGID  2000 
sticky bit

1000 

1) SetUID(4000) 퍼미션

 – 일반적으로 x 권한으로 실행되면 실행한 사용자의 권한으로 실행된다.

 – SetUID가 적용되면 파일이 실행되는 동안 실행한 사용자가 아닌 파일의 소유자의 권한을 부여하게 된다.

 – SetUID는 실행 파일에만 명시할 수 있음

 – 적용되면 소유자의 퍼미션 값에 실행권한에 x가 아닌 s로 명시

▶ SetUID가 부여된 대표적인 명령어 : passwd

 – passwd를 변경하는 과정에서 /etc/shadow 파일의 내용을 읽거나 쓸 수 있어야 변경한 패스워드를 기록할 수 있기 때문에 passwd 파일에는 SetUID가 걸려 있고 소유주가 root로 설정되어 있음.

 – passwd 파일을 보면은 root 권한으로 설정되어 있는 것을 볼 수 있다. 관리자 외의 일반 사용자들이 자신의 비밀번호를 변경할려면 관리자 권한이 필요하는데 있때 SetUID를 부여함으로써 일반 사용자가 패스워드를 변경할려고 실행하는 동안 일반 사용자한테 관리자 관한을 주는 것 이다. 이 후 다시 회수 한다.

 

▶ SetUID 설정

# chmod 4644 file1

# chmod u+s file2

 

2) SetGID(2000) 퍼미션

 – SetGID 퍼미션은 SetUID와 비듯한 권한으로 파일이 실행되는 동안 그룹 소유주의 권한을 갖게 된다.

 – 실행 파일 뿐만 아니라 디렉토리에도 명시될 수 있다.

 – 적용되면 그룹 소유자의 퍼미션 값에 실행권한에 x가 아닌 s로 명시

▶ 디렉토리에 적용될 경우?

 – 명시된 디렉토리 하위에 생성되는 디렉토리는 동일한 SetGID 권한을 갖게된다.

 – 시스템에 어떤한 사용자가 SetGID 권한이 부여된 디렉토리 내에서 디렉토리를 생성 하더라도 SetGID 권한이 적용된 디렉토리와 동일한 그룹 소유주가 된다. 

#chmod u+s dir1

※ 하위 디렉토리도 적용된다고 했는데 그림을 보면 알다시피 상위 디렉토리만 SetGID가 적용 되었다. 그럼 어떨 경우에 하위 디렉토리도 적용 된다는 것일까? 아래 테스트 그림을 보면서 확인해보자!

#chmod g+s dir2

※ 아래 그림과 같이 하위 디렉토리도 설정이 될려면은 상위 디렉토리에 SetGID가 설정이 된 이 후에 SetGID가 적용된 디렉토리 위치에 하위 디렉토리를 생성 하였을 경우 하위 디렉토리도 SetGID가 적용이 된다. 

3) Sticky Bit(1000) 퍼미션

 – 디렉토리에 부여되는 권한으로 적용 시 모든 사용자가 읽고, 쓰고, 삭제가 가능하다. 단, 삭제는 오르지 소유주만 가능하다.

 – 권한의 적용되면 other의 퍼미션에 실행권한이 x가 아닌 t로 명시된다.

 

▶ 대표적인 Sticky Bit가 적용된 디렉토리는 /tmp와 /var/tmp가 있음

▶ Sticky Bit 적용 되었을 경우 

# su tester : tester 계정으로 접속

# cd /home : /home 디렉토리로 이동

# ls -l : /home 디렉토리 안에 있는 자원 및 tester 디렉토리 퍼미션 확인

# chmod 755 tester : tester 디렉토리 퍼미션을 775 변경

# ls -l : 변경한 tester 디렉토리 퍼미션 확인

# cd tester : tester 디렉토리로 이동

# ls : tester 디렉토리 안에 있는 자원 확인

# touch file1 : file1이라는 파일 생성

# vim file1 : file1이라는 파일 안에 데이터 입력 (입력 데이터는 다음 그림 확인)

# ls -l : file1의 퍼미션 확인

# chmod 1777 file1 : file1이라는 파일 퍼미션 변경 (Sticky Bit 적용)

# ls -l : 퍼미션이 변경된 file1 확인

# su – : 관리자 계정으로 접속

# 암호 : 관리자 암호 입력

 

# file1 안에 입력한 데이터 값

# useradd tester2 : tester2라는 계정 생성

# su tester2 : tester2 계정 접속

# cd /home : /home 디렉토리로 이동

# ls -l : home 디렉토리 안에 있는 자원 확인

# cd tester : tester 디렉토리로 이동

# ls -l : tester 디렉토리 안에 있는 자원 확인

# rm file1 : 삭제 시도 ( 다른 계정으로 삭제를 시도 해보았지만 거부 당함)

# vim file1 : 수정 시도 ( 다른 계정으로 수정을 시도 하였는데 결과는 다음 그림으로 확인)

# file1이라는 파일 안에 tester2 사용자가 데이터를 수정 (자세히 보면 숫자가 위아래로 변경 된 것을 알 수 있다.)

# wq : 저장 후 종료

# whoami : 접속한 계정 확인 

# su – : 관리자 계정으로 다시 접속

# cd /home/tester : /home/tester 디렉토리로 이동

# ls -l : 자원 확인

# vim file1 : tester2가 수정에 성공 하였는지 관리자 모드로 직접 확인

 

# tester2 사용자에 이해서 수정 되었습니다. 

 

Centos 7 설치 후 작업들

CentOS 7.0 설치후 sesger 설정하기
 
http://jucom.ruatic.net/xe/board_bnzz28/2637
 
http://myblog.opendocs.co.kr/archives/17
 
 
http://ftp.kaist.ac.kr/CentOS/7.0.1406/isos/x86_64/
위 페이지에서 CentOS7.0.14 이미지를 다운로드 합니다. 본문은 minimal 이미지 예.
 
CentOS 7.0.14_x86_64bit Linux 최소설치후 web sever 설정하기 
==============================================================
Apache,Mysql,PHP,phpmyadmin,Vsftpd
==============================================================
# yum -y install net-tools
# ifconfig 아이피 확인. Putty 프로그램으로 ssh root 로 접속하여 아래 순서대로 실행
 
# yum -y install mc vim ntsysv setuptool wget

# yum -y update
==============================================================
방화벽(iptables) 설정: vim /etc/firewalld/zones/public.xml
==============================================================
아래줄을 한번씩 실행하여 Apache,Mysql,ftp 등록.
 
# firewall-cmd –permanent –zone=public –add-service=ftp
# firewall-cmd –permanent –zone=public –add-port=21/tcp
# firewall-cmd –permanent –zone=public –add-service=http
# firewall-cmd –permanent –zone=public –add-port=80/tcp
# firewall-cmd –permanent –zone=public –add-service=mysql
# firewall-cmd –permanent –zone=public –add-port=3306/tcp
————————————————————
# systemctl restart firewalld
 
==============================================================
1) Apache 2.4.6 설치
==============================================================
# yum -y install httpd
# vim /etc/httpd/conf/httpd.conf
——————————————–i
-95 번줄 이렇게 수정
ServerName localhost:80
 
-144 번줄 이렇게 수정
Options FollowSymLinks
 
-151 번줄 이렇게 수정
AllowOverride All
 
-164 번줄 이렇게 수정.
DirectoryIndex index.html index.cgi index.php
 
-문서 끝줄에 아래 2줄 추가.
ServerTokens Prod
KeepAlive On
——————————————-wq
# systemctl start httpd
# systemctl enable httpd
# systemctl restart httpd
==============================================================
2) Mysql 설치 5.5.41-MariaDB
==============================================================
# yum -y install mariadb-server mariadb
# systemctl start mariadb
# mysql_secure_installation
 
root (enter for none): enter
Set root password? [Y/n] y
New password: password 설정
Re-enter new password: password 확인
 
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
 
# systemctl enable mariadb
# mysql -u root -p
> select user,host,password from mysql.user;
> show databases;
> exit
==============================================================
3) PHP 5.4.16 설치
==============================================================
# yum -y install php php-gd php-pear php-fpm
# vim /etc/php.ini
———————————————i
-211 번줄 이렇게 수정
short_open_tag = On
———————————————wq
# vim /etc/php-fpm.d/www.conf
# systemctl start php-fpm
# systemctl enable php-fpm.service
==============================================================
4) phpmyadmin 4.3.9 설치
==============================================================
# yum -y install epel-release
# yum -y install phpMyAdmin php-mcrypt php-mysql
 
# vim /etc/httpd/conf.d/phpMyAdmin.conf
( ifconfig 에 표시된 아이피 192.168.0.10 )
———————————————i
-17 번줄 이렇게 수정
Require ip 127.0.0.1 192.168.0.10/24
 
-34 번줄 이렇게 수정
Require ip 127.0.0.1 192.168.0.10/24
———————————————wq
# systemctl restart httpd
==============================================================
5) Vsftpd 3.0 설치
==============================================================
# yum -y install vsftpd
# vim /etc/vsftpd/vsftpd.conf
———————————————i
-12 번줄 이렇게 수정
anonymous_enable=NO
———————————————wq
# systemctl start vsftpd
# systemctl enable vsftpd
————————-
Selinux 를 사용 할것이면  아래3줄 한번식 실행해줌. 중요한 부분 ..
 
# setsebool -P ftp_home_dir 1
# setsebool -P httpd_read_user_content on
# setsebool -P httpd_unified=1
==============================================================
php phpinfo 확인해 보기.
==============================================================
# vim /var/www/html/info.php 새로작성
———————————————i
<?php phpinfo(); ?>
———————————————wq
http://192.168.0.10/info.php 부라우져에서 출력확인.
==============================================================
rewrite mod 활성화 VirtualHost 설정 하기. 디렉토리 리스팅 막기.
==============================================================
# vim /etc/httpd/conf.d/vhost.conf
———————————————i
<Directory “/home/*/public_html”>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
</Directory>
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName www.server.world
</VirtualHost>
——————————————–wq
위 8 줄 복사 붙여넣기
==============================================================
사용자 추가 add_user.sh 파일만들기.
====================——————————————
# sh add_user.sh 실행하면 [계정,DB,VirtualHost] 를 한번에등록
# cd /root
# vim add_user.sh
– 아래 문장  #!/bin/bash ~ esac 여기 끝줄까지 복사 붙여넣기.
——————————————–i
#!/bin/bash
clear
echo “”
echo “”
echo ” 새 사용자 추가”
echo ” ———————————–“
echo “”
echo ” 사용자 계정”
echo ” Mysql+db 계정”
echo ” Virtual Host”
echo “”
echo “”
echo ” 시작:1번 취소:0번 을 선택 하세요.”
echo ” ———————————–“
echo “”
echo -n ” Select Number:”
read Num
case “$Num” in
 
#사용자 추가 하기 
1)
clear
echo “”
echo “”
echo ” 새 사용자 정보 입력”
echo ” ———————————–“
echo ” “
echo -n ” User ID 입력:”
read id
echo ” “
echo -n ” User pass 입력:”
read pass
echo “”
echo ” 예제:jucom.dnip.net “
echo “”
echo -n ” VirtualHost 입력:”
read url
echo “”
echo ” ———————————–“
echo “”
echo ” 입력한 정보로 계정을 설정 합니다”
echo “”
echo ” ———————————–“
echo “”
echo -n ” 생성=y 취소=n 선택 하세요:”
read chk
if [ “$chk” != “y” ]
then
echo “”
echo “”
exit
fi
 
#Myslq 계정 추가 
clear
echo “create database $id;
GRANT ALL PRIVILEGES ON $id.* TO $id@localhost IDENTIFIED by ‘$pass’;” > ./tmp
echo “”
echo “”
echo “”
echo “————————————————“
echo ” Mysql root (최고 관리자) 패스워드를 입력하세요”
echo “————————————————“
echo “”
mysql -u root -p mysql < ./tmp
echo “”
echo “”
rm -f ./tmp
 
# 계정 ID 추가 
adduser $id
 
# 패스워드 추가 
echo “$pass” | passwd –stdin “$id”
 
# 가상호스트 추가
echo “
<VirtualHost *:80>
DocumentRoot /home/$id/public_html
ServerName $url
ServerAlias www.$url
</VirtualHost>” >> /etc/httpd/conf.d/vhost.conf
 
mkdir /home/$id/public_html
chmod -R 755 /home/$id/
chown -R $id /home/$id/
chgrp -R $id /home/$id/
chcon -R -t httpd_user_content_t /home/$id/public_html
echo ” “
 
# 아파치 restart
systemctl restart httpd
echo “”
echo “”
echo ” $id님의 모든 설정을 완료했습니다”
echo “”
exit;;*)
echo “”
echo “”
echo ” 작업을 취소 했습니다”
echo “”
esac
———————————————–wq
# sh add_user.sh
=========================================================
 

​​​​​​​Centos 설치 후 WordPress설치

1. 기초 프로그램 설치 

 
#cd /opt
#yum install wget unzip
#wget http://wordpress.org/latest.zip
#yum install php-gd
 
2. MariaDB 설정
 
설치가 안되어 있으면 설치를 먼저 진행한다.
더보기
 
설치 후 데이터 베이스를 생성한다.
 
# mysql -u root -p
 
mysql> CREATE DATABASE wordpress;
mysql> GRANT ALL PRIVILEGES on wordpress.* to ‘wpuser’@’localhost’ identified by ‘your_password’;
mysql> FLUSH PRIVILEGES;
mysql> exit
# service mariadb restart
 
3. HTTPD, PHP 설치 
 
# sudo yum install httpd
# sudo systemctl start httpd.service
# sudo systemctl enable httpd.service
# sudo yum install php php-mysql
# sudo systemctl restart httpd.service
# sudo yum install php-fpm
# sudo vi /var/www/html/info.php
 
<?php phpinfo(); ?>
 
# sudo firewall-cmd –permanent –zone=public –add-service=http
# sudo firewall-cmd –permanent –zone=public –add-service=https
# sudo firewall-cmd –reload
 
설정이 다 되었으면, 브라우저를 열고 확인해 봅니다.
 
http://ip/info.php
 
 
4. 기타 기초 파일 설치 
 
#unzip -q latest.zip -d /var/www/html
#chown -R apache:apache /var/www/html/wordpress/
#chown -R 755 /var/www/html/wordpress/
#mkdir -p /var/www/html/wordpress/wp-content/uploads
#chown -R :apache /var/www/html/wordpress/wp-content/uploads
#cd /var/www/html/wordpress/
#mv wp-config-sample.php wp-config.php
#vi wp-config.php
 
// ** MySQL settings – You can get this info from your web host ** //
/** The name of the database for WordPress */
define(‘DB_NAME’, ‘wordpress’);
 
/** MySQL database username */
define(‘DB_USER’, ‘wpuser’);
 
/** MySQL database password */
define(‘DB_PASSWORD’, ‘your_password’);
 
/** MySQL hostname */
define(‘DB_HOST’, ‘localhost’);
 
4. 대망의 설치 
 
http://ip/wordpress/wp-admin/install.php