728x90
AWS EC2 nginx 설정
- EC 대시보드 - 인스턴스 - 인스턴스 - 인스턴스 시작
이름 : nginx
AMI : Amazon Linux 2
인스턴스 유형 : t2.micro
키패어 : 기본
네트워크 설정 : 기존 보안 그룹 선택(ssh, web)
스토리지 구성 : 8GiB(기본값)
→ 인스턴스 시작 - 원격 접속
- 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 - nginx 설치
sudo yum install -y nginx - nginx 시작
sudo systemctl start nginx - nginx 동작 확인
sudo systemctl status nginx - 리눅스 재시작시 자동으로 nginx가 동작하도록 설정
sudo systemctl enable nginx - 윈도우 웹 브라우저에서 동작 확인
주소창 EC2 인스턴스의 IPv4주소 입력(그림 1)
→.html파일을 어디서든 볼 수 있다 - 가상 호스트 사용
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 - 설정 파일이 올바른지 확인
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful - 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 - nginx 재시작
sudo systemctl restart nginx - 윈도우 웹 브라우저에서 확인
그림 2. 서버가 잘 동작하고 있음 - 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 - 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/ 확인 - php-fpm 실행
sudo systemctl start php-fpm - php-fpm 자동 실행 설정
sudo systemctl enable php-fpm - 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${} 추가 - 도큐먼트 루트에 php 파일 생성
sudo vi /var/www/virtual/info.php
===============================================================
<?php
phpinfo();
?>
===============================================================
esc :wq - nginx 재실행
sudo systemctl restart nginx - 윈도우 웹 브라우저 주소창에 AWC EC2 IP주소/info.php 입력 후 확인(php 동작 확인)
그림 3 참조
RDS(MySQL)을 연동하여 wordpress 설치
- RDS를 MySQL로 구현할 예정이므로 mysql 클라이언트 설치
sudo yum install mysql -y
※ 마리아DB가 설치됨 - 도큐먼트 루트로 이동
cd /var/www/virtual - wordpress 설치
sudo wget https://wordpress.org/latest.tar.gz - latest.tar.gz 압축해제
sudo tar xfz latest.tar.gz
wordpress 디렉토리가 생성 - wordpress 소유자를 nginx로 변경
sudo chown -R nginx.nginx /var/www/virtual/wordpress
→ 소유자가 nobody에서 nginx로 변경 - 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, '자동 백업을 활성화 합니다.', '암호화 활성화', '마이너 버전 자동 업그레이드 사용' 체크해제
===============================================================
데이터베이스 생성 - wordpress의 wp-config.php 생성
cd /var/www/virtual/wordpress/
sudo cp wp-config-sample.php wp-config.php
※같은 디렉토리 안에 복사할 때는 이름(원본)과 이름(카피할이름)만 써주면 됨. - 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 - nginx 웹 서비스 재시작
sudo systemctl restart nginx - 윈도우 웹 브라우저에서 EC2 IP주소/wordpress를 입력하면 워드프레스 첫 설치 과정으로 넘어감
그림 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 |