DB
- 데이터베이스 : 여러 사람에 의해 공유되어 사용할 목적으로 통합하여 관리되는 데이터의 집합
- 파일 DB는 여러가지 문제가 있어 대용량 데이터에는 사용하지 않는다 (가벼운 파일에는 SQLite를 쓰긴함)
- DBMS : 데이터베이스 관리 시스템
- MYSQL -> Maria DB
- MS SQL -> SQL SERVER
- Oracle DB
- mongo DB
- postgresql
- 관계형 DB(RDB) - RDBMS가 관리
-> 데이터를 로우(row: 행)와 컬럼(column: 열)이라는 일종의 표 형태(테이블)로 저장한다.
-> SQL : 관계형 데이터베이스를 이용하기 위한 표준 쿼리 언어, 구조화된 질의어, DB에서 정보를 얻거나 조작하거나, 갱신하는 등의 역할을 하는 쿼리 언어, DB와 소통하는 언어
데이터 : 하나하나의 자료들
테이블 : 데이터가 표로 만들어진 것
데이터베이스 : 테이블이 저장된 것
행, 로우, 레코드 : 테이블의 가로, 이름이 없다.
열, 컬럼, 필드 : 테이블의 세로, 이름이 있다. 데이터 타입이 설정되어 있다(문자, 숫자 등등)
데이터 형의 종류
VARCHAR(n) : 가변 길이 문자열
CHAR(n) : 고정 길이 문자열
INT : 정수형 숫자
FLOAT : 실수형 숫자
DATE : 날짜를 저장함
TIME : 시간을 저장함
DB서버 구축
server 측
- yum -y install mariadb mariadb-server : mariadb설치
- systemctl start mariadb : 시작
- systemctl enable mariadb : 활성화
- firewall-cmd --add-service=mysql -- permanent : 외부에서 클라이언트가 접속 가능하게 함
- firewall-cmd --reload
- mysql_secure_installation : 초기 DB 보안 설정
- mariadb 실행 : mysql -u root -p -> 비밀번호 입력
- show databases; : 데이터베이스 보기
원격에서 접속가능한 계정만들기
- use mysql;
- SELECT user,host FROM user WHERE user NOT LIKE '';
- GRANT ALL PRIVILEGES ON '별'.'별' TO test@'10.0.2.%' IDENTIFIED BY '1234';
-> 모든 DB의 모든 테이블의 권한을 가진 test (슈퍼계정)을 만든다
📒 '별'.'별' = 모든 DB의 모든 TABLE
💡 db안에서 셸 명령어 입력 : system ~
client 측
- yum -y install mariadb
- mysql -h 10.0.2.15 -u test -p : 외부에서 client가 서버의 DB로 원격 접속
-- 서버측 DB구축 --
<데이터베이스 관련 SQL>
- create database 데이터베이스 이름 : DB생성
-> ex) create database member_db
- drop database 데이터베이스 이름 : DB삭제
-> ex) drop database member_db
- USE DB이름 : 데이터베이스 사용
-> ex) use member_db
- show databases : DB보기
<테이블 관련 SQL>
- show tables
- CREATE TABLE 이름 (스펙........)

- table 정보보기 : describe 테이블 이름, explain 테이블 이름
- drop table 테이블 이름 : 테이블 삭제
- alter table 테이블 이름 옵션~ : 테이블 안에 값 변경
- alter table [테이블 이름] add [칼럼명][타입]
- ex) ALTER TABLE member ADD COLUMN memberidx INT
<테이블 레코드 삽입/삭제/수정/조회>
-
insert into [테이블이름] values(값1,값2,...) : 레코드 삽입
-> ex) insert into member values ('kim','김철수','35','서울');
-
select 필드이름1,필드이름2.. from 테이블이름 where 조건
: 테이블 조회
-> ex) select '별' from member : 테이블 모든 값 보기
-> ex) select '별' from member where id='kim'
-
UPDATE [테이블이름] set 필드이름1 = 수정값,
필드이름2 = 수정값... where <필터링 조건> : 테이블 값 수정
-> ex) update member set age=45, address='대구' where name='조인영';
-
delete from <table이름> where <필터링 조건>
: 테이블 값 삭제
-> ex) delete from member where id='hong'
📒 select from member order by age : 나이로 오름차순 정렬
📒 select from member order by age desc : 나이로 내림차순 정렬
웹 서비스
- 클라이언트와 웹은 통신 프로토콜 http/80로 통신한다
- 과거에는 웹이 html, image, css같은 정적컨텐츠를 가지고 있다가 클라이언트가 요청하면 보여주는 식이였다
- 현재는 웹 서버를 php, jsp, asp, python같은 언어를 이용해 동적 어플리케이션으로 만들어 클라이언트가 인자(파라미터)값을 주면 웹 서버에서 계산을 통해 결과값을 클라이언트에게 반환한다
- 3계층 구조 : 클라이언트 -> 프론트엔드 - 백엔드 - DB
= 클라이언트 -> Web - Was - DB
xe게시판 구축
LAMP
- L : LINUX
- A : APACHE -> nginx로 가는 추세
- M : MARIADB(MYSQL)
- P : PHP -> jsp ,node, js, python로 가는 추세
장점 : 오픈소스, 쉬운데 강력한 웹페이지 생성 가능
LAMP관련 자료
<Apache 웹 서버 설치 및 접속>
- yum -y install httpd
- systemctl start httpd
- systemctl enable httpd
- firewall-cmd --add-service=http --permanent
- firewall-cmd --reload
- Apache 기본 디렉터리 : /var/www/html -> index.html
- Apache 웹 서버 설정 파일 httpd.conf : /etc/httpd/conf 디렉터리에 존재
- 서버의 모든 ip가 동작하는 포트 설정

- Apache 웹 서버 프로세스를 구동할 사용자와 그룹 지정

- 웹 서버의 기본 디렉터리 위치 지정

- 특정 경로에 대한 지시어의 그룹

-> AllowOverride : .htaccess 파일에 포함된 설정항목의 사용 여부를 결정
-> Require : 인증된 사용자가 권한을 부여받았는지 확인
✏ Require all granted : 무조건 엑세스 차단
✏ Require all denied : 무조건 엑세스 허용
- 웹 서버가 웹 서비스를 통해 표시할 디렉터리를 지정

- 192.168.56.101/ 디렉터리로 웹에 접근하면 index.html파일의 내용을 보여준다 = 웹 서버가 표시할 기본 페이지 파일명을 지정

- /var/log/httpd 디렉터리 : 몇시 몇분 몇초에 어떤 ip에서 웹에 접근했는지 볼 수 있다

-> 182번 줄 아래부터 로그 파일 설정들

-> 로그파일 로그 포맷을 설정
- 서버에 접근하는 클라이언트에게 오류 발생시 지정한 웹페이지 뜨게 설정

📌 여러가지 에러 상태코드
< mariadb, php 모듈 설치 및 접속 >
- yum -y install mariadb-server mariadb php php-mysqld
- systemctl start mariadb
- systemctl enable mariadb
-- php 작동 확인 --
- php -v : php 버전확인
- cd /var/www/html
- touch phpinfo.php
- vi phpinfo.php 접속 후 아래 사진처럼 저장

- systemctl restart httpd : 항상 모듈을 설치하면 재시작 해야함
-> 웹에 192.168.56.101/phpinfo.php 접속했을 때 함수가 잘 실행되는지 확인
< xe 게시판 설치 >
- yum -y install php-gd.x86_64
- vi /etc/httpd/conf/httpd.conf 접속 후 아래 사진처럼 수정 후 systemctl restart httpd

- firefox에서 xpressengine.com접속 후 제품소개에 XE1들어가서 download에 XE Core 다운
- shell에서 Downloads디렉터리 들어가서 cp xe.zip /var/www/html로 옮긴다
- 옮긴후 unzip xe.zip으로 압축해제
- chmod 707 xe
< xe 게시판이 사용할 db환경 (DB랑 계정) 구축 >
- mysql : 계정명 지정안해서 로컬호스트로 접속
- use mysql : MYSQL DB사용
- GRANT ALL PRIVILEGES ON xeDB.* TO XE@localhost IDENTIFIED BY '1234' : XE 계정 생성
- mysql -u XE -p : XE 계정 접속
- CREATE DATABASE xeDB : xe DB생성
- 192.168.56.101/xe접속해서 3번째 mysql다운
- 아이디 XE 비밀번호 1234 xeDB 호스트네임 127.0.0.1
port 3306 접두사 xe
+9 korea standard time 설정
워드프레스 구축
< php 설치 >
- php7 이상 필요
- yum -y install epel-release
- wget https://rpms.remirepo.net/enterprise/remi-release-7.rpm --no-check-certificate
- rpm -Uvh remi-release-7.rpm
- apache서버 설치 후 start,enable
- yum -y install yum-utils
- yum-config-manager --enable remi-php73
- php -v 로 버전이 7이상인지 확인
- systemctl restart httpd
- firewall-cmd --add-service=http --permanent
- firewall-cmd --add-service=https --permanent
- firewall-cmd --reload
-- php 작동 확인 --
- cd /var/www/html
- touch phpinfo.php
- vi phpinfo.php 접속 후 아래 사진처럼 저장

- 192.168.56.101/phpinfo.php 접속 잘 되는지 확인
< db설치 >
- yum -y install mariadb-server mariadb
- mysql_secure_installation으로 보안 설정
- yum -y install php-mysql
- mysql -u root -p
- create database wordpress
- create user wordpress@localhost identified by "qwer1234"
- GRANT ALL PRIVILEGES ON wordpress.* TO wordpress@localhost;
- FLUSH PRIVILEGES; : 권한 재갱신
< 워드프레스 설치 >
- cd /tmp
- wget http://wordpress.org/latest.tar.gz : 설치 파일 다운
- tar xvzf latest.tar.gz -C /var/www/html : 해당 디렉터리에 압축 풀기
- cd /var/www/html로 이동
- chown -R apache /var/www/html/wordpress
- systemctl restart httpd
-- 워드프레스 접속 --
- 192.168.56.101/wordpress
- 기타 설정 후 로그인하면 끝