Rocky Linux - 워드프레스[WordPress] 설치하기

    WordPress란?

    자유 오픈 소스 콘텐츠 관리 시스템(CMS)으로 PHP로 작성되어 있으며, MariaDB(MySQL)을 기반으로 구축되는 소프트웨어입니다. 최초에는 블로그 위주였으나, 전 세계 웹사이트의 40% 이상 사용률이 돌파하면서 멀티 사이트, 소셜 네트워크, 커뮤니티 포럼, 온라인 상점 등 여러 가지 방면으로 이용하고 있습니다. 그만큼 사용자에게 커스텀하기 좋은 유연성 있는 방향으로 발전되어 왔다는 것을 알 수 있습니다. 워드프레스는 일반 공중 라이선스(GPLv2 이상)를 따라가고 있으며 오픈 소스를 다운로드하여 개인 클라우드 서버에 설치하여 운영하거나 공식 사이트에서 무료로 시작하여 성장에 따라 일정 비용을 내고 호스팅 서비스를 받을 수도 있습니다.

    공식 홈페이지 https://wordpress.org/
    공식 홈페이지(호스팅) https://wordpress.com/ko

    [설치환경 및 준비물]

    릴리즈 설치 테스트 : 2021-11-11

    □ VMware Workstation 가상화에서 Rocky Linux 8.4 OS 준비 [포스팅 참고]
    □ [root@localhost ~]# dnf update [※ OS 설치 후 기본 패키지 최신 업데이트]
    □ [root@localhost ~]# cat /etc/selinux/config | grep SELINUX  [보안 설정]
    SELINUX=disabled  [빠른 테스트를 위해 비활성화, 재시작 필요]

     

    □ WordPress 현재 릴리스 버전으로 요구하는 사항

    WordPress 5.8.2  [2021-11-11 기준]
    Apache(Httpd) 또는 Nginx 버전은 언급하지 않음
    PHP 7.4.X 이상 [7.3.X 이하 설치시 에러남]
    MariaDB 또는 MySQL 10.1 이상 / 5.6 이상

     [APM] Apache, PHP, MariaDB, WordPress Install Guide 시작

    ◇ dnf(패키지 자동 설치)로 진행할 경우는 설치 순서는 상관없습니다만, 소스로 설치할 경우는 연동 편의성을 위해 일반적으로는 Apache, MariaDB, PHP 설치 순서로 진행한다는 것만 기억하시면 됩니다.


    STEP01 → 아파치[Apache] 설치

    [root@localhost ~]# dnf install httpd

     

    STEP02 → 마리아[Maria DB] 설치

    [root@localhost ~]# dnf install mariadb-server mariadb

     

    STEP03 → PHP 설치[7.4.X 이상]

    사용 가능한 PHP 버전 확인
    [root@localhost ~]# dnf module list php

    PHP [7.4.X] 모듈을 사용하기 위한 활성화 설정

    [root@localhost ~]# dnf module enable php:7.4

    PHP [7.4.X] 설치
    [root@localhost ~]# dnf install php

    WordPress에 필요한 PHP-모듈 미리 설치

    [root@localhost ~]# dnf install php-gd php-soap php-intl php-mysqlnd php-pdo php-pecl-zip php-fpm php-opcache php-curl php-zip php-xmlrpc wget

    설치된 PHP 모듈 확인
    [root@localhost ~]# php -m

     

    STEP04 → 설치 버전 확인

    [root@localhost ~]# httpd -v

    Server version: Apache/2.4.37 (rocky)
    Server built:   Nov 15 2021 03:12:26

    [root@localhost ~]# php -v

    PHP 7.4.19 (cli) (built: May  4 2021 11:06:37) ( NTS )
    Copyright (c) The PHP Group
    Zend Engine v3.4.0, Copyright (c) Zend Technologies
        with Zend OPcache v7.4.19, Copyright (c), by Zend Technologies

    [root@localhost ~]# mysql -V  [옵션 대문자]
    mysql  Ver 15.1 Distrib 10.3.28-MariaDB, for Linux (x86_64) using readline 5.1

    ■ 여기서부터는 [APM] Apache, PHP, MariaDB config(설정) 및 구동


    STEP05 → 아파치(Apache) 및 PHP 설정 및 구동

    □ 5-1 기본 설정[수정 후 저장]
    [root@localhost ~]# vi /etc/httpd/conf/httpd.conf

         98 #ServerName www.example.com:80
         99 ServerName 192.168.150.149:80      [도메인 또는 해당 서버 IP 입력 추가]

     

        167 <IfModule dir_module>
        168     DirectoryIndex index.html index.htm index.php  [일부 추가]
        169 </IfModule>


        287     AddType application/x-compress .Z
        288     AddType application/x-gzip .gz .tgz
        289     AddType application/x-httpd-php .php  [라인 추가]
        290     AddType application/x-httpd-phps .phps  [라인 추가]

    □ 5-2 PHP-FPM 기본 설정[수정 후 저장]

    [root@localhost ~]# vi /etc/php-fpm.d/www.conf

         52 ; When POSIX Access Control Lists are supported you can set them using
         53 ; these options, value is a comma separated list of user/group names.
         54 ; When set, listen.owner and listen.group are ignored
         55 listen.acl_users = apache,nginx  [유지]
         56 listen.acl_groups = apache  [라인 추가]

    □ 5-3 아파치/PHP-FPM 시작 및 프로세스 구동 확인[service httpd start(stop) 명령어 사용 가능]
    [root@localhost ~]# systemctl start httpd  [시작]
    [root@localhost ~]# systemctl start php-fpm  [시작]

     

    [root@localhost ~]# systemctl enable httpd php-fpm  [부팅 후 자동 실행 설정(비활성화 시 disable)]
    Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
    Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

     

    [root@localhost ~]# ps -ef |egrep "httpd|www"  [아파치/PHP-FPM 구동 확인]

    □ 5-4 방화벽 설정 및 적용
    [root@localhost ~]# firewall-cmd --permanent --add-port=80/tcp  [HTTP 80번 포트 추가]
    [root@localhost ~]# firewall-cmd --reload  [적용]
    [root@localhost ~]# firewall-cmd --list-all  [추가된 포트 확인]
      ports: 80/tcp

    □ 5-5 웹 구동 확인 테스트[스크린샷 참고]

    □ 5-6 PHP 적용 확인

    [root@localhost ~]# cd /var/www/html/

    해당 경로에서 PHP의 정보를 보여주는 함수 파일 생성 후 저장

    [root@localhost html]# vi /var/www/html/phpinfo.php


    <?php phpinfo();?>      [라인 추가]

    [root@localhost html]# ls

    phpinfo.php

    □ 5-7 PHP 웹 연동 확인 테스트[스크린샷 참고]

     

    STEP06 → MariaDB 구동 및 설정

    □ 6-1 MariaDB 구동

    [root@localhost ~]# systemctl start mariadb

    부팅 시 자동 시작 활성화
    [root@localhost ~]# systemctl enable mariadb
    Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
    Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
    Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

    구동 확인
    [root@localhost ~]# ps -ef | grep mysql
    mysql    41925     1  0 11월18 ?      00:00:00 /usr/libexec/mysqld --basedir=/usr

    □ 6-2 Maria DB 기본 설정 [DB가 구동된 상태에서 진행 가능]

    [root@localhost ~]# mysql_secure_installation

     

    Enter current password for root (enter for none): [패스워드가 없기 때문에 엔터]
    ◇ 이 부분은 버전에 따라 안 나올 수 있습니다.
    Switch to unix_socket authentication [Y/n] Y    [MariaDB 실행 시 통신 소켓 생성 여부? Y 엔터]
    Change the root password? [Y/n] Y   [DB ROOT 패스워드 설정할 것인가? Y 엔터]
    New password:  패스워드 입력
    Re-enter new password:  재확인 패스워드 입력
    Remove anonymous users? [Y/n] Y  [익명의 접근을 막을 것인지? 보안을 위해 Y 엔터]
    Disallow root login remotely? [Y/n] Y  [DB ROOT 원격을 막을 것인지? 보안을 위해 Y 엔터]
    Remove test database and access to it? [Y/n] Y [Test 용으로 생성된 데이터베이스를 삭제할 것인가? Y 엔터]
    Reload privilege tables now? [Y/n] Y [현재 설정한 값을 적용할 것인지? 당연히 Y 엔터]
    Thanks for using MariaDB! [설정 완료]

    □ 6-3 MariaDB 접속 및 WordPress 데이터베이스 생성

    ◇ 데이터베이스 이름이나 유저ID/패스워드는 임의로 설정

     

    [root@localhost mysql]# mysql -u root -p  [DB 접속]
    Enter password: 패스워드 입력

     

    WordPrees 데이터베이스 생성 : CREATE DATABASE 데이터베이스 이름;

    MariaDB [(none)]> CREATE DATABASE wpdb;
    Query OK, 1 row affected (0.000 sec)

     

    접근 유저 ID 및 패스워드 생성 : CREATE USER '유저 ID'@'localhost' IDENTIFIED BY '패스워드';

    MariaDB [(none)]> CREATE USER 'foxydog'@'localhost' IDENTIFIED BY 'test1234';
    Query OK, 0 rows affected (0.037 sec)

     

    접근 권한 설정[모든 권한] : GRANT ALL ON 데이터베이스 이름.* TO '유저 ID'@'localhost';

    MariaDB [(none)]> GRANT ALL ON wpdb.* TO 'foxydog'@'localhost';
    Query OK, 0 rows affected (0.000 sec)

     

    ◇ 저장 종료

    MariaDB [(none)]> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.000 sec)

    MariaDB [(none)]> EXIT;
    Bye

     

    STEP07 → WordPress 다운로드

    ◇ 공식 홈페이지 다운로드 : https://wordpress.org/download/

    [root@localhost ~]# wget https://wordpress.org/latest.tar.gz -O wordpress.tar.gz  [wget 다운로드]

    2021-11-19 00:41:36 (8.77 MB/s) - ‘wordpress.tar.gz’ saved [15085301/15085301]

     

    [root@localhost ~]# tar -xvf wordpress.tar.gz  [압축 해제]

     

    [root@localhost ~]# cp -R wordpress /var/www/html/  [웹 루트 경로에 복사 또는 이동]

     

    [root@localhost ~]# chown -R apache:apache /var/www/html/wordpress  [유저/그룹 권한 설정]

    [root@localhost ~]# chmod -R 775 /var/www/html/wordpress  [폴더 권한 설정]

     

    [root@localhost ~]# ls -al /var/www/html/ | grep wordpress  [폴더 경로 및 권한 확인]
    drwxrwxr-x [775 확인] 5 apache apache [유저/그룹 확인] 4096 11월 19 00:42 wordpress

     

    STEP08 → WordPress용 Apache 가상 호스트 구성 및 적용

    [root@localhost ~]# vim /etc/httpd/conf.d/wordpress.conf [파일 생성 후 저장]

    <VirtualHost *:80> [시작]
    ServerName 도메인 호스트 주소 또는 서버 IP
    ServerAdmin foxydog@localhost
    DocumentRoot /var/www/html/wordpress

    <Directory "/var/www/html/wordpress">
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
    </Directory>

    ErrorLog /etc/httpd/logs/wordpress_error.log
    CustomLog /etc/httpd/logs/wordpress_access.log common
    </VirtualHost> [끝]

    [root@localhost ~]# systemctl restart httpd  [재시작 적용]

     

    [root@localhost ~]# systemctl status httpd | grep active  [구동 확인]
       Active: active (running) since Fri 2021-11-19 01:06:06 EST; 39s ago

     

    STEP09 → 브라우저에서 WordPress 설정 및 설치[스크린샷 순서대로 진행]

    http://서버IP/ 입력


     

    설치하고 여러 가지 메뉴를 확인해보니 정말 간단하게 테마나 플러그인 등을 쉽게 적용할 수 있도록 인터페이스 개발이 잘 되어 있습니다. 웹 개발자로 공부하시는 분들은 개인 PC 가상 서버나 클라우드 서버에 업로드 설치하여 연습하면 좋을 것으로 보입니다.

    Designed by JB FACTORY