Nuke Olaf - Log Store
AWS - EC2 인스턴스위에 LAMP 설치 본문
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/install-LAMP.html
Amazon Linux AMI 를 사용하여 LAMP 웹 서버 설치하기
1. 인스턴스를 시작할 때, SSH(포트22), HTTP(포트80), HTTPS(포트 443) 연결을 허용할 수 있도록 보안그룹을 구성해야한다.
2. 본격적인 세팅에 앞서 패키지를 최신버전으로 업그레이드 한다.
$ sudo apt update
$ sudo apt upgrade
3. 루트로 로그인하고 비밀번호를 설정한다
현재 계정확인
$ whoami
루트 로그인
$ sudo su
root 계정과 기본계정인 ubuntu 계정의 비밀번호를 설정해준다
$ passwd root
$ passwd ubuntu
4. Apache 웹 서버 설치 및 환경설정
(1) 아파치 웹 서버를 설치한다 (Apache 2.4.29 버전이 설치된다)
$ apt-get install apache2
*아파치 버전확인 명령어 (Ubuntu 기준)
$ apache2 -v
(2) 공인 IP (또는 공인 DNS 주소) 로 접속하여 웹 서버가 정상적으로 구동하는지 확인한다
이때, [네트워크 및 보안] - [보안 그룹] - [인바운드] - [편집] - [규칙추가] - [HTTP] 의 허용 아이피가 0.0.0.0/0 으로 설정되어 있어야 한다.
(/var/www/html 에 아직 콘텐츠가 없어서 Apache 의 테스트 페이지가 표시된다.)
(3) 아파치의 설치경로는 /etc/apache2 이다.
해당 경로로 들어가보면 아파치의 설정파일인 apache2.conf 를 확인할 수 있다.
apache2.conf 파일을 보면 document root 가 /var/www/ 로 되어있는것을 확인할 수 있다.
(4) 아파치 웹서버의 상태를 확인하는 명령어
$ service apache2 status
(5) root 계정이 아닌 기본계정 'ubuntu' 에서 Apache document root 디렉토리에 보관된 파일을 처리하기 위해서는 해당 디렉토리의 소유권 권한을 변경해야 한다.
Apahce document root 기본 루트는 /var/www/html 이며, 기본적으로 소유권이 root 에 있다.
나는 apache 라는 그룹을 만들고, ubuntu 사용자를 apache 그룹에 추가할 것이다.
그다음, /var/www 및 그 콘텐츠의 그룹 소유권을 apache 그룹으로 변경할 것이다.
그룹 생성 명령어
$ groupadd apache
사용자에게 그룹 추가하기
$ usermod -a -G apache ubuntu
/etc/group 을 cat 명령어로 확인하면, 아래와 같이 apache 그룹에 ubuntu 사용자가 추가된것을 확인할 수 있다.
exit 명령어로 로그아웃한 다음, 터미널 창을 닫았다 다시 열어준다.
(6) /var/www 및 그 콘텐츠의 그룹 소유권을 apache 그룹으로 변경해준다
해당 폴더(디렉토리)의 그룹 소유권을 변경하는 명령어
-R 옵션을 사용하면 디렉토리와 그 안에 들어있는 모든 파일의 사용자를 변경한다
$ chown -R ubuntu:apache /var/www
(7) ubuntu 유저와 apache 그룹의 멤버가 Apache document root 에서 파일 추가, 삭제, 편집을 할 수 있게한다.
먼저, /var/www 와 그 하위 디렉토리의 권한을 변경한다.
$ chmod 2775 /var/www
find 는 찾을때 사용하는 명령어인데, 아래는 /var/www 디렉토리에서 'd' 타입인 파일에 chmod 2775 라는 지정된 명령을 실행하라(exec)는 뜻이다. 2775 처럼 4자리로 표현되는 경우 특수권한이 적용되어 그렇다. Set-GID 인 2를 사용한다
https://jhnyang.tistory.com/144
$ find /var/www -type d -exec chmod 2775 {} \;
그 다음으로, /var/www 및 그 하위 디렉토리의 파일 권한을 반복하여 변경한다
$ find /var/www -type f -exec chmod 0664 {} \;
5. MySQL 서버 설치 및 환경설정
(1) MySQL 을 설치한다 (MySQL 5.7.29 버전이 자동 설치된다)
$ apt-get install mysql-server
service mysql status 를 통해 현재 실행중인지 확인한다.
(2) mysql_secure_installation 실행을 통해 데이터베이스 서버 보안을 설정한다
$ mysql_secure_installation
참고 사이트 : https://webnautes.tistory.com/1185
(3) MySQL 에 접속하여 root 계정에 패스워드를 추가한다.
* sudo mysql (root 계정에서는 그냥 mysql) 명령어만으로도 MYSQL 에 접속할 수 있다
$ mysql -u root -p
처음에는 위의 명령어로 root 계정에 패스워드 없이 접속이 될 것이다.
ALTER USER 'root'@'localhost' IDENTIFIED BY '비밀번호'; 명령어로 root 계정에 패스워드를 추가한다
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '비밀번호'
(4) mysql 을 사용할 계정을 만들어 준다.
웹 서버와 연결해 DB 를 사용할 때는 root 계정을 사용하는 것보다 계정을 만들고 권한을 부여해 사용하는 것이 좋다.
아래는 olaf 라는 이름의 계정을 만드는 명령어이다. olaf 계정의 Host 는 localhost 이다.
mysql 의 user 테이블에 추가나 변경사항이 있을 경우 flush privileges 쿼리를 실행해줘야 한다.
(쿼리문은 대문자로 작성하는 것이 관례이다)
mysql> CREATE USER 'olaf'@'localhost' IDENTIFIED BY '비밀번호';
mysql> FLUSH PRIVILEGES;
SELECT User, Host FROM mysql.user; 명령어로 user 정보를 확인할 수 있다.
(5) olaf 계정이 사용할 Database 를 만들고, 해당 DB 를 olaf 계정이 사용할 수 있도록 권한을 부여한다.
먼저, nukeolaf 라는 Database 를 생성해주고,
mysql> CREATE DATABASE nukeolaf;
olaf@localhost 계정에게 nukeolaf DB 권한을 부여하고, flush privileges 쿼리를 실행해준다
mysql> GRANT ALL PRIVILEGES ON nukeolaf.* to olaf@localhost;
mysql> FLUSH PRIVILEGES;
olaf 계정에 nukeolaf DB 권한이 잘 부여되었는 지 확인 해보자
SHOW GRANTS FOR '계정이름'@'호스트' 로 해당 계정에서 어떤 권한을 가지고 있는 지 확인할 수 있다.
GRANT USAGE ON *.* TO 에서 *.* 는 아무 권한이 없다는 의미이다.
즉, olaf 계정은 nukeolaf DB 만 권한을 가지고 있고, mysql 의 admin 이나 system 에 접근할 수 있는 권한은 없다는것을 의미한다. 계정 뒤에 붙은 @localhost 는 해당 계정이 localhost 즉, mysql 이 설치된 pc 에서만 접속할 수 있다는 의미이다. 만약 다른 서버(remote)에서 mysql 에 접속하고 싶다면 접속하려는 서버의 IP 로 계정을 만들어주어야 한다.
예시) 192.168.0.10 에서 접속하고 싶은 경우 =>
mysql> CREATE USER 'root'@'192.168.0.10' IDENTIFIED BY '비밀번호';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.10' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
특정 PC(192.168.0.10) 가 아닌 어디서든 접속하려는 경우 IP 대신 % 를 넣어주면 된다. => 'root'@'%'
6. PHP 웹 서버 설치 및 Apache 와 연동
(1) PHP 를 설치한다 (php 7.2.24 버전이 자동설치된다)
$ apt-get install php
(2) Aapche 와 PHP 가 연동되는지 테스트
vi 문서편집기로 Apache 의 문서 루트에 PHP 파일을 생성한다.
$ vi /var/www/html/index.php
index.php 의 내용은 아래와 같다
<?php phpinfo(); ?>
그 다음 http://공인IP주소/index.php URL 을 입력하여 PHP 정보 페이지가 표시되는지 확인한다.
참고 사이트>>>
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/install-LAMP.html
https://ndb796.tistory.com/314
'Language > [PHP]' 카테고리의 다른 글
무료 도메인 발급받기 - coo.kr (0) | 2020.03.01 |
---|---|
AWS - EC2 와 PHPStorm 연결하기 (0) | 2020.02.25 |
AWS - EC2 인스턴스 생성하기 (0) | 2020.02.24 |
쿠키와 세션이란? (0) | 2020.02.17 |
JavaScript - 체크박스 하나만 선택할 수 있게 하기 (0) | 2020.02.12 |