don't stop believing

LAMP 설치 (on CentOS 7) 본문

Tools/WordPress

LAMP 설치 (on CentOS 7)

Tongchun 2019. 3. 19. 17:38

WordPress를 설치하고 홈페이지 관리를 해야 합니다.

WordPress를 실행하려면 LAMP가 필요합니다.


  • L: Linux (이번 wordpress는 CentOS 7에서 진행합니다.)
  • A: Apache 웹 서버
  • M: MySQL 또는 MariaDB
  • P: PHP

LAMP부터 설치하고 WordPress 설치로 넘어가겠습니다.


Linux를 확인합니다.

CentOS에 접속했다면 버전부터 확인하고 가겠습니다.

$ cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

CentOS 7인것을 확인 했습니다.

이제 yum을 update 해줍니다.

$ sudo yum update

만약 처음 CentOS를 설치하고 sudo 명령을 했을때 sudoer가 아니라고 메시지가 나온다면 아래 링크를 확인해 주세요.

https://dejavuqa.tistory.com/282


Apache 설치 입니다.

yum을 이용해 간단히 설치해 줍니다. 

$ sudo yum install httpd

apache(httpd)를 설치했다면 실행해 줍니다.

$ sudo systemctl start httpd.service

서버가 재시작 되더라도 apache(httpd)가 자동 실행되도록 설정합니다.

$ sudo systemctl enable httpd.service

apache(httpd)가 정상적으로 실행 중인지도 확인해 봅니다.

$ sudo systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 화 2019-03-19 20:35:30 EDT; 2min 39s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 15199 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─15199 /usr/sbin/httpd -DFOREGROUND
           ├─15200 /usr/sbin/httpd -DFOREGROUND
           ├─15201 /usr/sbin/httpd -DFOREGROUND
           ├─15202 /usr/sbin/httpd -DFOREGROUND
           ├─15203 /usr/sbin/httpd -DFOREGROUND
           └─15204 /usr/sbin/httpd -DFOREGROUND

 3월 19 20:35:30 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
 3월 19 20:35:30 localhost.localdomain httpd[15199]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using lo... message
 3월 19 20:35:30 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

apache의 default page도 확인해 볼텐데요. CentOS에는 기본으로 방화벽이 실행되고 있습니다.

방화벽 실행 여부를 확인하려면 systemctl status firewalld로 확인하시면 됩니다.

$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 화 2019-03-19 20:47:26 EDT; 1min 36s ago
     Docs: man:firewalld(1)
 Main PID: 15641 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─15641 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

 3월 19 20:47:26 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
 3월 19 20:47:26 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.

방화벽에서 web 포트를 추가하거나 서비스를 등록해야 합니다.

간단하게는 아래와 같이 포드를 등록할 수 있습니다.

sudo firewall-cmd --zone=public --add-port=80/tcp


저는 새로운 존을 만들고 서비스를 등록해 보겠습니다.


1. 방화벽에 존(webserver)을 추가합니다.

$ sudo firewall-cmd --permanent --new-zone=webserver

2. 방화벽을 재시작(reload) 합니다.

$ sudo firewall-cmd --reload

3. 추가한 존(webserver)을 활성화 합니다.

$ sudo firewall-cmd --set-default-zone=webserver

4. 활성화한 존(webserver)에 서비스를 추가합니다. 

default-zone을 webserver로 지정한다면 서버 연결을 위해 ssh 서비스도 추가해 줍니다.

$ sudo firewall-cmd --permanent --zone=webserver --add-service=http
$ sudo firewall-cmd --permanent --zone=webserver --add-service=https
$ sudo firewall-cmd --permanent --zone=webserver --add-service=ssh

5. 방화벽을 다시 재시작(reload) 합니다.

$ sudo firewall-cmd --reload


이제 apache도 설치했고 방화벽도 열었으니 apache의 default page를 확인합니다.

브라우저에서 서버의 IP로 접속하면 됩니다.


MariaDB를 설치합니다.

예전에는 WordPress를 설치할 때 MySQL을 설치했는데 최근에는 MariaDB로 설치를 안내하고 있습니다.

MariaDB는 MySQL의 source에서 분리되어(forked) 만들어진 DB입니다. MariaDB는 Open Source Application으로 누구든 사용할 수 있습니다.

MySQL에서 분리된 DB이기 때문에 기본적인 명령이 MySQL과 동일합니다.


MariaDB를 설치합니다.

$ sudo yum install mariadb-server mariadb

설치가 되었다면 시작해 줍니다.

$ sudo systemctl start mariadb


그리고 서버가 재시작 되어도 자동 실행되도록 해줍니다.

$ sudo systemctl enable mariadb

mariadb의 실행 상태도 확인해 봅니다.

$ sudo systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[tongchun@localhost ~]$ sudo systemctl status mariadb
● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: active (running) since 화 2019-03-19 22:34:18 EDT; 31s ago
 Main PID: 21574 (mysqld_safe)
   CGroup: /system.slice/mariadb.service
           ├─21574 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
           └─21736 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log ...

 3월 19 22:34:16 localhost.localdomain mariadb-prepare-db-dir[21492]: MySQL manual for more instructions.
 3월 19 22:34:16 localhost.localdomain mariadb-prepare-db-dir[21492]: Please report any problems at http://mariadb.org/jira
 3월 19 22:34:16 localhost.localdomain mariadb-prepare-db-dir[21492]: The latest information about MariaDB is available at http://mariadb.org/.
 3월 19 22:34:16 localhost.localdomain mariadb-prepare-db-dir[21492]: You can find additional information about the MySQL part at:
 3월 19 22:34:16 localhost.localdomain mariadb-prepare-db-dir[21492]: http://dev.mysql.com
 3월 19 22:34:16 localhost.localdomain mariadb-prepare-db-dir[21492]: Consider joining MariaDB's strong and vibrant community:
 3월 19 22:34:16 localhost.localdomain mariadb-prepare-db-dir[21492]: https://mariadb.org/get-involved/
 3월 19 22:34:16 localhost.localdomain mysqld_safe[21574]: 190319 22:34:16 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
 3월 19 22:34:16 localhost.localdomain mysqld_safe[21574]: 190319 22:34:16 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
 3월 19 22:34:18 localhost.localdomain systemd[1]: Started MariaDB database server.

이번에는 MariaDB에 secure 설정을 해줍니다.

mariadb의 기본 설정은 보안 설정이 되어 있지 않습니다. 보안 이라고 거창한 건 아니고 root 계정에 비번을 넣을 건지, 외부에서 root 권한으로 접속할 수 있게 할건지, test database를 지울 건지 등에 대한 기본적인 설정입니다.

참고로, mariadb는 mysql에서 forked 되었기 때문에 mysql과 거의 같습니다. 아래와 같이 명령어에도 대놓고 mysql이 있습니다.

$ sudo mysql_secure_installation

위 명령을 실행하면 몇가지 질문을 하고 설정을 하게 됩니다.


처음 나오는 질문 입니다.

Enter current password for root (enter for none): 

첫 설정이기 때문에 mariadb의 root 계정의 비밀번호는 없습니다. 그냥 엔터를 칩니다.


mariadb root 계정의 비밀번호를 만들 건지 묻습니다.

Set root password? [Y/n] Y

만들어 줍니다.


New password: 

Re-enter new password: 

새로 추가할 root 계정의 비번을 등록합니다.


이번엔 anonymous 계정을 제거할 건지 묻습니다.

Remove anonymous users? [Y/n] y

인증된 계정만 접속할 수 있도록 anonymous 계정은 삭제합니다.


mariadb root 계정이 외부에서 접속하지 못하게 할 건지 묻습니다.

Disallow root login remotely? [Y/n] y

보통은 root 계정은 관리용 계정으로만 사용하고 wordpress 처럼 외부 서버와 연결 할 때는 해당 계정을 만들어서 사용합니다.


테스트용 database를 삭제할 건지 묻습니다.

Remove test database and access to it? [Y/n] y

삭제해 줍니다.


설정을 바로 적용할지 묻습니다.

Reload privilege tables now? [Y/n] y

바로 적용해 줍니다.


PHP를 설치합니다.

php는 다목적 서버 스크립트 언어(general-purpose server-side scripting language)입니다. php와 함께 php에서 mariadb(mysql)에 연결할 수 있는 드라이버도 함께 설치해 줍니다.

$ sudo yum install php php-mysql

php를 설치하면 php가 시작된 상태가 됩니다. 다시 재시작해 줍니다.

$ sudo systemctl restart httpd.service

마찬가지로 linux 서버가 재시작하더라도 php가 실행되도록 설정합니다.

$ sudo systemctl enable httpd.service

php도 잘 실행되고 있는지 확인해 봐야죠.

$ sudo systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 화 2019-03-19 23:09:11 EDT; 2min 4s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 23577 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─23577 /usr/sbin/httpd -DFOREGROUND
           ├─23579 /usr/sbin/httpd -DFOREGROUND
           ├─23580 /usr/sbin/httpd -DFOREGROUND
           ├─23581 /usr/sbin/httpd -DFOREGROUND
           ├─23582 /usr/sbin/httpd -DFOREGROUND
           └─23583 /usr/sbin/httpd -DFOREGROUND

 3월 19 23:09:11 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
 3월 19 23:09:11 localhost.localdomain httpd[23577]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using lo... message
 3월 19 23:09:11 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

php가 정상적으로 설치되었는지 php 설정 정보들을 웹 페이지로 확인해 보겠습니다.

apache의 기본 web 디렉토리인 /var/www/html/ 에 info.php라고 파일을 만들어 줍니다.

vim을 사용해 만들어 보겠습니다.

$ sudo vim /var/www/html/info.php

info.php 파일이 열리면 안에 아래와 같이 작성합니다.

<?php 
phpinfo(); 
?>

php에서 phpinfo()함수는 php의 모든 설정 정보를 html파일로 만들어 보여줍니다.

info.php파일을 저장하고 브라우저에서 http://<서버 ip>/info.php로 호출해 봅니다.

저는 서버 ip가 10.10.5.0입니다.

info.php 페이지 중간 쯤 보면 mysql 정보가 보입니다. 5.5.60-MariaDB로 나오고 있습니다.

php와 연결할 준비가 되었다고 볼수 있습니다.

이와 하는거 phpMyAdmin까지 설치해 보겠습니다. 

phpMyAdmin은 apache, php와 연동해 MySQL(MariaDB)를 손쉽게 관리할 수 있게 하는 툴입니다.

phpMyAdmin은 CentOS 7의 기본 Repository에는 없습니다. 그래서 EPEL Repository가 필요 합니다.

$ sudo yum install epel-release

EPEL Repository가 설치되었으면 phpMyAdmin을 설치해 줍니다.

$ sudo yum install phpmyadmin

phpMyAdmin은 관리자 페이지이기 때문에 지정된 ip에서만 접속할 수 있도록 해야 합니다.

config 파일을 열고 <RequireAny> 부분을 수정해 줘야 합니다.

아래와 같이 phpMyAdmin의 config 파일을 엽니다.

$ sudo vim /etc/httpd/conf.d/phpMyAdmin.conf

config 파일 윗쪽에 있는 Require ip 127.0.0.1에 접속하려는 ip를 추가해 줍니다.

저는 현제 10.10.5.104를 사용하고 있습니다. 구분자는 공백입니다. 아래 처럼 ip를 추가하고 config 파일을 수정합니다.

<IfModule mod_authz_core.c>
	# Apache 2.4
	<RequireAny>
		Require ip 127.0.0.1 10.10.5.104
		Require ip ::1
	</RequireAny>
</IfModule>


이제 브라우저를 열고 /phpmyadmin 경로로 접속합니다.

Username과 Password에는 MariaDB의 root 계정과 비번을 입력하면 됩니다.

앞서 만들었던 root 계정과 비번을 입력합니다.

DB 관리를 위한 메뉴들이 잘 보이네요.


여기까지 CentOS7에 LAMP 설치였습니다.


'Tools > WordPress' 카테고리의 다른 글

WordPress 설치 (on CentOS 7)  (4) 2019.03.20
Comments