(linux) 9. PHP 7.4, FPM 설치 및 NGINX 와 연동
💼📝🔑⏰ 📙📓📘📒🎓
💼 PHP 설치
📝 1. 설치하기전 php 삭제 해주는 작업
- sudo yum remove php*: 기존 php 삭제
📝 2. php 7.4 설치 및 설정
순서가 매우중요
- sudo yum update -y: yum 업데이트 작업
- sudo yum install epel-release:
- sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
- sudo yum -y install yum-utils
- sudo yum-config-manager --enable remi-php74
- sudo yum install php php-common php-devel php-mysqlnd php-fpm php-opcache php-gd php-mbstring php-cli php-zip php-mcrypt php-curl php-xml php-pear php-bcmath php-json
- php -v: php7.4 설치 확인하는 명령어
💼 PHP | nginx 연동설정
- sudo systemctl enable php-fpm: php 항상키는 명령어
- sudo systemctl restart php-fpm: php 다시시작(설정변경시에도 자주 쓰임)
- sudo vim /etc/php.ini: php 설정파일 열기
- sudo vim /etc/nginx/conf.d/php_vhost.conf.include: nginx랑 연동하는 스크립트 작성용 파일 생성- 스크립트 내용 추가
        index index.php index.html index.htm; root $documentRoot; location ~ \.php$ { root $documentRoot; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $documentRoot/$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_read_timeout 600; }
 
- 스크립트 내용 추가
        
- sudo vim /etc/nginx/conf.d/vhost.conf: nginx랑 연동하는 서버 등록용 설정파일 생성- 서버 내용 추가
        server { listen 8031; server_name _; set $documentRoot /web/site1/public; location / { try_files $uri $uri/ /index.php?$args; } include /etc/nginx/conf.d/php_vhost.conf.include; } server { listen 8032; server_name _; set $documentRoot /web/site2/public; location / { try_files $uri $uri/ /index.php?$args; } }
 
- 서버 내용 추가
        
- sudo systemctl restart nginx: nginx 재시작, 설정 반영을 위해
- 포트포워딩 하기:8031,8032 포트
- .php 확장자 파일을 만들어서 작동 되는지 확인하기
💼 PHP | MySql 연동 설정
- 8031 server에 mysqlConect.php파일을 생성하고 Connection 설정하기- 설정 관련 코드
        <?php mysqli_connect("127.0.0.1", "site1", "비밀번호", "site1") or die('DB CONNECTION ERROR');
 
- 설정 관련 코드
        
- DB CONNECTION ERROR 발생 시 mysql 접속하여 확인
    - sudo mysql -u root -p: mysql 접속
- 계정있는지 확인
        select user from mysql.user;
- 계정생성
        grant all privileges on site1.* to site1@`%` identified by '비번'; grant all privileges on site2.* to site2@`%` identified by '비번'; create database site1; create database site2;
 
- 이상 mysql 연동도 끝나게 된다 와우!!
💼 웹호스팅 실습
php를 사용하여 실제 웹서비스를 구축해보자
📝 게시물 테이블 생성
- site1에 게시물 테이블 생성 작업
    CREATE TABLE ARTICLE ( ID INT (10) UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY(ID), REG_DATE DATETIME NOT NULL, TITLE VARCHAR(100) NOT NULL, `BODY` TEXT NOT NULL ); INSERT INTO ARTICLE SET REG_DATE = NOW(), TITLE = '제목입니다.', `BODY` = '내용입니다.'; INSERT INTO ARTICLE SET REG_DATE = NOW(), TITLE = '제목입니다.02', `BODY` = '내용입니다.02'; INSERT INTO ARTICLE SET REG_DATE = NOW(), TITLE = '제목입니다.03', `BODY` = '내용입니다.03'; SELECT * FROM ARTICLE;
📝 editPlus로 php 페이지 만들기
에디트 플러스로 site1의 페이지를 만들어 보자
- index.php 생성 후 아래 코드 추가
    <?php // 1. DB 접속 $db_conn = mysqli_connect("127.0.0.1", "site1", "richard2020!@", "site1") or die("DB CONNECTION ERROR"); // 2. 쿼리 실행 $sql = " SELECT * FROM ARTICLE ORDER BY ID DESC "; $rs = mysqli_query($db_conn, $sql); //var_dump($rs); // 3. DB에서 조회된 결과값을 1ROW 씩 꺼내오는 작업 $rows = []; while ( $row = mysqli_fetch_assoc($rs) ) { $rows[] = $row; } ?> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>게시물 리스트</title> </head> <body> <h1>게시물 리스트</h1> <table border="1"> <thead> <tr> <th>ID</th> <th>날짜</th> <th>제목</th> <th>내용</th> </tr> </thead> <tbody> <?php foreach ( $rows as $row ) { ?> <tr> <td><?=$row["ID"]?></td> <td><?=$row['REG_DATE']?></td> <td><?=$row['TITLE']?></td> <td><?=$row['BODY']?></td> </tr> <?php } ?> </tbody> </table> </body> </html>
- sudo vim /etc/php.ini: php 설정 파일 열기- display_errors = Off=>- On으로 바꿔줘야 php 오류를 출력한다.
 
- sudo systemctl restart php-fpm: 설정 변경 후 재시작
댓글남기기