2017년 1월 26일 목요일

Amazon Web Service - 7.PHP와 MySQL을 이용한 회원 가입 페이지 구현

PHP와 MySQL을 이용한 회원 가입 페이지 구현

1. DB 생성


phpMyAdmin을 이용한 Database생성 및 권한 부여 참고
1) DB 생성
2) 테이블 생성

3) 컬럼 생성


2. 초기 페이지 생성


/var/www/html/index.php
1
2
3
4
5
6
<html>
    <head/>
    <body>
        <a href="./admin/join.php">JOIN</a>
    </body>
</html> 
cs

3. 회원 가입 페이지 생성


/var/www/html/admin/join.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
    <head/>
    <body>
         <form name="join_form" method="post" action="./join_db.php" >
            ID<input type="text" name="join_id" />
            <br />
            PASSWORD<input type="password" name="join_pw" />
            <br />
            PASSWORD CHECK<input type="password" name="join_pwc" />
            <br />
            E-MAIL<input type="text" name="join_email" />
            <br />
            <input type="submit" value="SIGN IN" />
        </form>
    </body>
</html>
cs

4. DB 저장 구현


'#########' 부분을 본인 계정의 암호로 교체
/var/www/html/admin/join_db.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$mysqli = new mysqli('localhost''root''#########''db');
 
if (mysqli_connect_error()) {
    exit('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
}
 
extract($_POST);
 
$q = "INSERT INTO table ( id, password, email ) VALUES ( '$join_id', '$join_pw', '$join_email' )";
 
$mysqli->query($q);
 
$mysqli->close();
?>
cs

1) MySQL에 연결
2
$mysqli = new mysqli('localhost''root''#########''db');
cs

mysqli(Hostname, Username, Password, DB)
Hostname : Host의 주소
Username : DB 접근 권한이 있는 ID
Password : DB 접근 권한이 있는 ID의 암호
DB : DB명

2) 연결 실패시 메세지 출력 후 실행 중단
4
5
6
if (mysqli_connect_error()) {
    exit('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
}
cs


3) POST 방식으로 전달할 변수 자동 생성
6
extract($_POST);
cs


4) 쿼리 전송
10
11
12
$q = "INSERT INTO table ( id, password, email ) VALUES ( '$join_id', '$join_pw', '$join_email' )";
 
$mysqli->query($q);
cs

INSERT INTO 테이블명 (속성1, 속성2...) VALUES (변수1, 변수2...)
테이블의 각 속성과 매칭되는 순으로 변수 입력

5) MySQL 연결 종료
14
$mysqli->close();
cs

참고 사이트


PHP MySQLi

Amazon Web Service - 5.Database 테이블 생성 및 권한 부여

Database 테이블 생성 및 권한 부여

1. Database 테이블 생성


1) Database 선택
2) 이름 및 컬럼수 입력 후 실행


3) 컬럼 추가시 실행 선택
4) 컬럼 설정이 끝났으면 저장 선택

2. 권한 부여


1) 사용자 항목 선택
2) 권한을 부여할 사용자의 권한 수정 선택

3) 권한을 부여할 Database의 권한 수정 선택

4) 권한을 부여할 테이블 선택

5) 원하는 권한 선택 후 실행

2017년 1월 25일 수요일

Amazon Web Service - 4.phpMyAdmin을 이용한 Database생성 및 권한 부여

phpMyAdmin을 이용한 Database생성 및 권한 부여

1. phpMyAdmin 접속


LinuxLAMP 웹 서버 설치 [5. phpMyAdmin 설치] 참고

2. Database 생성


1) 데이터베이스 항목 선택
2) 데이터 베이스 이름 설정
3) 한글 지원을 위해 데이터 정렬방식은 utf8_general_ci를 선택
4) 만들기 선택

3. User 생성


1) 사용자 항목 선택
2) 사용자 추가 선택


3) 로그인 정보 입력(사용자명, 암호)
4) 원격 접속을 허용하기 위해 호스트 설정을 아무데서나로 설정(%로 표기됨)
5) 전체적 권한에 모두 체크 선택
6) 하단의 실행 선택

4. 생성한 User에 Database 권한 부여


1) 사용자 항목 선택
2) 권한을 부여할 사용자의 권한 수정 선택


3) 권한을 부여할 데이터베이스 선택

4) 데이터베이스 선택시 권한 설정으로 자동 이동
5) 데이터베이스 권한 모두 체크 선택
6) 실행 선택

Amazon Web Service - 3.Instance FileZilla 연결

Instance FileZilla 연결

1. FileZilla 설치


FileZilla 다운로드

2. Key Pair 추가


1) 편집에서 설정 선택

2) SFTP 선택 후 키 파일 추가
키 파일(KeyPair, keypairname.pem) 추가 Linux 가상 머신 시작 [2.Instance 구성] 참고
참고 : FileZilla에서 Key Pair를 사용하려면 PuTTY 를 사용해 '.pem' 파일을 컨버팅해야 사용이 가능하다고 하나 최신 버전에서는 컨버팅 없이 '.pem' 파일 그대로 사용이 가능했다.

3. Instance 연결

1) 파일에서 사이트 관리자 선택

2) Instance 등록
a) 새 사이트 선택
b) 호스트는 Instance의 Public IP값 입력
c) 프로토콜은 "SFTP" 설정
d) 로그온 유형 "키 파일" 선택
e) 사용자에 "ec2-user" 입력
f) 키 파일(KeyPair, keypairname.pem) 추가 Linux 가상 머신 시작 [2.Instance 구성] 참고
g) 연결 선택

Amazon Web Service - 2.LinuxLAMP 웹 서버 설치

LinuxLAMP 웹 서버 설치

1. Amazon Linux에서 LAMP 웹 서버 설치 및 시작

1) 인스턴스 연결
Linux 가상 머신 시작 [3. Instance 연결] 참고

2) 퀵 소프트웨어 업그레이드 실행

[ec2-user ~]$ sudo yum update -y
cs

3) Apache 웹 서버, MySQL, PHP 소프트웨어 패키지 설치

1
[ec2-user ~]$ sudo yum install -y httpd24 php56 mysql55-server php56-mysqlnd
cs

4) Apache 웹 서버 시작

[ec2-user ~]$ sudo service httpd start
cs

5) Apache 웹 서버 시스템 부팅시 자동 시작 설정

[ec2-user ~]$ sudo chkconfig httpd on
cs

6) 웹 서버 테스트
Insance의 Public DNS 주소 또는 Public IP 주소 입력 후 Apache 테스트 페이지 확인

2. 파일 권한 설정


pache httpd가 처리하는 'Apache document root' 디렉터리에 보관된 파일을 처리. Amazon Linux Apache document root는 /var/www/html

1) www그룹을 인스턴스에 추가

[ec2-user ~]$ sudo groupadd www
cs

2) 사용자를 www그룹에 추가

[ec2-user ~]$ sudo usermod --G www ec2-user
cs

3) 재로그인 후 멤버십 확인

[ec2-user ~]$ exit
cs

[ec2-user ~]$ groups
ec2-user wheel www
cs

4) /var/www 및 콘텐츠의 소유권을 www 그룹으로 변경

[ec2-user ~]$ sudo chown -R root:www /var/www
cs

5) /var/www 및 하위 디렉터리의 디렉터리 권한을 변경해 그룹 쓰기 권한을 추가하고 미래 하위 디렉터리에서 그룹 ID 설정

[ec2-user ~]$ sudo chmod 2775 /var/www
cs

[ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
cs

6) /var/www 및 하위 디렉터리의 파일 권한을 계속 변경해서 그룹 쓰기 권한 추가

[ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} \;
cs

3. LAMP 웹 서버 테스트

1) Apache 문서 루트에서 PHP 테스트 파일을 생성

[ec2-user ~]$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
cs

2) PHP 테스트 파일 확인
웹 브라우저에서 파일의 URL입력. Instance의 Public DNS 주소에 슬래시(/)와 파일이름이 추가된 형태
http://my.public.dns.amazonaws.com/phpinfo.php
페이지가 확인되지 않았을 경우 다음 명령어를 이용해 패키지가 모두 설치되었는지 확인

[ec2-user ~]$ sudo yum list installed httpd24 php56 mysql55-server php56-mysqlnd
cs

3) PHP 테스트 파일 삭제
테스트로 생성한 PHP파일의 내용은 보안상의 이유로 공개되면 안되기 때문에 삭제

[ec2-user ~]$ rm /var/www/html/phpinfo.php
cs

4. MySQL 서버 보안 유지

1) MySQL 서버 시작

[ec2-user ~]$ sudo service mysqld start
Initializing MySQL database:  Installing MySQL system tables...
OK
Filling help tables...
OK
 
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
 
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
...
 
Starting mysqld:                                           [  OK  ]
cs

2) mysql_secure_installation 실행

[ec2-user ~]$ sudo mysql_secure_installation
cs

a) 현재 root 암호 입력창. 기본은 없음. Enter로 넘어감.
b) Y를 눌러 암호 설정 모드 진입 후 암호 2회 입력
c) Y를 눌러 익명 사용자 계정 제거
d) Y를 눌러 원격 root 로그인 비활성화(활성화시 N)
c) Y를 눌러서 테스트 데이터베이스 제거
d) Y를 눌러서 권한 테이블을 다시 로드하고 변경사항 저장

3) MySQL 시스템 부팅시 자동 시작 설정

[ec2-user ~]$ sudo chkconfig mysqld on
cs

5. phpMyAdmin 설치

1) EPEL(Extra Packages for Enterprise Linux) 리포지토리를 활성화

[ec2-user ~]$ sudo yum-config-manager --enable epel
cs

2) phpMyAdmin 패키지 설치

[ec2-user ~]$ sudo yum install -y phpMyAdmin
cs

3) 로컬 시스템 액세스 허용
로컬 IP 주소 확인 후 서버 IP 주소를 로컬 IP 주소로 대체

[ec2-user ~]$ sudo sed --'s/127.0.0.1/your_ip_address/g' /etc/httpd/conf.d/phpMyAdmin.conf
cs

4) Apache 웹 서버 재시작

[ec2-user ~]$ sudo service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
cs

5) MySQL 서버 재시작

[ec2-user ~]$ sudo service mysqld restart
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]
cs

6) phpMyAdmin 접속 확인
웹 브라우저에서는 phpMyAdmin 설치의 URL을 입력.
Instace의 Public DNS 주소에 슬래시(/) 및 phpmyadmin이 추가된 형태
http://my.public.dns.amazonaws.com/phpmyadmin

참고 : phpMyAdmin 외부망 접속 수동 설정

1) phpMyAdmin.conf 설정

[ec2-user ~]$ cd /etc/httpd/conf.d
cs

[ec2-user ~]$ sudo vi phpMyAdmin.conf
cs

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>
cs

위의 부분을 아래와 같이 수정
<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8
   Order Allow,Deny
   Allow from All
</Directory>
cs

2) httpd.conf 설정

[ec2-user ~]$ cd /etc/httpd/conf
cs

[ec2-user ~]$ sudo vi httpd.conf
cs

<Directory />
    AllowOverride none
    Require all denied 
</Directory>
cs

위의 부분을 아래와 같이 수정. 보통 102번째 라인에서 확인됨.
<Directory />
    AllowOverride none
    Require all granted 
</Directory>
cs

참고 사이트


Amazon LinuxLAMP 웹 서버 설치 가이드 참고

Amazon Web Service - 1.Linux 가상 머신 시작

Linux 가상 머신 시작

1.Amazon EC2 Instance를 생성


Launch Instance 클릭

2.Instance 구성

1) Amazon 머신 이미지(AMI) 선택 후 Select 클릭
AMI는 소프트웨어 구성(예:운영 체제, 애플리케이션 서비스 및 애플리케이션)이 포함된 템플릿.

2) Instance 유형 선택 후 Next Configure Instance Details 클릭
CPU, 메모리 스토리지 및 네트워킹 용량 설정.

3) Instance 세부 정보 구성

4) 메모리 스토리지 설정

5) Tag 설정
Instance의 별칭 설정

6) 보안 그룹 설정
Create a new security group 선택. 기본으로 SSH가 설정되어 있고 Add Rule을 선택해 HTTP와 HTTPS 추가.

7) Key Pair 생성 혹은 선택 후 Launch Instance 클릭
Key Pair는 재발급이 불가능 하기 때문에 Download Key Pair 클릭으로 다운로드 받아 .ssh라는 하위 디렉터리에 있는 사용자 디렉터리에 저장하도록 가이드
C:\user\{yourusername}\.ssh\{keypairname}.pem

참고: Windows Explorer에서는 폴더 이름이 마침표로 끝나지 않는 한 마침표로 시작하는 폴더 이름을 생성할 수 없음. 이름(.ssh.)을 입력하면 마지막에 있는 마침표가 자동으로 제거됨.

8) View Instance 클릭. 생성된 Instance 확인
Instance의 Public IP 주소 확인. Instace 연결에 필요.

3. Instance 연결

1) Windows용 Git 다운로드
기본 설정으로 설치

2) Key Pair를 저장한 .ssh 디렉터리에서 마우스 오른쪽 클릭 후 Gti Bash Here 선택

3) SSH를 사용하여 인스턴스에 연결

[ec2-user ~]$ ssh -i {.pem 파일의 전체 경로} ec2-user@{인스턴스 IP 주소}
cs


아래와 유사한 메세지 출력
The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com (10.254.142.33)' can't be established. RSA key fingerprint is 1f:51:ae:28:df:63:e9:d8:cf:38:5d:87:2d:7b:b8:ca:9f:f5:b1:6f. Are you sure you want to continue connecting (yes/no)?
cs

Yes 입력 후 Enter

위와 같은 화면이 표시되면 연결 완료

참고 : Instance 종료

1) EC2 콘솔에서 Instance 옆의 박스 선택. 그 후 Action버튼을 클릭하고 Instance State에서 Terminate를 클릭

2) 종료 팝업에서 Yes, Terminate 선택


참고 사이트


Linux 가상 머신 시작 Amazon Web Service 가이드