세미 플젝1

eeapbh·2023년 3월 9일
0

pj

목록 보기
1/3

NAT-GW

  • VMware 에서 가상머신 하나만듬
  • 외부용(public)하나, 내부용(private)하나 랜카드 만들어준다.
  • Network Adapter 가서 Bridged(public) 만들고 LAN segment(private)만든다
  • LAN segment - vSwitch

    VSwitch 란 가상네트워크에서 VM을 위해 제공되는 스위치

  • MobaXterm 에서 session - ssh - IP(NAT의 외부 랜카드 IP, 강의실 컴퓨터가 외부 랜카드랑 연결돼있어서)
# vi /etc/sysconfig/network-scripts/ifcfg-ens32
# 외부 랜카드 설정
TYPE=Ethernet
BOOTPROTO=none
// 이거 처음에는 DHCP로 되어있어서 none으로 바꾸고 IPADDR로 IP를 고정시켜준다 
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.0.45 
NETMASK=255.255.248.0
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=8.8.4.4
# vi /etc/sysconfig/network-scripts/ifcfg-ens33
# 내부 랜카드 설정
TYPE=Ethernet
BOOTPROTO=none
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=10.31.0.1
NETMASK=255.255.255.0
  • 다하고 firewall 데몬 상태 확인이랑 activezone확인해줌
systemctl status firewalld
firewall-cmd --get-active-zone


-> 이런식으로 public에 2개 들어가잇는거 확인
-> private만들어서 나눠줘야함

nmcli c mod ens32 connection.zone external
nmcli c mod ens33 connection.zone internal
firewall-cmd --get-active-zone


-> 나눠졌다.

IP Forwarding

  • 라우터는 여러개의 네트워크 인터페이스를 가지고잇따
  • 라우터는 하나의 인터페이스로 들어온 패킷을 읽어서, 일치하는 서브넷을 가지는 다른 네트워크 인터페이스를 패킷을 포워딩함
  • 리눅스 서버가 IP forwarding 기능을 하게 하려면 vi /etc/sysctl.conf 수정해준다
# vi /etc/sysctl.conf

net.ipv4.ip_forward=1
# 맨밑에 넣어줌
# 이거 넣어주면 재부팅해도 설정한거 안풀림

# reboot 하고 
# cat /proc/sys/net/ipv4/ip_forward
# 하면 1이 나옴 껏다 켜도 안풀림

DHCP

IP 범위 정해주고, 도메인 네임 서버 정해주고 등등

# yum install dhcp -y
# vi /etc/dhcp/dhcpd.conf
ddns-update-style interim;
subnet 10.31.0.0 netmask 255.255.255.0 {
# = 10.31.0.0/24
option routers 10.31.0.1;
option subnet-mask 255.255.255.0;
range dynamic-bootp 10.31.0.100 10.31.0.110;
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 7200;
max-lease-time 86400;
}
systemctl enable --now dhcpd # 유닛 등록 및 활성화
systemctl status dhcpd # 확인해보기

DNS_DB

 yum -y install bind bind-chroot bind-utils
  • bind : 리눅스의 대표적인 DNS
  • bind-chroot : 악의적인 사용자로부터 bind를 보호하기 위한 방법
  • bind-utils : 도메인 관련 작업시 dig 커맨드를 이용할 때가 많은데 이거 설치해주면 dig 커맨드도 같이 설치됨

패키지들 설치하고 이제 name.conf(가장 핵심적인 설정 파일) 설정해줌

# vi /etc/named.conf
options {
        listen-on port 53 { 127.0.0.1; 192.168.0/21 10.100.0/24; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { localhost; 192.168.0/21; 10.100.0/24; };
        forwarders { 8.8.8.8; 8.8.4.4; }; 

        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
view "internal" {
        zone "." IN {
                type hint;
                file "named.ca";
        };

        include "/etc/named.rfc1912.zones";
        include "/var/named/kgserp.shop.zones"; # 호스팅 영역 생성
};

  • listen-on port 53
    • DNS port 53에 어떤 IP가 접근할수 있는지 설정함, IPv4
    • 사설 DNS 서버로 사용할 땐 서비스 할 사설 IP 대역만 고정시켜줘 설정해야 보안이 상승함
    • 불특정 다수의 유저에게 서비스할때는 listen-on port 53 { any; }; 으로 설정
  • listen-on-v6 port 53 { ::1; };
    • IPv6를 사용하지 않으면 주석처리
  • directory "/var/named";
    • 실제 서비스 할 DNS의 zone 파일 디렉토리 경로 설정
  • dump-file "/var/named/data/cache_dump.db";

    • DNS cache dump 파일 생성 디렉토리 경로, 일반적 운영할 때는 자주 볼일없다고함
  • statistics-file "/var/named/data/named_mem_stats.txt";

    • 메모리 통계 파일 생성 디렉토리 경로, 일반적 운영할 때는 자주 볼일없다고함
  • allow-query { localhost; };

    • 재귀 질의가 올 때 응답할지에 대한 설정
    • 보안상 문제 있을 때 재귀쿼리를 받을 IP 대역만 허용
    • 일반적으로는 allow-query { any; }; 를 사용
  • recursion yes;

    • 반복 질의에 대한 요청 할지 (DNS Cache Server), 안할지 설정
    • 외부 도메인을 접근할 수 없는 사설 DNS로 사용하는 경우면 no, 아니면 yes
  • dnssec-enable yes; / dnssec-validation yes;

    • DNS-SEC에 관한 설정
  • bindkeys-file "/etc/named.root.key"; / managed-keys-directory "/var/named/dynamic";

    • DNS-SEC에 관한 설정
  • pid-file "/run/named/named.pid";

    • DNS의 PID가 작성된 파일
  • session-keyfile "/run/named/session.key";

    • TSIG session key (Master ↔ Salve 보안 트랙잭션 설정) 마찬가지로 무시
  • logggin { channel default_debug { file "data/named.run"; serverity dynamic; }; };

    • DNS Server가 실행될때 디버그 수준의 로그 파일을 남김
  • zone "." IN { type hint; file "named.ca"; };

    • 참조할 루트 힌트가 작성되어 있는 파일명을 가르킴
    • 이 파일에는 전세계 루트 도메인(최상위 도메인)에 대한 정보가 들어 있음
  • include

    • include 두줄은 해당 경로에 있는 파일의 내용을 불러 옴

DNS zone 파일을 등록하는 설정 파일

# vi /var/named/kgserp.shop.zones

zone "kgserp.shop" IN {
        type master;
        file "kgserp.shop.db";
        allow-update { none; };
};

zone "0.100.10.in-addr.arpa" IN {
        type master;
        file "0.100.10.in-addr.arpa.db";
        allow-update { none; };
};
  • type master;
    • Master & Slave 서버 구축을 하지 않는다면 master로 넣어 주면됨

이제 위에서 등록한 zone파일들 설정
IP LIST (이건 그냥 설명)
WEB01_SAMBA 10.31.0.100
WEB02_NFS 10.31.0.101
DNS_DATABASE 10.31.0.102

# vi /var/named/kgserp.shop.db

Route 53 세팅하는거랑 비슷함
$TTL    86400
@       IN      SOA     kgserp.shop.   root.kgserp.shop.(
                       2022041401 ; Serial
                       3h         ; Refresh
                       1h         ; Retry
                       1w         ; Expire
                       1h )       ; Minimum

       IN      NS      ns.kgserp.shop.
       IN      MX 10   ns.kgserp.shop.
ns      IN      A       10.100.0.102
web01   IN      A       10.100.0.100
web02   IN      A       10.100.0.101
nms     IN		A		10.100.0.103
  • $TTL 86400

  • TTL은 Time To Live 약자로써 이 도메인의 정보를 받아간 DNS 서버에서 어느 시간동안 이 내용을 저장하고 보관할지에 대한 설정

  • 초단위로도 설정이 가능

  • TTL값이 높을수록 후에 도메인 내용을 설정하거나 하게 되면 갱신이 늦어질 수 있음

  • SOA

    • start Of Authority의 약자, zone 파일의 시작을 알리고 설정을 정의
  • NS

    • Name Server를 지정
  • MX

    • 메일 서버를 지정
    • MX 레코드는 10, 20, 30과 같은 우선순위를 지정해줌, 낮을수록 우선순위가 높다.
  • A

    • 좌측에 작성한 도메인의 IP를 지정함
# vi /var/named/0.100.10.in-addr.arpa.db

$TTL	86400
@	IN	SOA	kgserp.shop.	root.kgserp.shop.(
            2022041401 ; Serial
            3h         ; Refresh
            1h         ; Retry
            1w         ; Expire
                        1h )       ; Minimum

    IN	NS	ns.kgserp.shop.
102	IN	PTR	ns.kgserp.shop.
100	IN	PTR	web01.kgserp.shop.
101	IN	PTR	web02.kgserp.shop.
103	IN	PTR	nms.kgserp.shop.
  • PTR
    • 역방향 DNS에 사용되는 레코드
    • IP주소로 도메인을 찾는데 사용됨
systemctl enable --now named
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload

NAT

vi /etc/dhcp/dhcpd.conf

# option domain-name-servers에 앞에 dns IP 추가
systemctl status dhcpd

web01, web02, ns

systemctl restart NetworkManager
cat /etc/resolv.conf
dns 잘 연결 된지 확인

NAT

vi /etc/sysconfig/network-scripts/ifcfg-ens32
# DNS1추가하고 dns IP 추가
systemctl restart NetworkManager
cat /etc/resolv.conf
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
systemctl restart NetworkManager

NAT

yum install -y haproxy
vi /etc/haproxy/haproxy.cfg
ggdG

global
    daemon

defaults
    mode               http

frontend  http-in
    bind *:80
    acl firefox hdr_sub(User-Agent) Firefox
    acl chrome hdr_sub(User-Agent) Chrome
    default_backend    backend_servers
    use_backend bk_firefox if firefox
    use_backend bk_chrome if chrome

backend backend_servers
    balance            roundrobin
#    cookie  SVID insert indirect nocache maxlife 10s
    server             web01 10.100.0.100:80 cookie w1 check
    server             web02 10.100.0.101:80 cookie w2 check
#   server             web03 10.100.0.103:80 cookie w3 check

backend bk_firefox
    server             web01 10.100.0.100:80
backend bk_chrome
    server             web02 10.100.0.101:80
systemctl enable --now haproxy

firewall-cmd --list-all --zone=external 
# service에 http가 없는 것을 확인
firewall-cmd --permanent --add-service=http --zone=external

MariaDB 설치

DNS_DB

vi /etc/yum.repos.d/MariaDB.repo  # 예전에 크롬설치할때도 repo정의하고 해줫음 특정한 버전의 MariaDB 설치하려면 yum 말고 이런식으로 repo정의하고 ㄱㄱ
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1     # 이게 정상적인 사이트라는것을 검증함
vi /etc/yum.repos.d/MariaDB.repo  
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1   
yum install -y MariaDB  # 위에서 정의한 name을 잘써줘야함
rpm -qa | grep MariaDB  # 설치됐는지 확인
mariadb --version   # 설치됐는지 확인
systemctl enable --now mariadb
mysql_secure_installation    # root passwd 정하는거 중간에 remote(원격설정)잇는데 n 잇음!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 나머지는 y

systemctl restart mariadb   # 서비스 재시작

mysql -u root -p  # 비번쳐서 접속
CREATE USER 'kgs'@'%' IDENTIFIED BY 'kgs'; # '%' : 모든 호스트의미 , localhost 뿐만아니라 다른 remote에서도 kgs, 뒤에있는'kgs': 비밀번호 
CREATE DATABASE IF NOT EXISTS wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'kgs'@'%';  // 
quit

firewall-cmd --permanent --add-service=mysql
firewall-cmd --reload
yum install -y MariaDB  
rpm -qa | grep MariaDB  
mariadb --version   
systemctl enable --now mariadb
mysql_secure_installation    

systemctl restart mariadb   

mysql -u root -p  # 비번쳐서 접속
CREATE USER 'kgs'@'%' IDENTIFIED BY 'kgs';
CREATE DATABASE IF NOT EXISTS wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'kgs'@'%';
quit

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

web02

yum install -y httpd php php-mysql php-gd php-mbstring wget unzip mysql
cd /var/www/html
mkdir php-test
cd php-test/
echo 'test' > index.html

php에서 DB 접속

vi connect-test.php


<?php
   $db_host="192.168.0.14";
   $db_user="root";
   $db_password="1234";
   $db_name="";
   $con=mysqli_connect($db_host, $db_user, $db_password, $db_name);
   if ( mysqli_connect_error($con) ) {
	   echo "MariaDB 접속 실패 !!", "<br>";
	   echo "오류 원인 : ", mysqli_connect_error();
	   exit();
   }
   echo "MariaDB 접속 완전히 성공!!";
   mysqli_close($con);
?>
systemctl restart httpd # php가 httpd 연동이 되기 때문에

php에서 데이터베이스 생성

vi create-db.php


<?php
   $con=mysqli_connect("192.168.0.14", "root", "1234", "") or die("MariaDB 접속 실패 !!");
         
   $sql="CREATE DATABASE sqlDB";
   $ret = mysqli_query($con, $sql);
   
   if($ret) {
	   echo "sqlDB가 성공적으로 생성됨.";
   }
   else {
	   echo "sqlDB 생성 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
   }
   
   mysqli_close($con);
?>

php에서 테이블 생성

vi create-table.php


<?php
   $con=mysqli_connect("192.168.0.14", "root", "1234", "sqlDB") or die("MariaDB 접속 실패 !!");

   $sql ="
	   CREATE TABLE userTbl 
		( userID  	CHAR(8) NOT NULL PRIMARY KEY,
		  name    	VARCHAR(10) NOT NULL,
		  birthYear   INT NOT NULL,
		  addr	  	CHAR(10) NOT NULL,
		  mobile1	CHAR(3),
		  mobile2	CHAR(8),
		  height    	SMALLINT,
		  mDate    	DATE
		)
   ";
 
   $ret = mysqli_query($con, $sql);
 
   if($ret) {
	   echo "userTBL이 성공적으로 생성됨..";
   }
   else {
	   echo "userTBL 생성 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
   }
 
   mysqli_close($con);
?>

php에서 데이터 입력

vi insert-data.php


<?php
   $con=mysqli_connect("192.168.0.14", "root", "1234", "sqlDB") or die("MariaDB 접속 실패 !!");

   $sql ="
		INSERT INTO userTbl VALUES
		('LSG', '이승기', 1987, '서울', '011', '1111111', 182, '2008-8-8'),
		('KBS', '김범수', 1979, '경남', '011', '2222222', 173, '2012-4-4'),
		('KKH', '김경호', 1971, '전남', '019', '3333333', 177, '2007-7-7'),
		('JYP', '조용필', 1950, '경기', '011', '4444444', 166, '2009-4-4'),
		('SSK', '성시경', 1979, '서울', NULL  , NULL      , 186, '2013-12-12'),
		('LJB', '임재범', 1963, '서울', '016', '6666666', 182, '2009-9-9'),
		('YJS', '윤종신', 1969, '경남', NULL  , NULL      , 170, '2005-5-5'),
		('EJW', '은지원', 1972, '경북', '011', '8888888', 174, '2014-3-3'),
		('JKW', '조관우', 1965, '경기', '018', '9999999', 172, '2010-10-10'),
		('BBK', '바비킴', 1973, '서울', '010', '0000000', 176, '2013-5-5')
   ";
 
   $ret = mysqli_query($con, $sql);
 
   if($ret) {
	   echo "userTBL이 데이터가 성공적으로 입력됨.";
   }
   else {
	   echo "userTBL 데이터 입력 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
   }
 
   mysqli_close($con);
?>

php에서 데이터 조회

vi select-data.php


<?php
   $con=mysqli_connect("192.168.0.14", "root", "1234", "sqlDB") or die("MariaDB 접속 실패 !!");

   $sql ="
		SELECT * FROM userTBL
   ";
 
   $ret = mysqli_query($con, $sql);
 
   if($ret) {
	   echo mysqli_num_rows($ret), "건이 조회됨.<br><br>";
   }
   else {
	   echo "userTBL 데이터 조회 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
	   exit();
   }
   
   while($row = mysqli_fetch_array($ret)) {
	   echo $row['userID'], " ", $row['name'], " ", $row['height'], " ", "<br>";
   }   
 
   mysqli_close($con);
?>

회원 관리 초기 화면

vi main.html

<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=utf-8">
</HEAD>
<BODY>

<h1> 회원 관리 시스템 </h1>

<a href='select.php'> (1) 회원 조회 (조회 후 수정/삭제 가능) </a> <br><br>
<a href='insert.php'> (2) 신규 회원 등록 </a> <br><br>
<FORM METHOD="get"  ACTION="update.php">
	(3) 회원 수정 - 회원 아이디 : <INPUT TYPE ="text" NAME="userID"> 
	<INPUT TYPE="submit"  VALUE="수정">
</FORM>
<FORM METHOD="get"  ACTION="delete.php">
	(4) 회원 삭제 - 회원 아이디 : <INPUT TYPE ="text" NAME="userID"> 
	<INPUT TYPE="submit"  VALUE="삭제">
</FORM>

</BODY>
</HTML>

회원 조회 화면

vi select.php


<?php
   $con=mysqli_connect("192.168.0.14", "root", "1234", "sqlDB") or die("MariaDB 접속 실패 !!");

   $sql ="SELECT * FROM userTBL";
 
   $ret = mysqli_query($con, $sql);   
   if($ret) {
	   //echo mysqli_num_rows($ret), "건이 조회됨..<br><br>";
	   $count = mysqli_num_rows($ret);
   }
   else {
	   echo "userTBL 데이터 조회 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
	   exit();
   } 
   
   echo "<h1> 회원 조회 결과 </h1>";
   echo "<TABLE border=1>";
   echo "<TR>";
   echo "<TH>아이디</TH><TH>이름</TH><TH>출생년도</TH><TH>지역</TH><TH>국번</TH>";
   echo "<TH>전화번호</TH><TH>키</TH><TH>가입일</TH><TH>수정</TH><TH>삭제</TH>";
   echo "</TR>";
   
   while($row = mysqli_fetch_array($ret)) {
	  echo "<TR>";
	  echo "<TD>", $row['userID'], "</TD>";
	  echo "<TD>", $row['name'], "</TD>";
	  echo "<TD>", $row['birthYear'], "</TD>";
	  echo "<TD>", $row['addr'], "</TD>";
	  echo "<TD>", $row['mobile1'], "</TD>";
	  echo "<TD>", $row['mobile2'], "</TD>";
	  echo "<TD>", $row['height'], "</TD>";
	  echo "<TD>", $row['mDate'], "</TD>";
	  echo "<TD>", "<a href='update.php?userID=", $row['userID'], "'>수정</a></TD>";
	  echo "<TD>", "<a href='delete.php?userID=", $row['userID'], "'>삭제</a></TD>";
	  echo "</TR>";	  
   }   
   mysqli_close($con);
   echo "</TABLE>"; 
   echo "<br> <a href='main.html'> <--초기 화면</a> ";
?>

신규 회원 입력

vi insert.php


<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=utf-8">
</HEAD>
<BODY>

<h1> 신규 회원 입력 </h1>
<FORM METHOD="post"  ACTION="insert_result.php">
	아이디 : <INPUT TYPE ="text" NAME="userID"> <br>
	이름 : <INPUT TYPE ="text" NAME="name"> <br> 
	출생년도 : <INPUT TYPE ="text" NAME="birthYear"> <br>
	지역 : <INPUT TYPE ="text" NAME="addr"> <br>
	휴대폰 국번 : <INPUT TYPE ="text" NAME="mobile1"> <br>
	휴대폰 전화번호 : <INPUT TYPE ="text" NAME="mobile2"> <br>
	신장 : <INPUT TYPE ="text" NAME="height"><br>
	<BR><BR>
	<INPUT TYPE="submit"  VALUE="회원 입력">
</FORM>

</BODY>
</HTML>

신규 회원 입력 결과

vi insert_result.php


<?php
   $con=mysqli_connect("192.168.0.14", "root", "1234", "sqlDB") or die("MySQL 접속 실패 !!");

   $userID = $_POST["userID"];
   $name = $_POST["name"];
   $birthYear = $_POST["birthYear"];
   $addr = $_POST["addr"];
   $mobile1 = $_POST["mobile1"];
   $mobile2 = $_POST["mobile2"];
   $height = $_POST["height"];   
   $mDate = date("Y-m-j");
   
   $sql =" INSERT INTO userTbl VALUES('".$userID."','".$name."',".$birthYear;
   $sql = $sql.",'".$addr."','".$mobile1."','".$mobile2."',".$height.",'".$mDate."')";
   
   $ret = mysqli_query($con, $sql);
 
    echo "<h1> 신규 회원 입력 결과 </h1>";
   if($ret) {
	   echo "데이터가 성공적으로 입력됨.";
   }
   else {
	   echo "데이터 입력 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
   } 
   mysqli_close($con);
   
   echo "<br> <a href='main.html'> <--초기 화면</a> ";
?>

회원 정보 수정

vi update.php
<?php
   $con=mysqli_connect("192.168.0.14", "root", "1234", "sqlDB") or die("MariaDB 접속 실패 !!");
   $sql ="SELECT * FROM userTBL WHERE userID='".$_GET['userID']."'";

   $ret = mysqli_query($con, $sql);   
   if($ret) {
	   $count = mysqli_num_rows($ret);
	   if ($count==0) {
		   echo $_GET['userID']." 아이디의 회원이 없음!!!"."<br>";
		   echo "<br> <a href='main.html'> <--초기 화면</a> ";
		   exit();	
	   }		   
   }
   else {
	   echo "데이터 조회 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
	   echo "<br> <a href='main.html'> <--초기 화면</a> ";
	   exit();
   }   
   $row = mysqli_fetch_array($ret);
   $userID = $row['userID'];
   $name = $row["name"];
   $birthYear = $row["birthYear"];
   $addr = $row["addr"];
   $mobile1 = $row["mobile1"];
   $mobile2 = $row["mobile2"];
   $height = $row["height"];   
   $mDate = $row["mDate"];      
?>

<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=utf-8">
</HEAD>
<BODY>

<h1> 회원 정보 수정 </h1>
<FORM METHOD="post"  ACTION="update_result.php">
	아이디 : <INPUT TYPE ="text" NAME="userID" VALUE=<?php echo $userID ?> READONLY> <br>
	이름 : <INPUT TYPE ="text" NAME="name" VALUE=<?php echo $name ?>> <br> 
	출생년도 : <INPUT TYPE ="text" NAME="birthYear" VALUE=<?php echo $birthYear ?>> <br>
	지역 : <INPUT TYPE ="text" NAME="addr" VALUE=<?php echo $addr ?>> <br>
	휴대폰 국번 : <INPUT TYPE ="text" NAME="mobile1" VALUE=<?php echo $mobile1 ?>> <br>
	휴대폰 전화번호 : <INPUT TYPE ="text" NAME="mobile2" VALUE=<?php echo $mobile2 ?>> <br>
	신장 : <INPUT TYPE ="text" NAME="height" VALUE=<?php echo $height ?>> <br>
	회원가입일 : <INPUT TYPE ="text" NAME="mDate" VALUE=<?php echo $mDate ?> READONLY><br>
	<BR><BR>
	<INPUT TYPE="submit"  VALUE="정보 수정">
</FORM>

</BODY>
</HTML>

회원 정보 수정 결과

vi update_result.php


<?php
   $con=mysqli_connect("192.168.0.14", "root", "1234", "sqlDB") or die("MariaDB 접속 실패 !!");

   $userID = $_POST["userID"];
   $name = $_POST["name"];
   $birthYear = $_POST["birthYear"];
   $addr = $_POST["addr"];
   $mobile1 = $_POST["mobile1"];
   $mobile2 = $_POST["mobile2"];
   $height = $_POST["height"];   
   $mDate = $_POST["mDate"]; 
   
   $sql ="UPDATE userTbl SET name='".$name."', birthYear=".$birthYear;
   $sql = $sql.", addr='".$addr."', mobile1='".$mobile1."',mobile2='".$mobile2;
   $sql = $sql."', height=".$height.", mDate='".$mDate."' WHERE userID='".$userID."'";
   
   $ret = mysqli_query($con, $sql);
 
    echo "<h1> 회원 정보 수정 결과 </h1>";
   if($ret) {
	   echo "데이터가 성공적으로 수정됨.";
   }
   else {
	   echo "데이터 수정 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
   } 
   mysqli_close($con);
   
   echo "<br> <a href='main.html'> <--초기 화면</a> ";
?>

회원 정보 삭제

vi delete.php


<?php
   $con=mysqli_connect("192.168.0.14", "root", "1234", "sqlDB") or die("MariaDB 접속 실패 !!");
   $sql ="SELECT * FROM userTBL WHERE userID='".$_GET['userID']."'";

   $ret = mysqli_query($con, $sql);   
   if($ret) {
	   $count = mysqli_num_rows($ret);
	   if ($count==0) {
		   echo $_GET['userID']." 아이디의 회원이 없음!!!"."<br>";
		   echo "<br> <a href='main.html'> <--초기 화면</a> ";
		   exit();	
	   }		   
   }
   else {
	   echo "데이터 조회 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
	   echo "<br> <a href='main.html'> <--초기 화면</a> ";
	   exit();
   }   
   $row = mysqli_fetch_array($ret);
   $userID = $row['userID'];
   $name = $row["name"];
   
?>

<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=utf-8">
</HEAD>
<BODY>

<h1> 회원 삭제 </h1>
<FORM METHOD="post"  ACTION="delete_result.php">
	아이디 : <INPUT TYPE ="text" NAME="userID" VALUE=<?php echo $userID ?> READONLY> <br>
	이름 : <INPUT TYPE ="text" NAME="name" VALUE=<?php echo $name ?> READONLY> <br> 
	<BR><BR>
	위 회원을 삭제하겠습니까?	
	<INPUT TYPE="submit"  VALUE="회원 삭제">
</FORM>

</BODY>
</HTML>

회원 삭제 결과

vi delete_result.php



<?php
   $con=mysqli_connect("192.168.0.14", "root", "1234", "sqlDB") or die("MariaDB 접속 실패 !!");

   $userID = $_POST["userID"];
     
   $sql ="DELETE FROM userTbl WHERE userID='".$userID."'";
   
   $ret = mysqli_query($con, $sql);
 
    echo "<h1> 회원 삭제 결과 </h1>";
   if($ret) {
	   echo $userID." 회원이 성공적으로 삭제됨..";
   }
   else {
	   echo "데이터 삭제 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
   } 
   mysqli_close($con);
   
   echo "<br><br> <a href='main.html'> <--초기 화면</a> ";
?>

tar 만들기

cd .. # 상위폴더 /html로 가기
tar cvf php-test.tar php-test/*   #cvf 아카이브 만들기 #xvf 아카이브 풀기
tar tf php-test.tar  #아카이브 내용 확인

NAT

cd ~
scp -i id_rsa id_rsa root@10.31.0.101:/root # 키, 유저 아이디, 목적지 IP 

web02

web02 가보면 id_rsa 전달 돼있음

ls -al # 보니까 chmod 400(-r--------)임 400~600이어야 키쓸수잇음
scp -i id_rsa /var/www/html/php-test.tar root@10.31.0.100:/var/www/html

web01

cd /var/www/html
ls
tar xvf php-test.tar  # php-test.tar 전달된거 확인하고 압축풀기
yum install -y httpd php php-mysql php-gd php-mbstring wget unzip mysql
systemcl restart httpd

Chrome으로 들어가면 web02
firefox로 들어가면 web01
사파리로 들어가면 번갈아가면서 뜸 !( 로드 밸런서) L7?

WordPress

web01

cd /var/www/html
mv index.html index.html.bak

web02

cd /var/www/html
mv index.html index.html.bak # 백업파일로 바꿈

web01

cd ~
yum install -y httpd php php-mysql php-gd php-mbstring wget unzip mysql
wget https://ko.wordpress.org/wordpress-4.8.2-ko_KR.zip
cd /var/www/html
unzip /root/wordpress-4.8.2-ko_KR.zip # root폴더에 있는 zip파일을 현재경로(/vra/www/html)에 푼다 
mv ./wordpress/* . # /wordpress 안의 내용들을 모두 현재경로로 옮김
chown -R apache:apache /var/www/*  # chown : 소유권을 줌,  -R : 재귀(/var/www/그안의 그안의 그안의...싹다) apache 사용자와 apache사용자그룹 권한을 주겟다
systemctl enable --now httpd
systemctl restart httpd # 서비스 restart 위에서 소유권 바꿔서 하는거임

web02

wget https://ko.wordpress.org/wordpress-4.8.2-ko_KR.zip
cd /var/www/html
unzip /root/wordpress-4.8.2-ko_KR.zip
mv ./wordpress/* .
chown -R apache:apache /var/www/*
systemctl enable --now httpd
systemctl restart httpd
mysql -h ns.kgserp.shop -u kgs -p
비번 : kgs
show grants from 'kgs'@'%';

0개의 댓글