워드프레스(wordpress)를 이용한 웹 서버 구축 실습

sso·2025년 4월 7일
0

리눅스 서버

목록 보기
21/40

1. 워드프레스를 이용한 웹 서버 구축 실습

1-1. LAMP?

L inux
A pache
M ariaDB
P HP, Java, Python

LAMP - 리눅스에서 웹 만들기 위한 기본 구조 3Tier

1-2. 루프백ip 127.0.0.1?

루프백IP는 네트워크 상에서 자신을 나타내는 가상주소임

1-3. LAMP 스택 설치 (웹 서버 기본 구축을 위한 설치)

1. 웹 서버 설치

dnf -y install httpd

2. 웹 서비스 데몬 구동 및 실행

systemctl --now enable httpd

3. php 설치

dnf -y install php

3-1. php 버전 확인

php -v

php는 웹서버에 연동되어 작동하므로 별도로 켜지지 않음

4. Maria DB 설치

dnf -y install mariadb-server
dnf -y install mariadb (클라이언트용)

5. maria db 데몬 구동 및 실행

systemctl --now enable mariadb

6. 웹 서버의 루트 디렉터리

cd /var/www/html

7. Maria DB 버전 확인

mysql -v

호환성을 위해 mysql 명령어를 사용함

8. 워드 프로세스 다운로드

윈도우에서 다운로드 링크를 가지고 리눅스 터미널에서 curl -O 를 사용하여 설치

curl -O https://ko.wordpress.org/latest-ko_KR.zip

8-1. 리눅스에서 워드 프로세서 zip 압축 해제

unzip -q latest-ko_KR.zip

9. 외부에서 웹 서버 사용시 root가 아닌 특정 사용자로 맵핑

vi /etc/httpd/conf/httpd.conf

:set nu에서 62번째 줄부터 보면 그룹 유저 ㅇ쩌구저쩌구 어쩌라구저쩌라구 우짤저짤래미

10. 아파치 유저 정보 확인

cat /etc/passwd | grep apache

11. wordpress 디렉터리에 일괄적으로 apache 권한 적용

chown -R apache.apache wordpress

12. 방화벽을 개방하여 외부에서 접근 허용

외부에서 진입 시 /var/www/html을 확인함
외부에서 디렉터리로 진입할 때는 /var/www/html/wordpress로 접근해야함
/var/www/html은 ip, 주소로 대체가 가능함
때문에 127.0.0.1/wordpress로 입력 시 접근 해야함

firewall-cmd --add-service=http --permanent
firewall-cmd --reload

나오는건 보이지만 php 설치 후 웹서버를 재시작하지 않으면 php가 적용이 안된 상태로 보임

13. 웹서버 재시작

systemctl restart httpd

14. php-mysqli 설치, http 재시작

dnf -y install php-mysqli
systemctl restart httpd

웹사이드 구동 오류 발생
php 구동 모듈 필요

15. php 구동 모듈 json 설치, 웹서버 재시작

dnf -y install php-json
systemctl restart httpd

15-1. PHP 모든 모듈 설치

dnf -y install php*

현재는 json을 설치하는것으로 해결하였으므로 모든 모듈은 설치하지 않고 필요한 모듈만 찾아서 설치하도록 하겠음

16. 마리아db는 설치하였으므로 데이터베이스 생성

17. mysql로 db관리 도구 진입

mysql

  • CREATE DATABASE wpdb;

18. db 유저 생성, 권한 부여

CREATE USER wpuser@localhost IDENTIFIED BY '1234';

사용자 이름 뒤에 사용자가 접속될 위치를 지정함
identified로 비밀번호 설정
따옴표 폰트에 따라 오류가 발생 가능함

GRANT ALL ON wpdb.* TO wpuser@localhost;

19. 웹에서 wordpress 설정

웹서버 = db서버가 같으므로 호스트는 local로 설정해도됨

2. 실습

Server B 초기화 후 작업

LAMP 스택을 구성하고 wordpress 설치 후 직접 혹은 상대방에게 접속하여 페이지 확인 가능하게 구성

dnf -y install unzip httpd mariadb-server php*
systemctl --now enable httpd
systemctl --now enable mariadb
cd /var/www/html
curl -O https://ko.wordpress.org/latest-ko_KR.zip
unzip -q latest-ko_KR.zip

chown -R apache.apache wordpress

firewall-cmd --add-service=http --permanent
firewall-cmd --reload

mysql

  • CREATE DATABASE wpdb;
    CREATE USER wpuser1@localhost IDENTIFIED BY '1234';
    GRANT ALL ON wpdb.* TO wpuser1@localhost;

  • 192.168.10.111.200/wordpress

2-1. 웹은 서버 B, DB는 서버 A에 있을 경우

Server B

dnf -y install unzip httpd php*
systemctl --now enable httpd
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
cd /var/www/html
curl -O https://ko.wordpress.org/latest-ko_KR.zip
unzip -q latest-ko_KR.zip
chown -R apache.apache wordpress

Server A

dnf -y install mariadb-server
systemctl --now enable mariadb

mysql

  • CREATE DATABASE wpdb;
    GRANT ALL ON wpdb.* TO wpuser1@192.68.111.200 IDENTIFIED BY '1234';
    (어디에서 db에 접근할 수 있는지 해당 ip를 적는것으로 192.168.111.200 - Server B에서 해당 DB에 접근할 수 있다는 의미)

mariadb(mysql)은 CREATE USER를 하지 않고 GRANT 만으로 유저 생성이 가능함

GRANT ALL ON wpdb.* TO wpuser1@192.68.111.200 IDENTIFIED BY '1234';

DB 확인

SHOW DATABASES;

USER 확인

SELECT user, host FROM mysql.user;

wordpress에서 db정보를 직접 입력하지 않고 wp-config-sample.php를 수정하여 db연결하여 사용하는 법

cd /var/www/html/wordpress/

wp-config-sample.php를 복사하여 wp-config.php로 생성

cp -p wp-config-sample.php wp-config.php
vi wp-config.php

gpt에게 내 워드프레스 캡처해서 만들라고 한 다음에 인스톨 파일을 압축해제해서 모바x텀에다가 집어넣기
그 후에 웹에서 192.168.111.200/install.zip으로 집어넣은 파일 웹페이지를 실행하면 됨

3. 기타 명령어

3-1. 네트워크 소켓(ip+포트) 정보 확인 명령어

ss -ntlp

n 숫자 형식으로 출력
t TCP 소켓 출력
l Listening 상태 출력
p 소켓 관련 프로세스 출력

소켓(소켓 adress) -> IP + 포트

웹서버는 포트번호 80

다른 사람의 웹으로 접속 시에는 10.0.2.191:80 으로 입력해야 하지만 웹에서는 생략해도됨

mysqld(maria db)의 포트번호가 3306임을 알 수 있음

3-2. 방화벽 리스트 확인 명령어

firewall-cmd --list-all

3-3. maria db (mysql) 내에서 사용하는 명령어

1. DB 확인 명령어

SHOW DATABASES;

2. USER 확인 명령어

SELECT user, host FROM mysql.user;

profile
오늘도 하나씩 해결해 나가자!

0개의 댓글