Portfolio created with wordpress

프로젝트 정의 및 개요

이 프로젝트는 포트폴리오를 체계적으로 관리하고, 효과적으로 포트폴리오 및 개발자의 이력 및 기술 소개 등의 것들을 컨텐츠 이용자에게 효과적으로 시각 프레젠테이션하기 위한 반응형 웹 사이트로 기획되었습니다.

프로젝트 요구 사항

  • 프로젝트는 컨텐츠 제공자의 기술, 이력, 포트폴리오 등의 정보를 효과적으로 컨텐츠 이용자에게 전달할 수 있어야한다.
  • 프로젝트는 컨텐츠 제공자가 간편하게 컨텐츠의 작성 및 수정을 할 수 있어야 한다.
      1. 포스트 에디터에서 Font Awesome를 포스트 내에 삽입하는 기능이 있어야한다.
      2. 포스트 에디터에서 내용 숨기기/펼치기 기능이 있어야한다.
  • 프로젝트는 컨텐츠 제공자가 간편하게 프로젝트의 디자인 수정을 할 수 있어야한다.
  • 프로젝트는 컨텐츠 제공자가 간편하게 프로젝트의 기능의 추가 및 기능의 수정을 할 수 있어야 한다.
  • 프로젝트는 기본적으로 3가지의 핵심 페이지로 구성하며, 각각 홈, 포트폴리오, 관리자, 그 외 프로젝트 관리자를 제외한 공통적으로 사용되는 Top Navigation과 Footer 섹션이 있어야한다.
  1. 홈 페이지
    1. 홈 페이지는 컨텐츠들을 반응형 웹 페이지로 시각화하여 보여줘야한다.
    2. 홈 페이지에는 다음과 같은 섹션으로 구성해야한다.
      1. 컨텐츠 이용자가 가장 처음 주목하게 되는 웹 페이지의 성격을 보여주는 Header 섹션
        1. Header 섹션에는 컨텐츠 이용자의 이목을 끌 수 있는 문구, 사진 등을 활용해야한다.
        2. Header 섹션에는 About 섹션으로 Link되는 주 버튼과 Contact 섹션으로 Link되는 보조 Button Form을 넣어야한다.
      2. 컨텐츠 제공자의 사용 중인 기능(개발자 노트, 소스 관리 등)에 대한 것을 나타내는 AVAILABLE FEATURES 섹션
        1. Avaliable features 섹션에는 Icon 형식으로 기능들에 접근할 수있는 Link를 제공해야한다.
      3. 컨텐츠 제공자의 이력 및 향후 계획 등을 나타내는 About 섹션
        1. About 섹션에는 각 요소를 text 형식으로 제공해야한다.
      4. 컨텐츠 제공자가 컨텐츠 이용자에게 제공할 수 있는 것들에 대한 것들을 모아둔 Services섹션
        1. Services 섹션에서는 하나의 Icon 과 text 형식의 페이지를 제공해야한다.
      5. 컨텐츠 제공자의 Portfolio를 한 눈에 볼 수 있는 Portfolio 섹션
        1. Portfolio 섹션에서는 Portfolio 페이지의 thumbnail과 제목, 간략한 설명을 text 형식으로 제공해야한다.
      6. 컨텐츠 이용자가 컨텐츠 제공자에게 연락할 수 있는 Contact 섹션
        1. 이름, 이메일, 제목, 내용 양식의 메일 폼 제공
          1. recapcha 를 활용한 스팸 방지 기능
        2. 컨텐츠 제공자에 대한 연락처 정보 기제
  2. 포트폴리오 페이지
    1. 포트폴리오 페이지는 다음과 같은 섹션으로 구성해야한다.
      1. 포트폴리오를 보여주는 post 섹션
      2. 검색 기능, 글 목록, 간단한 연락처 정보를 담은 sidebar 섹션
      3. 포트폴리오에 댓글을 달 수 있는 comment 섹션
  3. 관리자
    1. WordPress의 기본 제공 관리자 페이지 사용
  4. Top Navigation
    1. Top navigation은 모바일에서도 메뉴 형식으로 작동이 가능해야한다.
    2. Top navigation은 홈 페이지의 각각의 섹션으로 향하는 링크를 형성해야한다.
      1. Home – 홈 페이지의 최상단으로 Link
      2. Avaliable features – 홈 페이지의 Avaliable features 섹션으로 Link
      3. Services – 홈 페이지의 Services 섹션으로 Link
      4. About – 홈 페이지의 About 섹션으로 Link
      5. Portfolio – 홈 페이지의 Portfolio 섹션으로 Link
      6. Contact – 홈 페이지의 Contact 섹션으로 Link
  5. Footer
    1. 뉴스레터 구독 기능
    2. 컨텐츠 제공자의 소셜 네트워크 서비스 Link 모음

프로젝트 개발 환경

프로젝트를 구축하는 데에는 다음과 같은 것들이 사용되었습니다.

  • Amazon EC2 Linux Instance
  • Apache
  • MySQL
  • PHP5
  • WordPress
    • WordPress 부가 기능
      • Theme
        • Onepress – 반응형 원 페이지를 위한 WordPress Theme
      • Plugin
        • Contact Form 7 – contact form 기능을 위한 plugin
        • Updraftplus – WordPress backup 기능을 제공하는 유용한 plugin
        • WP show more – Post 내용 접기 및 펼치기 기능을 제공하는 plugin
  • Git

프로젝트 개발 환경 구축

1. Amazon EC2 Instance 시작하기

  • AWS Management 에 접속 ( https://aws.amazon.com/ko/console/ ) 후 로그인합니다.
  • Amazone EC2 서비스 선택합니다.
  • 인스턴스 시작 선택합니다.
  • 프리티어 사용자이므로 Amazon Linux AMI 2017.09.1 (HVM), SSD Volume Type – ami-1196317f을 선택하였습니다.
  • t2.micro를 선택한 후 다음 : 인스턴스 세부 정보 구성을 선택합니다.
  • 인스턴스 세부 정보 구성
  • 인스턴스 세부 정보 구성을 설정 후스토리지 추가 선택
  • 스토리지 추가 후 태그 추가 선택
  • 태그는 별도로 프로젝트에 사용한 내용이 없으므로 공란입니다. 다음 보안그룹 구성 선택
  • 보안 그룹 구성은 다음과 같이 인바운드 설정하였습니다.
    • HTTP 80
    • HTTPS 443
    • SSH 22
    • FTP 20~21, 1024~1048
    • MySQL 3306
  • 인스턴스 시작 검토에서 시작을 선택합니다.
  • Amazone 인스턴스에 접근하기 위한 Key에 대한 설정 마법사가 나옵니다.
  • 인스턴스를 시작하기 전에 인스턴스에 접근할 수 있는 Key를 생성해야합니다. 적당한 이름의 키 페어 이름을 입력한 후 키페어를 다운로드한 후 인스턴스를 시작합니다.
  • EC2 대시보드에서 인스턴스(test)가 시작되었음을 알 수 있습니다.

1. Amazon EC2 Instance 시작하기 접기

2. Amazon EC2 Linux LAMP 웹 서버 설치

  • Amazone EC2 인스턴스에 연결합니다.
  • sudo yum update -y 명령어를 통해서 모든 소프트웨어가 최신 버전인지 확인 후 업데이트합니다.
  • sudo yum install -y httpd24 php70 mysql56-server php70-mysqlnd 명령어를 사용해서 Apache, php, mysql 소프트웨어를 설치합니다.
  • sudo service httpd start 명령어로 Apache 웹 서버를 시작합니다.
  • sudo chkconfig httpd on 명령어로 인스턴스가 시작할 떄마다 Apache가 Service되도록 설정합니다.
    • ※Linux는 명령어가 성공적으로 실행됬을 시 아무런 메세지도 표시하지 않습니다.
    • 다음 명령어를 통해 httpd가 실행되고 있는 지 확인할 수 있습니다.
  • 웹 서버가 정상적으로 작동되는 지 Amazone 퍼블릭 DNS 혹은 퍼블릭 IP로 확인합니다. 다음과 같은 페이지가 나타나면 정상적으로 작동하는 것입니다.
    • Apache httpd는 ‘Acache document root’라는 디렉터리에 보관된 파일을 처리합니다. Amazon Linux Apache 문서 루트는 /var/www/html이며, 기본적으로 root에서 소유합니다.
    • Amazone EC2의 기본 유저는 ec2-user이며 ec2-user 계정이 이 디렉터리의 파일을 다룰 수 있도록 하려면, 디렉터리의 소유권과 권한을 변경해야 합니다. 이 작업을 수행하는 방법에는 여러 가지가 있습니다. 저는 ec2-user 사용자를 apache 그룹에 추가하여 apache 그룹에 /var/www 디렉터리의 소유권을 부여하고 쓰기 권한을 할당하는 방법을 사용했습니다.
  • sudo usermod -a -G apache ec2-user 명령어로 사용자를 apache 그룹에 추가합니다.
  • 세션에서 로그아웃한 후 다시 접속한 후 apache 그룹에 대한 멤버쉽을 확인합니다.
  • sudo chown -R ec2-user:apache /var/www 명령어로 /var/www 및 그 콘텐츠의 그룹 소유권을 apache 그룹으로 변경합니다.
  • 그룹 쓰기 권한을 추가하여 나중에 하위 디렉터리에 대한 그룹 ID를 설정하려면 /var/www와 그 하위 디렉터리의 디렉터리 권한을 변경합니다.
    • sudo chmod 2775 /var/www
    • find /var/www -type d -exec sudo chmod 2775 {} \;
  • 그룹 쓰기 권한을 추가하려면 /var/www 및 그 하위 디렉터리의 파일 권한을 반복하여 변경합니다.
    • find /var/www -type f -exec sudo chmod 0664 {} \;

2.Amazon EC2 Linux LAMP 웹 서버 설치 접기

3. Amazon EC2 LAMP 서버 테스트

  • 서버가 설치되어있고 실행되고 있으며 파일 권한이 올바르게 설정된 경우라면, 사용자는 ec2-user 계정을 통해서 /var/www/html 디렉터리에 PHP 파일을 생성하고 PHP 파일을 실행시킬 수 있습니다.
  • echo “<?php phpinfo(); ?>” > /var/www/html/phpinfo.php 명령어를 통해서 테스트용 php 파일을 생성합니다.
  • 웹 브라우저에서는 방금 생성한 파일의 URL을 입력합니다.  예 : http://ec2-52-78-222-94.ap-northeast-2.compute.amazonaws.com/phpinfo.php
  • 다음과 같은 php 정보 페이지가 표시되어야합니다.
  • rm /var/www/html/phpinfo.php 명령어로 phpinfo.php 파일을 삭제합니다. 이 파일은 보안상의 이유로 공개되어서는 안됩니다.

3. Amazon EC2 LAMP 서버 테스트 접기

4. MySQL 서버 보안 유지

  • MySQL 서버의 기본 설치는 테스트 및 개발 기능에 유용한 여러 기능을 포함하고 있지만, 이 기능들은 프로덕션 서버에서는 비활성화되거나 제거되어야 합니다. [mysql_secure_installation] 명령을 통해 루트 암호를 설정하고 설치 패키지에서 보안성이 낮은 기능을 제거하는 과정을 수행할 수 있습니다. MySQL 서버를 사용할 계획이 없더라도 이 절차를 수행하는 것이 좋습니다.
  • sudo service mysqld start 명령어로 MySQL 서버를 시작합니다.
  • sudo mysql_secure_installation을 실행합니다.
    • 암호를 입력하라는 메시지가 표시되면 루트 계정의 암호를 입력합니다. 현재 루트 암호를 입력합니다. 기본적으로 root 계정에는 암호가 없습니다. Enter를 누릅니다.
    • 암호를 설정하려면 Y를 누른 후 안전한 암호를 두 번 입력합니다. 안전한 암호 생성에 대한 자세한 내용은 http://www.pctools.com/guides/password/ 단원을 참조하십시오. 이 암호를 안전한 장소에 보관하시기 바랍니다. 참고 MySQL에 대한 루트 암호를 설정하는 것은 데이터베이스를 보호하는 가장 기초적인 방법일 뿐입니다. 데이터베이스 기반 애플리케이션을 빌드하거나 설치할 때, 일반적으로 그 애플리케이션의 데이터베이스 서비스 사용자를 만들고 데이터베이스 관리 이외의 어떤 목적으로도 루트 계정을 사용하지 못하게 합니다.

      • Y를 입력하여 익명 사용자 계정을 제거합니다.
      • Y를 입력하여 원격 루트 로그인을 비활성화합니다.
      • Y를 입력하여 테스트 데이터베이스를 제거합니다.
      • Y를 입력하여 권한 테이블을 다시 로드하고 변경 내용을 저장합니다.
    • (선택 사항) 지금 바로 사용할 계획이 아니라면  sudo service mysqld stop 명령어로 MySQL 서버를 중지합니다. 필요할 때 다시 시작할 수 있습니다.
    • (선택 사항) 부팅 시 MySQL 서버가 시작되도록 하려면 sudo chkconfig mysqld on 명령을 입력합니다.

4. MySQL 서버 보안 유지 접기

5. phpMyAdmin 설치

phpMyAdmin은 EC2 인스턴스의 MySQL 데이터베이스를 보고 편집하는 데 사용할 수 있는 웹 기반 데이터베이스 관리 도구입니다. Amazon Linux 인스턴스에서 phpMyAdmin을 설치 및 구성하려면 다음 단계를 따르십시오.

중요

Apache에서 SSL/TLS를 활성화하지 않은 경우 phpMyAdmin을 사용하여 LAMP 서버에 액세스하지 않는 것이 좋습니다. 이 상태에서 액세스하면 데이터베이스 관리자 암호와 기타 데이터가 인터넷을 통해 안전하지 못한 상태로 전송됩니다. 개발자의 보안 권장 사항을 보려면 phpMyAdmin 설치 보안을 참조하십시오. EC2 인스턴스에 안전한 웹 서버를 구성하는 방법은 자습서: SSL/TLS를 사용하도록 Amazon Linux에서 Apache 웹 서버 구성을 참조하십시오.

참고

Amazon Linux 패키지 관리 시스템은 현재 PHP 7 환경에서 phpMyAdmin의 자동 설치를 지원하지 않습니다. 이 자습서에서는 phpMyAdmin을 직접 설치하는 방법을 설명합니다.

  1. SSH를 사용하여 EC2 인스턴스에 로그인합니다.
  2. 필요한 종속 항목을 설치합니다.
    Copy
    [ec2-user ~]$ 

    sudo yum install php70-mbstring.x86_64 php70-zip.x86_64 -y

  3. Apache를 다시 시작합니다.
    Copy
    [ec2-user ~]$ 

    sudo service httpd restart

    
    Stopping httpd:                                            [  OK  ]
    Starting httpd:                                            [  OK  ]
  4. Apache 문서 루트(/var/www/html)로 이동합니다.
    Copy
    [ec2-user ~]$ 

    cd /var/www/html

     [ec2-user html]$ 
  5. https://www.phpmyadmin.net/downloads에서 phpMyAdmin 최신 릴리스의 소스 패키지를 선택합니다. 인스턴스로 파일을 직접 다운로드하려면 다음 예제와 같이 링크를 복사한 후 wget 명령에 붙여 넣습니다.
    Copy
    [ec2-user html]$ 

    wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz

  6. 패키지를 확장하고 결과 디렉터리의 이름을 관리하기 쉬운 이름으로 변경합니다.
    Copy
    [ec2-user html]$ 

    tar -xvzf phpMyAdmin-latest-all-languages.tar.gz

     [ec2-user html]$ 

    mv phpMyAdmin-4.7.5-all-languages phpMyAdmin

  7. (선택 사항) MySQL 서버가 실행 중이지 않으면 지금 시작합니다.
    Copy
    [ec2-user ~]$ 

    sudo service mysqld start

    
    Starting mysqld:                                           [  OK  ]
  8. 웹 브라우저에서 phpMyAdmin 설치의 URL을 입력합니다. 아래의 예와 같이 이 URL은 인스턴스의 퍼블릭 DNS 주소(또는 퍼블릭 IP 주소)에 슬래시(/)와 설치 디렉터리의 이름이 추가된 형태입니다. 예:
    http://

    my.public.dns.amazonaws.com

    /phpMyAdmin

    사용자는 phpMyAdmin 로그인 페이지를 볼 수 있어야 합니다:

5. phpMyAdmin 설치 접기

6. Amazon EC2 LAMP에 WordPress 설치하기

  • WordPress 설치 패키지의 다운로드 및 압축해제 방법

    1. wget 명령을 사용해서 최신 WordPress 설치 패키지를 다운로드 합니다. 다음 명령을 사용할 경우 언제나 최신 릴리스를 다운로드합니다.
      Copy
      [ec2-user ~]$ wget https://wordpress.org/latest.tar.gz
      --2013-08-09 17:19:01--  https://wordpress.org/latest.tar.gz
      Resolving wordpress.org (wordpress.org)... 66.155.40.249, 66.155.40.250
      Connecting to wordpress.org (wordpress.org)|66.155.40.249|:443... connected.
      HTTP request sent, awaiting response... 200 OK
      Length: 4028740 (3.8M) [application/x-gzip]
      Saving to: latest.tar.gz
      
      100%[======================================>] 4,028,740   20.1MB/s   in 0.2s
      
      2013-08-09 17:19:02 (20.1 MB/s) - latest.tar.gz saved [4028740/4028740]
    2. 설치 패키지의 압축 및 아카이빙을 해제합니다. 설치 폴더는 wordpress라는 폴더로 압축 해제됩니다.
      Copy
      [ec2-user ~]$ tar -xzf latest.tar.gz [ec2-user ~]$ ls
      latest.tar.gz  wordpress

     

    WordPress 설치에 대한 MySQL 사용자 및 데이터베이스 생성 방법

    WordPress 설치에는 블로그 포스트 항목, 사용자 의견 등 정보를 데이터베이스에 저장할 수 있도록 구성하는 작업을 필요로 합니다. 다음 프로시저를 통해 블로그에 대한 데이터베이스와 데이터베이스에 대한 정보의 읽기/저장 권한을 부여받게 되는 사용자를 생성할 수 있습니다.

    1. MySQL 서버를 시작합니다.
      Copy
      [ec2-user ~]$ sudo service mysqld start
    2. MySQL 서버를 root 사용자로 로그인합니다. 요청받은 경우 MySQL root 암호를 입력합니다. 이 암호는 사용자의 root 시스템 암호와 다를 수 있으며, MySQL 서버를 보안 설정하지 않은 경우 암호가 비어 있을 수도 있습니다.

      중요

      MySQL 서버를 보안 설정하지 않은 경우, 이를 반드시 수행하시기 바랍니다. 자세한 내용은 MySQL 서버 보안 유지 단원을 참조하십시오.

      Copy
      [ec2-user ~]$ mysql -u root -p
      Enter password:
    3. MySQL 데이터베이스에 대한 사용자 및 암호를 생성합니다. WordPress 설치는 MySQL 데이터베이스를 통신하기 위해 상기 값을 사용합니다. 고유한 사용자 이름과 암호로 해당 부분을 대체하여 다음 명령을 입력합니다.
      Copy
      mysql> 

      CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password';

      
      Query OK, 0 rows affected (0.00 sec)

      사용자에 대해 보안이 강력한 암호를 생성하시기 바랍니다. 작은따옴표(‘)는 각 명령을 구별하는 구분자로 기능하기 때문에, 암호에는 사용하지 마십시오. 안전한 암호 생성에 대한 자세한 내용은 http://www.pctools.com/guides/password/단원을 참조하십시오. 기존 암호를 재사용하지 마십시오. 새로 설정한 암호는 안전한 장소에 보관해 두십시오.

    4. 데이터베이스를 생성합니다. 데이터베이스에 이를 설명할 수 있는 유의미한 이름을 붙입니다(예: wordpress-db.).

      참고

      아래 명령에서 데이터베이스 이름을 앞 뒤로 묶는 기호(`)를 백틱(backtick)이라고 합니다. 백틱(`) 키는 일반적으로 표준 키보드에서 Tab 키 위에 있습니다. 백틱이 항상 필요하지는 않지만, 이를 통해 데이터베이스 이름에 하이픈(-) 등 허용되지 않는 문자를 사용할 수 있습니다.

      Copy
      mysql> 

      CREATE DATABASE `wordpress-db`;

      
      Query OK, 1 row affected (0.01 sec)
    5. 데이터베이스에 대한 전체 권한을 이전에 생성한 WordPress 사용자에게 부여합니다.
      Copy
      mysql> 

      GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";

      
      Query OK, 0 rows affected (0.00 sec)
    6. MySQL 권한을 새로고침(flush)해서 모든 변경사항이 적용되도록 합니다.
      Copy
      mysql> 

      FLUSH PRIVILEGES;

      
      Query OK, 0 rows affected (0.01 sec)
    7. mysql 클라이언트를 종료합니다.
      Copy
      mysql> 

      exit

      
      Bye

    wp-config.php 파일 생성 및 편집 방법

    WordPress 설치 폴더는 wp-config-sample.php라는 샘플 구성 파일을 포함하고 있습니다. 본 절차에서는 이 파일을 복사하고 특정 구성에 맞도록 편집합니다.

    1. wp-config-sample.php 파일을 wp-config.php라는 파일에 복사합니다. 이를 통해 새 구성 파일을 생성하고 원본 샘플 파일을 이전 상태 그대로 백업으로 보존할 수 있습니다.
      Copy
      [ec2-user ~]$ cd wordpress/ [ec2-user wordpress]$ cp wp-config-sample.php wp-config.php
    2. wp-config.php 파일을 원하는 텍스트 편집기(nanovim 등)로 편집하고 설치에 대한 값을 입력합니다. 원하는 텍스트 편집기가 없는 경우, 초보자는 nano를 사용하는 것이 더욱 편리합니다.
      Copy
      [ec2-user wordpress]$ 

      nano wp-config.php

      1. DB_NAME을(를) 정의하는 줄을 찾고 database_name_here을(를) 단계 4의 WordPress 설치에 대한 MySQL 사용자 및 데이터베이스 생성 방법에서 생성한 데이터베이스 이름으로 변경합니다.
        define('DB_NAME', '

        wordpress-db

        ');
      2. DB_USER을(를) 정의하는 줄을 찾고 username_here을(를) 단계 3의 WordPress 설치에 대한 MySQL 사용자 및 데이터베이스 생성 방법에서 생성한 데이터베이스 사용자로 변경합니다.
        define('DB_USER', '

        wordpress-user

        ');
      3. DB_PASSWORD을(를) 정의하는 줄을 찾고 password_here을(를) 단계 3의 WordPress 설치에 대한 MySQL 사용자 및 데이터베이스 생성 방법에서 생성한 보안성이 강력한 암호로 변경합니다.
        define('DB_PASSWORD', '

        your_strong_password

        ');
      4. Authentication Unique Keys and Salts라는 섹션을 검색합니다. 이 KEY 및 SALT 값은 WordPress 사용자가 로컬 컴퓨터에 저장하는 브라우저 쿠키에 암호 계층을 제공합니다. 기본적으로 긴 무작위 값을 추가해서 사이트의 보안성을 강화할 수 있습니다. https://api.wordpress.org/secret-key/1.1/salt/을 방문해서 키 값의 세트를 무작위로 생성하고 이를 wp-config.php 파일로 복사해서 붙여넣기할 수 있습니다. PuTTY 터미널로 텍스트를 붙여넣기 하기 위해, PuTTY 터미널 내부에서 텍스트를 붙여넣기하려는 위치에 커서를 놓고 마우스를 오른쪽 클릭합니다.보안 키에 대한 자세한 내용은 http://codex.wordpress.org/Editing_wp-config.php#Security_Keys단원을 참조하시기 바랍니다.

        참고

        아래 값은 예시 목적만을 위한 것입니다. 설치할 경우 이 값을 사용하지는 마십시오.

        define('AUTH_KEY',         '

        #U$$+[RXN8:b^-L 0(WU_+ c+WFkI~c]o]-bHw+)/Aj[wTwSiZ<Qb[mghEXcRh-

        '); define('SECURE_AUTH_KEY', '

        Zsz._P=l/|y.Lq)XjlkwS1y5NJ76E6EJ.AV0pCKZZB,*~*r ?6OP$eJT@;+(ndLg

        '); define('LOGGED_IN_KEY', '

        ju}qwre3V*+8f_zOWf?{LlGsQ]Ye@2Jh^,8x>)Y |;(^[Iw]Pi+LG#A4R?7N`YB3

        '); define('NONCE_KEY', '

        P(g62HeZxEes|LnI^i=H,[XwK9I&[2s|:?0N}VJM%?;v2v]v+;+^9eXUahg@::Cj

        '); define('AUTH_SALT', '

        C$DpB4Hj[JK:?{ql`sRVa:{:7yShy(9A@5wg+`JJVb1fk%_-Bx*M4(qc[Qg%JT!h

        '); define('SECURE_AUTH_SALT', '

        d!uRu#}+q#{f$Z?Z9uFPG.${+S{n~1M&%@~gL>U>NV<zpD-@2-Es7Q1O-bp28EKv

        '); define('LOGGED_IN_SALT', '

        ;j{00P*owZf)kVD+FVLn-~ >.|Y%Ug4#I^*LVd9QeZ^&XmK|e(76miC+&W&+^0P/

        '); define('NONCE_SALT', '

        -97r*V/cgxLmp?Zy4zUU4r99QQ_rGs2LTd%P;|_e1tS)8_B/,.6[=UK<J_y9?JWG

        ');
      5. 파일을 저장하고 텍스트 편집기를 종료합니다.

    WordPress 파일을 Apache 문서 루트 아래에 설치하려면

    1. 설치 폴더 압축을 해제하고 MySQL 데이터베이스 및 맞춤형 WordPress 구성 파일을 사용자 설정했으므로, 이제 설치 파일을 웹 서버 문서 루트에 복사하여 설치를 완료하는 설치 스크립트를 실행할 수 있습니다. 이 파일의 위치는 WordPress 블로그를 웹 서버의 실제 루트(예: my.public.dns.amazonaws.com)에서 사용하도록 할지 아니면 루트 아래의 하위 디렉터리나 폴더(예: my.public.dns.amazonaws.com/blog)에서 사용하도록 할지에 따라 다릅니다.
    2. WordPress를 문서 루트에서 실행하려면 WordPress 설치 디렉터리의 파일(디렉터리 자체는 제외)을 다음과 같이 복사합니다.
      Copy
      [ec2-user ~]$ 

      cp -r wordpress/* /var/www/html/

    3. WordPress를 문서 루트의 대체 디렉터리에서 실행하려면 먼저 해당 디렉터리를 생성한 후 파일을 그 디렉터리로 복사합니다. 이 예에서는 WordPress가 blog 디렉터리에서 실행됩니다.
      Copy
      [ec2-user ~]$ 

      mkdir /var/www/html/blog

       [ec2-user ~]$ 

      cp -r wordpress/* /var/www/html/blog/

    중요

    다음 프로시저로 즉시 이동하지 않는 경우는 보안상 문제가 발생할 수 있으므로 Apache 웹 서버(httpd)를 중단하십시오. WordPress 설치를 Apache 문서 루트 아래로 이동한 후에는 WordPress 설치 스크립트가 보호되지 않는 상태이기 때문에 Apache 웹 서버가 실행 중일 때 블로그에 침입자가 액세스할 가능성이 있습니다. Apache 웹 서버를 중단시키려면 sudo service httpd stop 명령을 입력합니다. 다음 절차로 즉시 이동하는 경우는 Apache 웹 서버를 중단시킬 필요가 없습니다.

    WordPress에서 퍼머링크(permalinks)를 사용하는 방법

    WordPress가 올바로 작동하려면 Apache .htaccess 파일을 사용해야 하지만 Amazon Linux에서는 기본적으로 이 파일을 사용할 수 없습니다. 따라서 아래 방법에 따라 Apache 문서 루트에서 모든 재정의를 허용해야 합니다.

    1. 즐겨 사용하는 텍스트 편집기(httpd.confnanovim 등)로 파일을 엽니다. 원하는 텍스트 편집기가 없는 경우, 초보자는 nano를 사용하는 것이 더욱 편리합니다.
      Copy
      [ec2-user wordpress]$ sudo vim /etc/httpd/conf/httpd.conf
    2. 다음과 같이 시작하는 영역을 찾습니다. <Directory "/var/www/html">
      <Directory "/var/www/html">
          #
          # Possible values for the Options directive are "None", "All",
          # or any combination of:
          #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
          #
          # Note that "MultiViews" must be named *explicitly* --- "Options All"
          # doesn't give it to you.
          #
          # The Options directive is both complicated and important.  Please see
          # http://httpd.apache.org/docs/2.4/mod/core.html#options
          # for more information.
          #
          Options Indexes FollowSymLinks
      
          #
          # AllowOverride controls what directives may be placed in .htaccess files.
          # It can be "All", "None", or any combination of the keywords:
          #   Options FileInfo AuthConfig Limit
          #
          AllowOverride None # # Controls who can get stuff from this server. # Require all granted </Directory>
    3. 위 영역에서 AllowOverride None 라인을 AllowOverride All로 변경합니다.

      참고

      이 파일에는 AllowOverride 라인이 많기 때문에 <Directory "/var/www/html"> 영역의 라인을 변경할 때는 주의해야 합니다.

      AllowOverride 

      All

    4. 파일을 저장하고 텍스트 편집기를 종료합니다.

    Apache 웹 서버에 대한 파일 권한 수정 방법

    WordPress의 제공 기능 중 일부(예: 관리 화면을 통한 미디어 업로드 등)는 Apache 문서 루트에 대한 쓰기 권한을 필요로 합니다. 이미 적용하지 않았다면 다음의 그룹 멤버십 및 권한(LAMP 웹 서버 자습서에서 자세히 설명)을 적용합니다.

    1. /var/www의 파일 소유권 및 그 내용을 apache 사용자로 변경합니다.
      Copy
      [ec2-user wordpress]$ sudo chown -R apache /var/www
    2. /var/www 및 그 콘텐츠의 그룹 소유권을 apache 그룹으로 변경합니다.
      Copy
      [ec2-user wordpress]$ sudo chgrp -R apache /var/www
    3. /var/www 및 그 하위 디렉터리의 디렉터리 권한을 변경해서 그룹 쓰기 권한을 추가하고 미래 하위 디렉터리에서 그룹 ID를 설정합니다.
      Copy
      [ec2-user wordpress]$ sudo chmod 2775 /var/www [ec2-user wordpress]$ find /var/www -type d -exec sudo chmod 2775 {} \;
    4. /var/www 및 그 하위 디렉터리의 파일 권한을 계속 변경해서 그룹 쓰기 권한을 추가합니다.
      Copy
      [ec2-user wordpress]$ find /var/www -type f -exec sudo chmod 0664 {} \;
    5. Apache 웹 서버를 재시작해서 새 그룹 및 권한을 가져옵니다.
      Copy
      [ec2-user wordpress]$ sudo service httpd restart
      Stopping httpd:                                            [  OK  ]
      Starting httpd:                                            [  OK  ]

    WordPress 설치 스크립트 실행 방법

    1. [chkconfig] 명령을 사용해서 매번 시스템이 부팅할 때마다 httpd 및 mysqld 서비스가 시작되도록 합니다.
      Copy
      [ec2-user wordpress]$ sudo chkconfig httpd on [ec2-user wordpress]$ sudo chkconfig mysqld on
    2. MySQL 서버(mysqld)가 실행 중인지 확인합니다.
      Copy
      [ec2-user wordpress]$ sudo service mysqld status
      mysqld (pid  4746) is running...

      mysqld 서비스가 실행 중이지 않은 경우, 이를 시작합니다.

      Copy
      [ec2-user wordpress]$ sudo service mysqld start
      Starting mysqld:                                           [  OK  ]
    3. Apache 웹 서버(httpd)가 실행 중인지 확인합니다.
      Copy
      [ec2-user wordpress]$ sudo service httpd status
      httpd (pid  502) is running...

      httpd 서비스가 실행 중이지 않은 경우, 이를 시작합니다.

      Copy
      [ec2-user wordpress]$ sudo service httpd start
      Starting httpd:                                            [  OK  ]
    4. 웹 브라우저에서 WordPress 블로그의 URL을 입력합니다(인스턴스에 대한 퍼블릭 DLS 주소 또는 blog 폴더 다음의 주소). 이제 WordPress 설치 화면이 나타납니다.
      http://

      my.public.dns.amazonaws.com

6. Amazon EC2 LAMP에 WordPress 설치하기 접기

7. Amazon EC2 Linux AMI에 FTP(vsftpd) 서버 설정

1단계: vsftpd 설치

EC2 서버에 SSH 접속한 후 vsftpd를 설치한다.

sudo yum install vsftpd

2단계: EC2 인스턴스의 FTP 포트를 연다.

EC2 서버의 FTP 포트를 연다. AWS EC2 관리 콘솔에 로그인하고 왼쪽의 내비게이션 메뉴에서 보안 그룹(Security Groups)을 선택한다. EC2 인스턴스에 할당된 보안 그룹을 선택하고 Inbound 탭에서 20-21 범위의 포트를 추가한다.

security groups1.png

1024-1048 포트 범위도 추가한다:

security groups2

3단계: vsftpd.conf 파일 업데이트

vsftpd 환경 설정 파일을 편집한다.

sudo nano /etc/vsftpd/vsftpd.conf

익명으로 FTP를 접속하는 것을 막는다:

anonymous_enable=YES

anonymous_enable=NO

로 고친다.

vsftpd.conf 파일의 마지막에 다음을 추가한다:

pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=자신의 인스턴스 공인 IP

vsftpd.conf 파일이 다음과 비슷해 보여야 한다. – 단, pasv_address 값은 자신의 공인(Public) IP 주소여야 한다.

vsftpd1

4단계: vsftpd 재시작

sudo /etc/init.d/vsftpd restart

다음과 같은 메시지가 보여야 한다.

vsftpd2

5단계: FTP 사용자 만들기

/etc/vsftpd/user_list를 보면 다음과 같을 것이다:

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

이건 기본적으로 “이 사용자들은 FTP 접근을 허락하지 않는다”라고 말하는 것이다. vsftpd는 이 목록에 없는 사용자가 FTP에 접근할 수 있게 한다.

그러므로 새 FTP 계정을 만들기 위해서, 서버에 사용자를 새로 만들어야 한다.(만약 /etc/vsftpd/user_list에 열거되지 않은 사용자 계정(예를 들어 ec2-user: 역자주)을 이미 가지고 있다면 다음 단계로 넘어간다.)

EC2 인스턴스에 사용자를 새로 만드는 것은 매우 간단하다. 예를 들어 사용자 bret을 만들려면:

sudo adduser bret
sudo passwd bret

다음과 같이 보일 것이다.

vsftpd3.jpg

6단계: 사용자의 홈 디렉토리를 제한한다.

이 시점에서의 FTP 사용자는 홈 디렉토리에 제한이 없다. 이것은 보안상 좋지 않으나, 매우 쉽게 고칠 수 있다.

vsftpd.conf 파일을 편집한다:

sudo nano /etc/vsftpd/vsftpd.conf

다음 라인을 주석해제한다:

chroot_local_user=YES

다음과 같이 보일 것이다:

vsftpd4

vsftpd 서버를 재시작한다:

sudo /etc/init.d/vsftpd restart

부록 A: Reboot 후 vsftpd 실행

vsftpd는 서버가 boot할 때 자동으로 시작되지 않는다. 다음과 같이 한다:

sudo chkconfig --level 345 vsftpd on

부록 A: vsftpd 제거

sudo yum remove vsftpd

7. Amazon EC2 Linux AMI에 FTP(vsftpd) 서버 설정 접기

프로젝트 구현

  • Amazone EC2 Instance를 활용한 Linux LAMP 환경에 WordPress 구축하였습니다.
  • 메인 페이지 구현
    • TOP NAVIGATION 및 Header 섹션
      • TOP NAVIGATION에서 메뉴를 선택할 경우 각 섹션으로 링크됩니다.
    • AVALIABLE FEATURES 섹션
    • ABOUT 섹션
    • SERVICES 섹션
    • PORTFOLIO 섹션
    • CONTACT 섹션
      • CONTACT 섹션에서는 문의 내용을 실제 컨텐츠 제공자의 이메일로 전송하는 기능을 구현하였습니다.
      • 메일 내용 입력
      • 메일 발송
      • 메일 확인
    • FOOTER 섹션
      • 뉴스레터 구독은 메일링 서비스를 제공하는 mailchamp를 사용하여, 뉴스 레터 구독을 신청한 컨텐츠 이용자에게 일괄적으로 뉴스 레터를 발송할 수 있는 기능을 제공하였습니다.
        • 구독 신청
        • 구독 신청 완료
        • 구독 신청한 뉴스레터 독자에게 메일 발송
        • 메일 발송 완료
    • 포트폴리오 페이지 구현
      • Post 섹션
      • Sidebar 섹션
      • Comment 섹션

기능 구현

  1. Post Editor

i.Better Font Awesome

Better Font Awesome은 Font Awesome을 포스트 내에 삽입할 수 있는 기능을 제공하며, 포스트 에디터 내에 Insert Icon 버튼을 통해 사용합니다.

ii.wp show more

wp show more을 포스트 에디터에서 글 내용 펼치기, 접기를 제공하는 숏코드를 제공하는 플러그인입니다.

b.Backup/Restore

i.updraftplus

  • updraftplus를 이용하여 WordPress를 원격저장소인 googledrive에 백업하는 기능을 구현하였습니다.
    • updraftplus를 이용한 백업 기능을 사용하기 이전에 ftp 기능을 웹 서버에서 사용할 수 있어야하기 때문에 vsftpd를 이용하여 ftp를 사용할 수 있게 만들었습니다.
      •  updraftplus는 WordPress의 database, plugins, themes, upload된 파일들, 그 외의 것들을 백업 및 복원할 수 있습니다.
      • 백업 목록
      • 설정
      • 원격 저장소에 저장된 백업 파일들

ii.github

github 원격 저장소(https://github.com/hamunstorys/com.php.wordpress.portfolio)에 git을 통해서 wordpress Source에 대한 버전형상 관리

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.