2023.12.13 - [AWS] - [AWS] AWS EC2 Nginx 인스턴스 생성 후 원격 접속하기
AWS EC2 Nginx 구현하기
1. nginx 공식 리포지토리 추가
sudo vi /etc/yum.repos.d/nginx.repo
------------------------------------
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
esc -> :wq
2. nginx 설치
sudo yum install nginx -y
3. nginx 시작
sudo systemctl start nginx
4. nginx 동작 확인
sudo systemctl status nginx
5. nginx 리눅스 시작시 자동실행 되도록 설정
sudo systemctl enable nginx
6. 윈도우 웹 브라우저에서 웹 접속
welcome to nginx! 내용이 나오면 웹 서비스 동작 중
7. nginx의 설치 위치, 설정 파일 위치
ls /etc/nginx/
nginx 설정 위치 : /etc/nginx
nginx 설정 파일 위치 : /etc/nginx/nginx.conf
sudo vi /etc/nginx/nginx.conf
--------------------------------
:q
- Severity(심각도) Level
- emerg > alert > cirt > err > waring > notice > info > debug
- 예로, err을 치면 emerg, alert, cirt, err 이렇게 4개가 나옴
- 언제 발생을 했고, 누가 발생시켰고, 어떤 이유로 발생됐는지
ls /etc/nginx/conf.d
----------------------
-> default.conf
➡️ nginx.conf에서 포함(include)되는 /etc/nginx/nginx.conf/default.conf 파일이 존재
vi /etc/nginx/conf.d/dafault.conf
----------------------------------
nginx의 documentRoot : /usr/share/nginx/html
ls /usr/share/nginx/html
--------------------------
->50x.html index.html
sudo vi /usr/share/nginx/html/index.html
:wq
8. 가상 호스트 사용
nginx 서버를 여러 도메인으로 공개하기 위한 구조
- sites-avaliable 디렉토리 생성 및 virtual.conf 파일 생성
- 로그 파일이 위치할 디렉토리 생성
- HTML 파일이 위치할 디렉토리 생성(DocumentRoot)
- nginx.conf 파일 편집
1) sites-avaliable 디렉토리 생성 및 virtual.conf 파일 생성
sudo mkdir /etc/nginx/sites-avaliable
sudo vi /etc/nginx/sites-avaliable/virtual.conf
------------------------------------------------
server {
#서버IP주소에 80번 포트로 오픈할 것을 선언
listen 80;
#오픈할 웹 서버의 도메인을 설정(도메인이 없으면 localhost로 설정)
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
- listen 80;
서버IP주소에 80번 포트로 오픈할 것을 선언 - server_name localhost;
오픈할 웹 서버의 도메인을 설정(도메인이 없으면 localhost로 설정) - access_log /var/log/nginx/virtual/access_log;
엑세스 로그 남길 파일 경로 지정 - error_log /var/log/nginx/virtual/error_log;
오류 로그를 남길 파일 경로 지정 - root /var/www/virtual/;
HTML 파일이 위치할 도큐먼트 루트를 설정 - index index.php index.html;
사이트의 Top 페이지로 할 파일을 설정
2) 로그파일이 위치할 디렉토리 생성
sudo mkdir /var/log/nginx/virtual/
3) HTML 파일이 위치할 디렉토리 생성(DocumentRoot)
sudo mkdir /var/www/virtual
-> mkdir: cannot create directory ‘/var/www/virtual’: No such file or directory
-> www 파일이 없음
---------------------------------
ls /var/www
->ls: cannot access /var/www: No such file or directory
-------------------------------------------------------
sudo mkdir -p /var/www/virtual
- -p
virtual 디렉토리를 생성할 때 중간 경로에 없는(존재하지 않는) 디렉토리가 있으면 디렉토리(www)를 자동으로 생성하고 최종적으로 virtual 디렉토리를 생성
4) nginx.conf 파일 편집
sudo vi /etc/nginx/nginx.conf
-------------------------------
31 **#**include /etc/nginx/conf.d/*.conf;
-> 주석처리
32 include /etc/nginx/sites-avaliable/*.conf;
--------------------------------------------
esc -> :wq
1)에 생성한 virtual.conf 파일이 포함됨
9. 설정 파일이 올바른지 확인
sudo nginx -t
------------------
-> nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
-> nginx: configuration file /etc/nginx/nginx.conf test is successful
10. index.html 만들기
sudo vi /var/www/virtual/index.html
------------------------------------
11. nginx 재시작
sudo systemctl restart nginx
12. 윈도우 웹 브라우저에서 확인
13. php 설치
- nginx는 아파치와는 달리 php만 설치하였다고 해서 바로 사용할 수 없다.
- php-fpm을 이용해 php를 다룰 수 있음
sudo amazon-linux-extras
- 아마존에서 제공하는 php8.1 설치
sudo amazon-linux-extras enable php8.1
available → enabled로 바뀌면 최신 버전이 설치된 것
- php 관련 파일 설치
sudo yum -y install php php-fpm php-cli php-common php-devel php-pear php-mbstring php-mysqlnd php-pdo php-gd
ls /var/www/virtual/
-> index.html
14. phpinfo.php를 도큐먼트 루트에 생성
sudo vi /var/www/virtual/phpinfo.php
-------------------------------------
<?php
phpinfo();
?>
-----------------
esc -> :wq
파일이 다운로드 된다.
15.
윈도우 웹 브라우저에서 EC2_IP주소/phpinfo.php 를 입력하면 페이지가 보이지 않고, phpinfo.php 파일이 다운로드 됨!! 페이지를 보려면 추가적인 설정이 필요!!
16. php-fmp 위치 확인
which php-fpm
->/usr/sbin/php-fpm
ls /etc/nginx/conf.d/php-fpm.conf
-> /etc/nginx/conf.d/php-fpm.conf
/usr/sbin/php-fpm
설정파일 위치 : /etc/nginx/conf.d/php-fpm.conf
17.
현재 php-fpm.conf가 위치하고 있는 /etc/nginx/conf.d/ 디렉토리는 nginx.conf 내의 주석 처리로 인해 접근이 불가함. 따라서 설정 파일을 /etc/nginx/sites-available 디렉토리로 이동 또는 복사 필요
sudo cp /etc/nginx/conf.d/php-fpm.conf /etc/nginx/sites-available/
18. php-fpm 실행
sudo systemctl start php-fpm
19. php-fpm 자동 실행 설정
sudo systemctl enable php-fpm
20. 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 / {} 부분을 삭제
21. nginx 재실행
sudo systemctl restart nginx
22. 윈도우 주소창에 AWS EC2_IP주소/phpinfo.php 입력
파일이 다운로드 되지 않고 php 관련 표가 표시!
인스턴스 중지 후 창닫기!
'AWS' 카테고리의 다른 글
[AWS] 교재 EC2 인스턴스 작성 명령어 모음 ① (0) | 2023.12.20 |
---|---|
[AWS] 리다이렉션(redirection) (0) | 2023.12.20 |
[AWS] EC2(Apache)-RDS(MySQL) 워드프레스 구현 (0) | 2023.12.20 |
[AWS] 교재 EC2 인스턴스 작성 (1) (0) | 2023.12.20 |
[AWS] AWS EC2 Nginx 인스턴스 생성 후 원격 접속하기 (0) | 2023.12.13 |