KDT/Cloud

231229 Cloud

001cloudid 2023. 12. 29. 12:50
728x90

AWS EC2 nginx 설정

  1. EC 대시보드 - 인스턴스 - 인스턴스 - 인스턴스 시작
    이름 : nginx
    AMI : Amazon Linux 2
    인스턴스 유형 : t2.micro
    키패어 : 기본
    네트워크 설정 : 기존 보안 그룹 선택(ssh, web)
    스토리지 구성 : 8GiB(기본값)
    → 인스턴스 시작
  2. 원격 접속
  3. nginx 공식 리포지토리 추가
    sudo vi /etc/yum.repos.d/nginx.repo
    →yum 명령어 시 EC2 인스턴스가 저장소(repository)를 찾는데 그 경로가 /etc/yum.repos.d/이다
    →여기 있는 저장소를 기본값으로 찾게 됨
    →※AWS가 아닌 일반적인 리눅스라면 /etc/yum/repo.d/centos-base.repo 파일에 저장된 기본값으로 저장소를 찾음
    → 원하는 버전의 nginx를 설치할 수 있음
    →i 입력모드 전환
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1
    esc :wq
  4. nginx 설치
    sudo yum install -y nginx
  5. nginx 시작
    sudo systemctl start nginx
  6. nginx 동작 확인
    sudo systemctl status nginx
  7. 리눅스 재시작시 자동으로 nginx가 동작하도록 설정
    sudo systemctl enable nginx
  8. 윈도우 웹 브라우저에서 동작 확인
    주소창 EC2 인스턴스의 IPv4주소 입력(그림 1)
    →.html파일을 어디서든 볼 수 있다
  9. 가상 호스트 사용
    AWS EC2 인스턴스를 여러 도메인으로 공개하기 위한 구조 (231110과 다름)
    1)sites-available 디렉토리 생성 및 virtaul.conf파일 생성
    cd /etc/nginx
    →ls
    → vi nginx.conf
    /etc/nginx/conf.d/*.conf; 확인 후 :q
    → cd conf.d/
    → ls
    → vi default.conf
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
    :q
    → cd /usr/share/nginx/html
    → ls
    → index.html이 있는데 그림1이다.
    즉 /usr/share/nginx/html 안에 index.html을 수정하면 그림1을 바꿀 수 있다.
    이는 가상 호스트 방법이 아님.

    cd /etc/nginx
    sudo mkdir sites-available(폴더 생성)
    sudo vi sites-available/virtual.conf
    i
    server{
        #서버 IP 주소에 80번 포트로 오픈할 것을 선언
        listen 80;
        #오픈할 웹 서버의 도메인을 설정(도메인이 없으면 locahonst로 설정)
        server_name localhost;
        # 엑세스 로그 남길 파일 경로를 지정
        access_log /var/log/nginx/virtual/access_log;
        #오류 로그를 남길 파일 경로를 지정
        error_log /var/log/nginx/virtual/error_log;
        location / {
            #HTML 파일이 위치할 도큐먼트 루트 설정
            root /var/www/virtual/;
            #사이트의 Top 페이지로 할 파일 설정(순서대로)
            index index.php index.html;
        }  
    }
    esc :wq

    2)로그 파일이 위치할 디렉토리 생성
    sudo mkdir /var/log/nginx/virtual

    3)HTML 파일이 위치할 디렉토리 생성(DocumentRoot)
    sudo mkdir -p /var/www/virtual/
    ※-p : /var/www 가 없으면 www를 만들고 그 아래 virtaul 생성

    4)nginx.conf 편집
    sudo vi /etc/nginx/nginx.conf
    31번 라인 주석 처리 #include /etc/nginx/conf.d/*.conf;
    32번 라인 include /etc/nginx/sites-available/*.conf;
    esc :wq

  10. 설정 파일이 올바른지 확인
    sudo nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
  11. index.html 만들기
    sudo vi /var/www/virtual/index.html
    ===============================================================
    <!DOCTYPE html>
    <html>
            <head>
                    <meta charset="UTF-8" />
                    <title>nginx test page</title>
            </head>
            <body>
                    niginx test page
            </body>
    </html>
    ===============================================================
    esc :wq
  12. nginx 재시작
    sudo systemctl restart nginx
  13. 윈도우 웹 브라우저에서 확인
    그림 2. 서버가 잘 동작하고 있음
  14. php 설치
    nginx는 아파치와 달리 php만 설치하였다고해서 바로 사용할 수 없음.
    php-fpm을 이용해서 php를 다룰 수 있음.(1222 아파치 rps yum으로 원하는 버전을 설정해서 설치)
    AWS에서는 amazon-linux-extras에서 제공하는 php를 설치 할 수 있음

    아마존에서 제공하는 php8.1을 설치
    sudo amazon-linux-extras
    66번 항목 php8.1
    sudo amazon-linux-extras enable php8.1
    → php8.1 항목을 enable(활성화)하여 php를 설치할 때 php8.1이 기본값으로 선택되도록 설정
    sudo yum -y install php php-fpm php-cli php-common php-devel php-pear php-mbstring php-mysqlnd php-pdo php-gd
    → php 관련 설치(총 30개)

    whic php-fpm
    → php-fpm 위치 확인
    → /usr/sbin/php-fpm
    → 설정파일 위치 : /etc/nginx/conf.d/php-ftp.cof
  15. php-fpm.conf 설정
    /etc/nginx/nginx.conf 파일에서 /etc/nginx/conf.d/*.conf; 라인을 주석처리하여
    php-fpm.conf 파일이 설정 파일에 포함되지 못함
    따라서 php-fpm.conf 파일을 /etc/nginx/sites-available/ 디렉토리에 복사해야함
    sudo cp /etc/nginx/conf.d/php-fpm.conf /etc/nginx/sites-available/
    → php-fpm.conf 파일을 /etc/nginx/sites-available/ 디렉토리로 복사
    ls /etc/nginx/sites-available/ 확인
  16. php-fpm 실행
    sudo systemctl start php-fpm
  17. php-fpm 자동 실행 설정
    sudo systemctl enable php-fpm
  18. nginx와 php의 연동을 위해 설정 파일 수정
    sudo vi /etc/nginx/sites-available/virtual.conf
    ===============================================================
    server {
        listen 80;
        server_name web.itwillbs.com;
        
        root /var/www/virtual;
        index index.php index.html;
        charset UTF-8;

        location ~ \.php$ {
            try_files $uri =404;

            include fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_index index.php;
            # fastcgi_intercept_errors on;
            # fastcgi_keep_conn on;
            # fastcgi_read_timeout 300;

            # fastcgi_pass   127.0.0.1:9000;
            fastcgi_pass  unix:/var/run/php-fpm/www.sock;
            #for ubuntu unix:/var/run/php/php8.0-fpm.sock;

            ##
            # FastCGI cache config
            ##

            # fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:10m max_size=1000m inactive=60m;
            # fastcgi_cache_key $scheme$host$request_uri$request_method;
            # fastcgi_cache_use_stale updating error timeout invalid_header http_500;        
            
            fastcgi_cache_valid any 30m;
        }
    }
    ===============================================================
    esc :wq
    location / {} 부분을 삭제, location ~ \.php${} 추가
  19. 도큐먼트 루트에 php 파일 생성
    sudo vi /var/www/virtual/info.php
    ===============================================================
    <?php
            phpinfo();
    ?>
    ===============================================================
    esc :wq

  20. nginx 재실행
    sudo systemctl restart nginx
  21. 윈도우 웹 브라우저 주소창에 AWC EC2 IP주소/info.php 입력 후 확인(php 동작 확인)
    그림 3 참조

그림 1. nginx 웹 브라우저 동작 확인
그림 2. 웹 브라우저 확인
그림 3. php 동작확인

 

RDS(MySQL)을 연동하여 wordpress 설치

  1. RDS를 MySQL로 구현할 예정이므로 mysql 클라이언트 설치
    sudo yum install mysql -y
    ※ 마리아DB가 설치됨
  2. 도큐먼트 루트로 이동
    cd /var/www/virtual
  3. wordpress 설치
    sudo wget https://wordpress.org/latest.tar.gz
  4. latest.tar.gz 압축해제
    sudo tar xfz latest.tar.gz
    wordpress 디렉토리가 생성
  5. wordpress 소유자를 nginx로 변경
    sudo chown -R nginx.nginx /var/www/virtual/wordpress
    → 소유자가 nobody에서 nginx로 변경
  6. RDS 대시보드로 이동, RDS 데이터베이스 설치
    ===============================================================
    ※웹에서 해야함
    RDS DB 인스턴스 생성하기
    1) AWS Managemet Console 로그인
    2) 오른쪽 상단 리전 확인(아시아 태평양(서울))
    3) 콘솔 홈 검색창 RDS를 검색 후 선택
    4) RDS 대시보드 - 데이터베이스 - 데이터베이스 생성
    5) 데이터베이스 생성
    엔진 옵션 : 표준 생성, MySQL, MySQL Community, MySQL 8.0.35(기본값)
    템플릿 : 프리 티어
    ※가용성 및 내구성 항목이 비활성화됨. 단일 AZ(가용영역)만 지원
    설정: DB인스턴스 식별자 : wordpressDB, 마스터 암호 설정
    인스턴스 구성 : 기본값
    스토리지 : 스토리지 자동 조정 : 스토리지 자동 조정 활성화 체크 해제
    연결 : 퍼블릭 액세스 : 예, 기존 VPC 보안그룹 : RDS-EC2-Connection-SecurityGroup
    ※없을 시 231222 Cloud 게시글 확인
    추가 구성 : 초기 데이터베이스 이름 : wordpress, '자동 백업을 활성화 합니다.', '암호화 활성화', '마이너 버전 자동 업그레이드 사용' 체크해제
    ===============================================================
    데이터베이스 생성
  7. wordpress의 wp-config.php 생성
    cd /var/www/virtual/wordpress/
    sudo cp wp-config-sample.php wp-config.php
    ※같은 디렉토리 안에 복사할 때는 이름(원본)과 이름(카피할이름)만 써주면 됨.
  8. wp-config.php 수정
    sudo vi wp-config.php
    ===============================================================
    23번 라인 define( 'DB_NAME', 'wordpress' ); 수정
    26번 라인 define( 'DB_USER', 'admin' ); 수정
    29번 라인 define( 'DB_PASSWORD', '설정한 패스워드' );
    32번 라인 localhost 대신 엔드포인트 붙여넣기
    ===============================================================
    esc :wq
  9. nginx 웹 서비스 재시작
    sudo systemctl restart nginx
  10. 윈도우 웹 브라우저에서 EC2 IP주소/wordpress를 입력하면 워드프레스 첫 설치 과정으로 넘어감
    그림 3

그림 3.

728x90

'KDT > Cloud' 카테고리의 다른 글

240112 Cloud  (0) 2024.01.12
240105 Cloud  (0) 2024.01.05
231222 Cloud  (0) 2023.12.22
231215 Cloud  (0) 2023.12.15
231204 Cloud  (0) 2023.12.04