오늘은 LEMP(Nginx 1.10.1, MariaDB 5.5, PHP 7.0)을 설치해보겠습니다.
CentOS 7 기본 리포지토리는 Nginx 1.10.1, MariaDB 5.5, PHP 7.0 버전이 설치가 불가능합니다.
Nginx 1.10.1, MariaDB 5.5, PHP 7.0 버전을 설치하려면 이전에 포스팅한 WebTatic 리포지토리를 설치해주세요.
Jhok’s Blog – [CentOS 7] Yum 최신버전 리포지토리 (WebTatic) – 설치
1. Nginx 최신버전을 설치하기 위해서 Nginx 공식 리포지토리를 설정해주세요.
vi /etc/yum.repos.d/nginx.repo
vim은 vi편집기와 비슷하지만 여러 기능들이 더 추가된 편집기입니다.
설치를 원하시면 아래 코드를 입력해주세요.
yum -y install vim
2. nginx.repo 안에 아래 내용을 입력해주세요.
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgkey=http://nginx.org/keys/nginx_signing.key gpgcheck=0 enabled=1
3. 우선 패키지 업데이트를 진행해주세요.
(업데이트 해야할 패키지가 없으면 아무것도 업데이트 되지 않습니다.)
yum -y update
4. Nginx, Apache, MariaDB, MySQL, PHP 중 설치되어 있는게 있는지 확인합니다.
(mariadb-libs-5.5.47-1.el7_2.x86_64는 기본으로 설치되어 있는 MariaDB 라이브러리 패키지입니다.)
rpm -qa | egrep "^(nginx*|httpd*|mariadb*|mysql*|php*)"
5. Nginx(Web), MariaDB(Client), MariaDB-Server, php70w(PHP 7.0), php70w-mysql(PHP에서 MariaDB 와 연결시 필요한 패키지), php70w-fpm(FastCGI를 사용하는데 필요한 패키지)를 Yum을 이용해 설치해줍니다.
yum -y install nginx mariadb mariadb-server php70w php70w-mysql php70w-fpm
6. 설치가 정상적으로 완료되었으면 하단에 Complete!가 출력됩니다.
(Yum을 이용할때 내가 입력하지 않았는데도 설치되는 패키지들은 대부분 의존성에 의해서 설치되는 패키지입니다.)
7. 설치가 완료되었으면 rpm -qa 명령어를 통해 확인해보세요.
보기좋게 sort -n(정렬 -이름순) 정렬해서 표시되도록 해보세요.
rpm -qa | egrep "^(nginx*|httpd*|mariadb*|mysql*|php*)" | sort -n
httpd(Apache)가 설치된 이유는 PHP70w(PHP 7.0 Webtatic)패키지를 설치할때 의존성때문에 같이 설치가 됩니다.
Nginx 사용시 httpd(Apache)가 필요없으니 기호에 따라 삭제하셔도 무방합니다.
yum -y remove httpd
8. php-fpm의 www.conf 파일을 수정해주세요.
vi /etc/php-fpm.d/www.conf
9. 아래 설정처럼 바꿔주세요.
user = nginx group = nginx
(클론(:)키를 누르시고 set nu 입력후 엔터를 누르시면 왼쪽에 줄번호가 표시됩니다.)
:set nu
10. php-fpm의 listen 설정을 IP(TCP)방식에서 Sock(Unix Sock)방식으로 변경해주세요.
listen = /var/run/php-fpm/php-fpm.sock
11. php-fpm.sock 파일이 생성될때 소유자와 소유그룹 권한을 수정해주세요.
listen.owner = nobody listen.group = nobody listen.mode = 0666
12. pm.status_path를 아래와 같이 수정해주세요.
(앞에 세미클론(;)으로 주석이 되어있다면 세미클론(;)을 지워주세요.)
pm.status_path = /status
13. www.conf 파일 수정이 완료되셨으면 저장후 밖으로 나와주세요.
:wp
14. php/session/ 디렉터리의 소유자를 변경해주세요.
chown -R nginx:nginx /var/lib/php/session
15. nginx 기본 설정파일을 복사해주세요.
(저는 편의상 nginx.conf로 복제했습니다.)
cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/nginx.conf
16. default.conf 파일을 사용하지 않기 위해서 이름을 default.conf -> default.conf.bak 변경해주세요.
(default.conf 파일을 보관하고 계시다가 문제가 생기면 위에서 한 방법처럼 복제해 사용하시기 바랍니다.)
mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
17. 복제한 설정파일을 열어주세요.
vi /etc/nginx/conf.d/nginx.conf
18. index.php 를 아래와 같이 추가해주세요.
19. 주석을 모두 지운후 fastcgi_pass 와 fastcgi_param 을 수정해주세요.
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
(아래 주석된 fastcgi_pass 는 IP(TCP)방식을 사용할때 사용해야할 설정 줄입니다.
만약 IP(TCP)방식을 이용하신다면 위에 sock이 적혀있는 줄은 작성하지 마세요.
아래 주석된 fastcgi_param 은 기본으로 작성되어있는 설정줄입니다.
기본으로 작성되어있던 설정을 사용할경우 File not found 에러가 발생해서 기본으로 작성된 설정은 주석처리하고
아래에 절대경로로 다시 작성했습니다. 참고해주세요.)
20. 설정줄 수정이 완료되었다면 저장후 나가주세요.
:wq
21. PHP 7.0-FPM 서비스를 시작해주세요.
(PHP-FPM 서비스를 먼쳐 실행하셔야 php-fpm.sock 모듈이 생성되서 Nginx 서비스 시작시에 오류가 발생하지 않습니다.)
service php-fpm start
22. Nginx 설정파일의 문법을 검사합니다.
문제가 없다면 다음으로 넘어가주세요.
nginx -t
23. Nginx 서비스를 실행해주세요.
service nginx start
24. MariaDB 서비스를 실행해주세요.
service mariadb start
25. MariaDB 서비스를 시작했다면 이 명령어를 통해서 초기 설정을 진행해주세요.
26. MariaDB 초기 설정을 위해서 루트 비밀번호를 입력해주세요.
(여기서 말하는 루트 비밀번호는 리눅스 루트 비밀번호와 상관이 없습니다.
MariaDB 초기 루트 비밀번호는 공백입니다. 엔터를 쳐주세요)
27. 루트 비밀번호를 설정하시겠습니까?
Y(Yes)입력후 엔터를 치셔도 되고, 그냥 엔터를 치셔도됩니다.(기본이 Yes)
루트 비밀번호를 입력후 다시한번 입력해주세요.
28. 익명 사용자를 삭제하시겠습니까?
Y(Yes)입력후 엔터를 치셔도 되고, 그냥 엔터를 치셔도됩니다.(기본이 Yes)
29. 원격 루트계정 로그인을 허용하지 않으시겠습니까?
Y(Yes)입력후 엔터를 치셔도 되고, 그냥 엔터를 치셔도됩니다.(기본이 Yes)
30. 테스트 데이터베이스, 액세스 삭제
Y(Yes)입력후 엔터를 치셔도 되고, 그냥 엔터를 치셔도됩니다.(기본이 Yes)
31. 권한 테이블 다시 로드
Y(Yes)입력후 엔터를 치셔도 되고, 그냥 엔터를 치셔도됩니다.(기본이 Yes)
32. 기본적인 설정, 보안설정이 완료되었습니다.
이후 MariaDB 로그인시 설정하신 비밀번호로 로그인해주셔야 합니다.
33. 구동되고있는 Nginx에 브라우저로 접속하기 위해서 방화벽에 http(80포트)서비스를 예외처리 해주세요.
(방화벽을 끄는것은 집 현관문을 항상 열어두겠다는 의미입니다. 그러니 방화벽은 끄지말고 예외처리를 해주세요.
–permanent 는 영구적으로 적용하겠다는 말입니다. 예외처리를 삭제하기 전까지는 서버 재시작시에도 유지됩니다.)
firewall-cmd --permanent --zone=public --add-service=http
34. 방화벽에 예외처리를 하셨다면 적용된 룰을 다시 로딩해줘야 합니다.
firewall-cmd --reload
35. 인터넷 브라우저에 아이피(IP)입력후 접속해보시면 Nginx 테스트 페이지가 출력됩니다.
(만약 출력이 안되는경우 서비스 시작 여부, 방화벽 예외처리 여부, 네트워크 연결상태를 확인하세요)
36. Nginx 테스트 페이지의 이름을 변경해주세요.
mv /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.bak
(삭제하셔도 됩니다.)
rm -r /usr/share/nginx/html/index.html
37. phpinfo() 테스트용 PHP 문서를 작성해주세요.
vi /usr/share/nginx/html/index.php
38. i 를 눌러 입력모드로 변경후 아래 코드를 입력해주세요
<?php phpinfo(); >?
39. 저장후 밖으로 나와주세요.
:wq
40. 인터넷 브라우저에 아이피(IP)입력후 접속해보시면 PHP 테스트 페이지가 출력됩니다.
(테스트를 완료하셨다면 보안을 위해서 꼭 해당 PHP문서를 삭제해주세요.)
rm -r /usr/share/nginx/html/index.php
41. 위에서 Nginx, MariaDB, PHP-FPM 서비스는 시작했지만
서버 재시작시에도 자동으로 시작되도록 해주는 기능은 비활성화 되있는 상태입니다.
systemctl list-unit-files | egrep "^(nginx*|mariadb*|php*)"
42. Nginx 서비스가 시스템 재시작시에도 자동으로 실행되도록 아래 명령어를 입력해주세요.
chkconfig nginx on
43. MariaDB 서비스가 시스템 재시작시에도 자동으로 실행되도록 아래 명령어를 입력해주세요.
chkconfig mariadb on
42. PHP-FPM 서비스가 시스템 재시작시에도 자동으로 실행되도록 아래 명령어를 입력해주세요.
chkconfig php-fpm on
43. Nginx, MariaDB, PHP-FPM 서비스가 서버 재시작시에도 자동으로 시작되도록 설정되었습니다.
systemctl list-unit-files | egrep "^(nginx*|mariadb*|php*)"
여기까지 따라하셨다면 Nginx 설치와 기본적인 설정은 완료가 된상태입니다.
앞으로 여러 설정등을 하는법을 강좌로 적어보도록 하겠습니다.
#
친절하고 자세한 설명 많은 참고 되었습니다~^^
혹시 스크린샷의 GUI는 centos gui인가요? 순간 맥인가 해서ㅎㅎ;;
centos용 gui라면 혹시 gui 이름을 알 수 있을까요?
#
스크린샷에 나와있는 창들은 모두 맥 터미널을 캡쳐한것 입니다. 저도 CentOS에 이런 이쁜 Gui가 있으면 좋겠네요 ㅎㅎ
#
역시 맥이었군용 ㅎㅎ 답변주셔서 감사합니다~좋은주말 되세요~
#
아현이아빠님도 좋은 주말되세요~~^^