CENTOS8 + NGINX + PHP8 + MARIADB 설치 및 설정

에공~ CENTOS7 + NGINX + PHP8 + MARIADB 에 관해 포스팅을 할 무렵,,,,

헐~ centos8이 나왔네.. centos7 이랑 얼마나 다르겠어 했는데..

약간씩 차이가 있어.. CENTOS7 + NGINX + PHP8 + MARIADB 을 건너 띄고 CENTOS8 + NGINX + PHP8 + MARIADB 을준비해야 하다.. 당시 centos7 로 준비한 자료들이 아까워.. 오늘에서야 centos8 관련해서 포스팅하게 되었습니다.

시작하기 전, centos8 에 dnf 라는 명령어가 추가되었는데요.

자세한 설명은 링크 첨부하겠습니다.

DNF와 YUM 차이 간략한 정리

centos7 까지는 yum 이라는 명령어로 install, update 도 하고 했었는데.. centos8 부터는 dnf 로 처리가 되려나봐요.

#기술은 계속 변하고 있는데, 점점 쫓아가기가 힘에 부친다니ㅡㅡ

이제 CENTOS8 + NGINX + PHP8 + MARIADB 설치를 시작해보겠습니다.

순서는 NGINX -> PHP8 -> MARIADB 로 진행을 할게요. 아시다시피 이 순서는 중요하지 않습니다.

순서가 NGINX-> MARIADB -> PHP8 이렇든 PHP8 -> NGINX-> MARIADB 이렇든 중요하지 않아요.

기술한대로 NGINX 먼저 설치하겠습니다.

ssh 에 접속하시고.. 이래 명령을 입력해주세요.

sudo dnf -y install nginx

nginx 설치 끝! centos8 에서도 repo를 이용해도 될거 같은데요.(확인해보지는 않았습니다.)

위의 방법이 제일 간단하더라구요.

서버 재부팅시 nginx 자동 실행 추가해주시구요.

sudo systemctl enable nginx

nginx 를 실행합니다.

sudo systemctl start nginx

방화벽에 http 와 https 를 추가해줍니다.

필요하다면 80 포트와 3306 포트도 추가해줍니다.

systemctl start firewalld
systemctl enable firewalld
systemctl unmask firewalld
sudo firewall-cmd –permanent –add-service=http
sudo firewall-cmd –permanent –add-service=https
sudo firewall-cmd –zone=public –add-port=80/tcp –permanent
sudo firewall-cmd –zone=public –add-port=3306/tcp –permanent

centos8에서도 위와 같이 방화벽을 시작하고 서비스 및 포트를 추가했지만. 실행되지 않는 이슈가 발생했습니다.
centos8 버젼에 따라서 차이가 있는거 같아요. 아래로 실행하니 서비스와 포트 추가가 가능하내요.

sudo firewall-cmd –add-service=http
sudo firewall-cmd –add-service=https
firewall-cmd –add-port=80/tcp
firewall-cmd –add-port=3306/tcp

방화벽을 새로고침 합니다.

sudo firewall-cmd –reload

서버로 연결된 도메인 또는 IP 를 호출하시면, 아래 이미지와 같은 페이지를 보실수 있습니다.

여기까지가 centos8 에 nginx 설치와 방화벽 설정입니다.

다음은 centos8 에 php8 설치 방법을 알려드릴게요.

설치 과정은 아래의 명령문을 한 줄씩 입력하시면 됩니다.

sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo dnf -y install yum-utils
sudo dnf module reset php
sudo dnf module install php:remi-8.0 -y
sudo dnf install php -y
sudo dnf -y install php-{cli,fpm,mysqlnd,zip,devel,gd,mbstring,curl,xml,pear,bcmath,json}

centos8 의 경우 sudo dnf -y install yum-utils 명령시 nothing to do 가 될수 있습니다.

아시다시피 이미 yum-utils 가 설치되었다는 의미이니 신경 쓰지 않으셔도 됩니다.

설치 확인방법은 아래 명령을 실행해주세요.

php –version
또는
php -v

호출하시면 아래와 같은 결과를 보실수 있습니다.

보이지 않는다면, PHP 설치가 제대로 되지 않은 것입니다.

마찬가지로 서버 실행시 자동 실행되게 추가합니다.

sudo systemctl enable php-fpm

PHP 를 실행합니다.

sudo systemctl start php-fpm

이제 nginx 와 php 를 연결하도록 하겠습니다.

centos7 과 centos8 이 여기서 조금 달라집니다.

저의 경우 centos8 설치용 nginx 와 php 의 설정이 조금 차이가 있었는데요.

아래의 명령으로 실행된 www.conf 의 문서 의 기존 centos7 에서는

listen = 127.0.0.1:9000 를 listen = /var/run/php-fpm/php-fpm.sock 수정했는데요.

centos8은 listen = 127.0.0.1:9000 게 있지도 않았고, listen = /var/run/php-fpm/php-fpm.sock 이렇게 있지도 않았습니다.

listen = /run/php-fpm/www.sock 게 있었는데요. 이는 수정 없이 사용하시면 되겠습니다.

그외는 centos7에서 와 같이

user = apache 를 user = nginx 로 변경해줍니다.

group = apache 로 되어 있는 group = nginx 로 변경합니다.

listen.owner = apache 를 listen.owner = nginx

listen.group = apache 를 listen.group = nginx 로 변경합니다.

centos7에서는 아래 구문이 주석 처리되어있었는데요.

centos8에서는 주석처리 되어 있지 않았습니다. 혹시 주석 처리되어 있다면, 아래와 같이 쌍반점 (雙半點) 또는 세미콜론 (semicolon)을 없애서 해제해주세요.
listen.mode = 0660

vi /etc/php-fpm.d/www.conf

저장하고 빠져 나옵니다.

php를 다시 실행해줍니다.

sudo systemctl restart php-fpm

그러면 PHP 가 제대로 구동되는지 확인해보기 위해, 호출될 url 경로를 먼저 확인하겠습니다.

보통 centos7 인 centos8 에서도 default.conf 를 이용해서 도메인을 추가하고, 또는 ip 의 서버내 연결 설정을 하는데요.

default.conf 의 경로는 /etc/nginx/conf.d/default.conf 이렇습니다.

default.conf 이 없다면, 추가해주세요.

vi /etc/nginx/conf.d/default.conf

다른 방법으로는 아래의 파일을 다운로드 받아 /etc/nginx/conf.d/ 에 삽입해줍니다.

centos7 이 centos8 로 오면서 변경된 점은 위 이미지 노란색 줄은 그어놓은 방식이 centos7 이고 아래 빨간색 줄을 그어놓은 방식이 centos8 방식입니다.

default.conf 까지 만들어졌다면, nginx 를 재시작 해줍니다.

systemctl restart nginx

제대로 연결이 됐는지 확인하기 위해 서버 호출시 보여질 페이지를 작성하겠습니다.

vi /usr/share/nginx/html/phpinfo.php

phpinfo.php 의 코드는

<?php
phpinfo();
?>

서버로 연결된 도메인/phpinfo.php 또는 ip/phpinfo.php 를 브라우져에서 호출합니다.

아래의 페이지와 같은 화면이 뜨면, nginx 와 php 역시 정상 구동되는 것입니다.

마지막으로 mariaDB 설치해보겠습니다.

sudo dnf -y install mariadb-server

mariadb 도 설치가 됐습니다.

centos8 일 때보다 mariadb 설치도 많이 간소화 됐습니다.

MariaDB 실행

sudo systemctl start mariadb

방화벽에 등록

sudo systemctl enable mariadb

MariaDB (mysql) 보안 설정

mysql_secure_installation

보안 설정(비밀 번호 변경)

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we’ll need the current
password for the root user. If you’ve just installed MariaDB, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): ## 처음 설정하는 경우라면 ENTER 로 넘어간다
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
You already have a root password set, so you can safely answer ‘n’.
Change the root password? [Y/n] y ## root 계정의 패스워드를 교체할것인지 물어본다
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
… Success!
Remove anonymous users? [Y/n] y ## anonymous 계정을 삭제할것인지 물어봄
… Success!
Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] n ## 외부에서 root 계정의 로그인을 허용할것인지 물어봄
… Success!
y default, MariaDB comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y ## privileges 테이블을 재시작할 것인지 물어봄
… Success!
Cleaning up…
All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

여기까지 하셨다면 mariadb 를 재실행해줍니다.

sudo systemctl restart mariadb

이상으로 포스팅을 마칩니다.

마치며, centos7 과 centos8 둘을 사용해본 바..

예전 윈도우 xp 에서 윈도우7 로 넘어가는 정도의 성능을 기대했지만, 그 정도는 아녔습니다.

mariadb 기본값 utf8 로 변경

vi /etc/my.cnf.d/client.cnf
[client]
default-character-set=utf8

vi /etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8

vi /etc/my.cnf.d/server.cnf
[mysqld]
collation-server = utf8_unicode_ci
init-connect=’SET NAMES utf8′
character-set-server = utf8
default-time-zone=’+9:00′

vi /etc/my.cnf
[mysqld]
sql_mode=”IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
default-time-zone=’+9:00′ // 기본 시간 변경

CentOS7 시간설정 및 Time Zone 변경
먼저 date 로 현재 시간을 확인한다. 이는 centos7, centos8 동일 하다.
현재 시간이 한국 시간이 아니라면, centos7은 아래대로 실행하고.
ls /usr/share/zoneinfo/Asia
mv /etc/localtime /etc/localtime_org
ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

centos8은 아래대로 실행하고.
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

실행이 완료됐다면, 다시 date 를 실행해 시간이 맞는지 확인해보자!

아래는 PHP 기본시간 변경 방법이다.

vi /etc/php.ini
date.timezone = Asia/Seoul

그 밖에 html 폴더에 nginx 사용 권한 주기

chown -R nginx:nginx /usr/share/nginx/html

그 밖에 session 폴더에 nginx 사용 권한 주기 – 이는 phpMyAdmin 사용시 필요하다.

chown -R nginx:nginx /var/lib/php/session

부록 MariaDB 기본 데이터 인코딩 타입을 utf8로 변경

Author: admin

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다