서버의 개인키 생성
# openssl genrsa -out KEY_FILE LENGTH
# openssl genrsa -out private.key 2048
CSR(Certificate Signing Request) 생성
# openssl req -new -key KEY_FILE -out CSR_FILE
# openssl req -new -key private.key -out cert.csr

CSR에 서명하여 인증서 발급(Self-Signed 인증서 발급)
# openssl x509 -req -signkey PRIVATE_KEY -in CSR_FILE -out CERTIFICATE_FILE
# openssl x509 -req -signkey private.key -in cert.csr -out cert.crt
발급 후.

# yum install mod_ssl[root@host1 ~]# cd /etc/httpd/conf.d/[root@host1 conf.d]# cp ssl.conf ssl.conf.bak[root@host1 conf.d]# vim ssl.conf

# systemctl restart httpd.service
# firewall-cmd --add-service=https
# firewall-cmd --add-service=https --permanent
방화벽 설정확인됐는지 확인 화면.

웹 컨텐츠
정적 웹 컨텐츠
웹 페이지 문서의 내용이 고정된 웹 문서로 웹 문서 요청시 웹 문서 원본 내용이 그대로 클라이언트에 제공되는 웹 컨텐츠
동적 웹 컨텐츠
웹 페이지 문서의 내용 중 서버 사이드 언어가 포함된 웹 문서로 웹 문서 요청시 서버 사이드 언어 코드가 서버에서 처리된 후 처리된 결과를 웹 문서에 포함하여 클라이언트에게 제공하는 웹 컨텐츠
서버 사이드 언어
클라이언트 사이드 언어
# yum install php
# systemctl restart httpd.service
# cd /var/www/html/
# vim phpinfo.php

데이터베이스(Database, DB)
데이터베이스의 주요 특징
데이터베이스의 분류
관계형 데이터베이스(Relational Database)
데이터를 테이블 형태로 표현하고, 테이블 간에 관계를 설정하여 데이터를 관리함.
예: Oracle, MySQL, MariaDB, Microsoft SQL Server
객체지향 데이터베이스(Object Database)
객체 지향 프로그래밍의 개념을 데이터베이스에 도입하여, 객체 간의 관계를 중심으로 데이터를 조직함
예: ObjectDB, db4o 등
데이터베이스 기본 용어 정리
Database (데이터베이스)
Table (테이블)
Entity (엔터티)
Row (행)
Column (열)
Field (필드)
Record (레코드)
Schema (스키마)
Schema의 특징:
스키마(Schema)의 종류:
SQL(Structured Query Language)
MariaDB 서비스 패키지 설치
# yum install mariadb-server mariadb
MariaDB 서비스 시작
# systemctl start mariadb.service
MariaDB 서비스 부팅시 활성화(영구설정)
# systemctl enable mariadb.service
방화벽에서 MariaDB(MySQL) 서비스 허용
# firewall-cmd --add-service=mysql
# firewall-cmd --add-service=mysql --permanent
(옵션) MariaDB(MySQL) 보안 강화 설정
# mysql_secure_installation
초기 설정시 localhost의 데이터베이스 서비스 접속
[root@host2 ~]# mysql -h localhost -u root
MariaDB [(none)]>
데이터베이스 목록 확인
MariaDB [(none)]> SHOW DATABASES
데이터베이스 생성
MariaDB [(none)]> CREATE DATABASE exampledb;
Query OK, 1 row affected (0.000 sec)


사용자에게 데이터베이스 사용 권한 부여
MariaDB [(none)]> GRANT ALL PRIVILEGES ON exampledb.* TO 'user'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
- 사용자 계정, 권한 설정을 즉시 반영

[test01@host2 ~]$ mysql -h localhost -u user -p
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> USE exampledb;

Database 생성
MariaDB [(none)]> CREATE DATABASE testdb01;


Database 삭제
MariaDB [(none)]> DROP DATABASE testdb01;
Database 목록 확인
MariaDB [(none)]> SHOW DATABASES;
데이터베이스 선택
MariaDB [(none)]> USE testdb01;
Database changed
MariaDB [testdb01]>
테이블 생성
MariaDB [testdb01]> CREATE TABLE phonebook (
-> no int,
-> name char(10),
-> phone char(15),
-> memo text
-> );
테이블 목록 확인
MariaDB [testdb01]> SHOW TABLES;
+--------------------+
| Tables_in_testdb01 |
+--------------------+
| phonebook |
+--------------------+
1 row in set (0.000 sec)
테이블 구조 확인
MariaDB [testdb01]> DESC phonebook;
MariaDB [testdb01]> DESCRIBE phonebook;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| no | int(11) | YES | | NULL | |
| name | char(10) | YES | | NULL | |
| phone | char(15) | YES | | NULL | |
| memo | text | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
4 rows in set (0.001 sec)
테이블 삭제
DROP TABLE 테이블;
테이블 데이터 전체 조회
SELECT 필드1, 필드2 FROM 테이블;
SELECT * FROM 테이블;

테이블 데이터를 조건을 지정하여 조회
SELECT * FROM 테이블 WHERE 조건;
테이블에 데이터 삽입
INSERT INTO 테이블 VALUES (값1, 값2);
테이블의 특정 필드를 지정하여 테이블에 데이터 삽입
INSERT INTO 테이블 (필드1, 필드2) VALUES (값1, 값2);

테이블의 전체 행 삭제
DELETE FROM phonebook;

테이블의 특정 조건에 해당하는 행 삭제
DELETE FROM 테이블 WHERE 조건;
테이블의 전체 행 수정
UPDATE 테이블 SET 필드1=값1, 필드2=값2;
테이블의 특정 조건에 해당하는 행 수정
UPDATE 테이블 SET 필드1=값1 WHERE 조건;
테이블 구조 변경 - 필드 추가
ALTER TABLE 테이블 ADD 필드1 데이터타입;
테이블 구조 변경 - 필드 삭제
ALTER TABLE 테이블 DROP 필드1;
테이블 구조 변경 - 필드 이름 변경
ALTER TABLE 테이블 CHANGE 필드1원래이름 필드1새이름 데이터타입
사용자 생성
CREATE USER '사용자이름'@'호스트' IDENTIFIED BY '비밀번호';

사용자 삭제
DROP USER '사용자이름'@'호스트';

권한 부여
GRANT 권한1, 권한2 ON 데이터베이스이름.테이블이름 TO '사용자이름'@'호스트';

권한 회수
REVOKE 권한1, 권한2 ON 데이터베이스이름.테이블이름 FROM '사용자이름'@'호스트';
패스워드 변경
SET PASSWORD FOR '사용자이름'@'호스트' = PASSWORD('새비밀번호');
ALTER USER '사용자이름'@'호스트' IDENTIFIED BY '새로운비밀번호';

DB 생성

적용

# vim /etc/my.cnf.d/mariadb-server.cnf

# systemctl restart mariadb.service
물리적인 방법
논리적인 방법
DBMS에 요청하여 데이터를 추출하는 방법으로 데이터베이스의 데이터는 백업이 되지만 데이터베이스 설정까지 백업되지는 않음.
데이터베이스에서 데이터를 추출하는 방식으로 데이터베이스의 데이터 사이즈가 큰 경우 백업 및 복원에 시간이 소요됨.
(1) 데이터베이스 백업
$ mysqldump [OPTION]... -u USER -p DATABASE > DATABASE_FILE.dump

(2) 데이터베이스 복원
$ mysql -u root -p DATABASE < DATABASE_FILE.dump

웹서버 구성
PHP, MySQL(MariaDB) 플러그인 설치 (php, php-mysqlnd)
# yum install php php-mysqlnd
웹서비스 방화벽 허용

MariaDB(MySQL) 서비스 구성
# yum install mariadb-server mariadb
# systemctl start mariadb.service
# systemctl enable mariadb.service
# firewall-cmd --add-service=mysql
# firewall-cmd --add-service=mysql --permanent
# mysql_secure_installation
WordPress 다운로드 및 설치
# cd /var/www/html
# vim index.html

# wget https://wordpress.org/latest.zip
# unzip latest.zip
# cd wordpress
# ls -l
# cp wp-config-sample.php wp-config.php
# vim wp-config.php

#systemctl restart httpd.service