iOS 앱개발 & 라즈베리파이 서버운영 & 워드프레스 블로그 광고수입 & 자작만화

라즈베리파이에 우분투 PHP 설치하기

Share with : 

Share on facebook
Share on linkedin
Share on twitter
Share on pinterest
Share on email

이번 글에서는 php를 설치해보겠습니다. 정확히 말하자면 Nginx에서 php를 사용할 수 있게 해주는 php-fpm이라는 것을 설치할 겁니다. php-fpm을 설치하면 php도 자동으로 설치됩니다.

저번글에서 Nginx설치할때와 비슷하게 apt프로그램을 이용해서 설치하겠습니다.

php 설치 전 사전작업

sudo add-apt-repository ppa:ondrej/php

입력하여 저장소를 등록합시다.

중간에 Enter를 입력하여 계속 진행하라는 메시지가 나오면 Enter를 누릅시다.

sudo apt-get update

를 실행하여 업데이트를 한번 해줍니다.

어떤 버전의 php가 설치 될지 확인해보기 위해 아래 코드를 실행합니다.

sudo apt-cache policy php

이번에 설치될 버전은 8.0 인걸 확인할 수 있습니다. php8.0은 20년 11월 출시되었는데요. 현재 php버전중 가장 뛰어난 성능을 자랑합니다.


php 8.0 fpm 설치하기

준비는 완료되었으니 실제 설치를 시작하겠습니다. 아래 코드를 실행합니다.

sudo apt-get install php8.0-fpm 

중간에 계속하겠느냐는 확인에는 y 를 입력하고 엔터를 누릅시다.

이후에 MariaDB를 같이 이용할 계획이므로 php8.0-mysql을 포함한 자주쓰이는 여러가지 확장 프로그램을 설치하겠습니다. 이 확장 프로그램 리스트는 나중에 packages.txt파일에서 찾아보실 수 있습니다.

sudo apt-get install php8.0-mysql php8.0-cli php8.0-gd php8.0-curl php8.0-mbstring php8.0-xml zip unzip

cli는 클라이언트, gd는 GD Graphics Library를 지원하기 위함, curl은 php가 다른 프로토콜을 사용하는 서버와 상호작용 할수 있게 해주기 위함, mbstring은 non-ASCII 문자열을 다루고 문자열들을 다른 인코딩으로 변환하기 위함입니다.

설치 버전 확인

php8.0이 제대로 설치 되었는지 확인하기 위해서 php -v 를 실행합니다.

저는 8.0.2 버전으로 잘 설치되었다고 나옵니다.

Nginx 설정파일을 수정해서 php와 연동

설치만으로는 nginx에서 php를 사용할수 없습니다. nginx설정 파일을 수정해서 php를 사용하게끔 해주어야 합니다.

nginx 설정 파일은 아래 위치에 있습니다.

  • /etc/nginx/sites-available/default

해당 파일을 열어서 수정해야하는데, 저는 우분투에서 기본적으로 제공하는 nano에디터를 사용하겠습니다. vi에디터를 사용하셔도 무관합니다만 nano가 더 편해서 저는 nano를 주로 사용할 겁니다.

sudo nano /etc/nginx/sites-available/default

입력해서 설정파일을 엽니다.

위 사진과 같은 화면이 보이실텐데요. 각 줄 맨 앞에 #기호가 붙어있는것은 주석이니 실제 실행되지 않습니다.

주석이 아닌 실제 실행될 녀석들만 모아보면 다음과 같습니다.

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;
        index index.html index.htm index.nginx-debian.html;  
        server_name _;
        location / {
                try_files $uri $uri/ =404;
        }
}

index index.html index.htm index.nginx-debian.html; 의 index다음에 index.php를 삽입합니다.

index index.php index.html index.htm index.nginx-debian.html; 

위에 보이는 server { } 블록 안에 다음과 같은 내용을 추가합니다.

location ~ \.php {
    fastcgi_pass unix:/run/php/php8.0-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_read_timeout 400;
    include snippets/fastcgi-php.conf;
    include fastcgi_params;
}
location ~ /\.ht {
    deny all;
}

위의 코드를 복사(Ctrl + C)한 뒤 원격 데스크톱 연결 창에서 입력하고자 하는 곳에 마우스 오른쪽클릭 후 붙여넣기(Paste)를 누르면 쉽게 입력할 수 있습니다.

입력을 완료하였다면 Ctrl + x 를 누르면 변경사항을 저장하겠냐고 맨 아래에 조그맣게 뜨는데 y를 입력하고 엔터를 누르시면 변경사항이 저장되고 터미널 화면으로 복귀할수 있습니다.

방금 입력한 코드가 문제없이 해석되는지 확인해보기 위해서 아래 명령어를 입력합니다.

sudo nginx -t

위의 그림처럼 나타나면 문법상의 오류가 없다는 의미이므로 아래 명령어를 입력하여 nginx를 재시작합시다.

sudo systemctl reload nginx

입력후 아무 변화가 나타나지 않는것처럼 보여도 재시작이 완료된 것이므로 당황하실 필요 없습니다.

NGINX에서 PHP가 작동하는지 테스트 해보기

위에서 index.php를 중간에 끼워 넣었던 것을 기억하시나요?

실제로 index.php파일을 만들어서 잘 작동하는지 확인해보겠습니다.

리눅스 디렉토리에 대한 간단한 설명

index.php 파일은 웹서버의 루트 디렉토리인 /var/www/html 폴더 안에 만들어야 합니다.

우분투에 로그인하고 터미널을 띄웠을때, 기본적으로는 홈 디렉토리에 접속한 상태입니다. 홈 디렉토리란 /home/ubuntu 를 의미합니다.

현재 어느 디렉토리에 위치해 있는지를 알아보기 위해선 pwd명령어를 사용하면 됩니다.

ubuntu@ubuntu:의 바로 오른쪽에 위치한 물결(~)표시 가 바로 홈 디렉토리임을 의미하는 표시입니다.

index.php를 만들기 위해서 /var/www/html로 이동해야 하므로 아래 코드를 입력합시다. cd는 디렉토리로 이동하는 명령어입니다

cd /var/www/html

그럼 위의 그림처럼 물결(~) 표시가 있던 자리가 해당 디렉토리 이름으로 바뀐걸 볼 수 있습니다.

index.php 작성하기

그럼 해당 위치로 이동하였으면 index.php 를 만들어봅시다. 아무 내용도 없는 빈 파일을 만드는 명령어는 touch입니다.

sudo touch index.php

위 파일엔 아무내용도 없기 때문에 nano 에디터로 열어서 내용을 작성하겠습니다.

sudo nano index.php

아무 내용도 없는 빈 창이 나타나날텐데요. 다음과 같이 입력해줍시다.

<?php phpinfo(); ?>

입력완료된 모습은 아래 사진과 같습니다.

위 코드는 설치된 php정보를 보여주는 코드입니다.

입력완료하셨다면 ctrl + x 후 y누르고 엔터 누르면 저장되며 이전 화면으로 나올 수 있습니다.

php 작동 테스트

이제 테스트를 해볼 시간입니다. 라즈베리파이의 ip주소를 웹브라우저 주소창에 입력하여 접속해봅니다. 아래 사진과 같은 표가 나타나면 정상적으로 php가 해석되고 있다는걸 알수 있습니다.

위 화면을 아래로 스크롤하다보면 date항목이 있습니다. 현재 저의 경우에는 평양 기준으로 시간설정이 되어있습니다.

북조선이 아니라 남조선으로 바꾸어주는 작업을 하겠습니다.

Timezone 변경하기

위에서 index.php를 만들었던 방법과 유사하게 설정파일이 있는 디렉토리로 이동해서 해당 파일을 편집하겠습니다.

설정파일은 두군데에 존재합니다.

  • /etc/php/8.0/cli/php.ini
  • /etc/php/8.0/fpm/php.ini

cd 명령어를 통해 해당 위치로 이동한 뒤 파일을 열어서 수정하겠습니다. 아래 명령어를 입력합니다.

cd /etc/php/8.0/cli

디렉터리로 이동을 완료하였다면 아래 명령어를 입력해 php.ini파일을 엽니다.

sudo nano php.ini

php.ini 안의 내용이 많으므로 키워드검색을 위해 Control + w 를 누릅니다.

화면 맨 아래에 Search: 라는 부분이 새로 생길텐데요. date.timezone를 입력하고 엔터를 누릅니다.

커서가 해당 찾는단어 위치로 이동하는데요. 각 행의 가장 앞에 있는 세미콜론(;)은 주석을 의미하므로 해당 줄은 실행이 되지 않습니다. ;date.timezone = 을 다음과 같이 수정합니다.(맨 앞의 세미콜론을 꼭 지워주어야 합니다)

date.timezone = Asia/Seoul

작성이 끝났으면 Control + x 누르고, 변경사항을 저장하겠느냐는 질문에는 y를 입력한 뒤 엔터를 누르면 저장한뒤 나올 수 있습니다.

나머지 한개의 파일(/etc/php/8.0/fpm/php.ini)도 위와 동일한 방법으로 똑같이 수정해주면 됩니다.

두 파일을 모두 수정한 뒤 php를 재시작해주겠습니다. 아래 명령어를 입력해주세요.

sudo systemctl restart php8.0-fpm

Timezone변경이 완료되었는지 확인하기 위해 웹브라우저에서 라즈베리파이의 ip주소로 다시 접속해봅시다.

변경이 잘 되었습니다.

마무리작업

서버의 보안을 위해서 아깝긴 하지만 위에서 만들었던 index.php파일과 nginx설치때 기본적으로 들어있는 index.nginx-debian.html을 지워줍시다.

두 파일 모두 /var/www/html 디렉토리에 있습니다. 아래의 cd명령으로 해당 디렉토리로 이동합니다.

ls(엘과 에스)명령어는 현재 위치한 디렉토리에 어떤 파일이 있는지 나타내는 명령어입니다. 보시면 제거해야할 두가지 파일이 들어있습니다.

파일 제거는 rm명령어로 실행할 수 있습니다. 아래의 명령어를 입력해주세요.

sudo rm index.php

잘 지워졌나 확인해보기 위해서 ls 명령어를 사용해보았습니다.

잘 지워졌군요. 나머지 파일도 지워줍시다.

sudo rm index.nginx-debian.html

ls 명령어를 실행해보니 아무것도 나오지 않는걸로 봐서 두 파일이 정상적으로 지워졌다는걸 알 수 있습니다.

지금 ip주소로 다시 접속해보면 403Forbidden 페이지가 나타날 것입니다.

정상이므로 이제 다음 단계를 진행하시면 되겠습니다. 다음 글에서는 Maria DB를 설치하겠습니다.

Stay Connected

More Updates

0 0 votes
Article Rating
Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
nana
nana
1 year ago

전문지식 수준이 상당하신것 같아요!!

1
0
Would love your thoughts, please comment.x
()
x