일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 백준
- MySQL
- 클라우드
- 코딩
- docker
- java
- c++
- streamsets 강의
- 데이트
- python
- 데이터베이스
- nvidia docker
- 도커 elk
- 알고리즘
- mysql docker
- 자바
- 스트림셋
- 푸시푸시
- 도커 mysql
- 정보처리기사
- mysql on docker
- c
- 파이썬
- C언어
- ansible install
- elk stack
- 도커 시작하기
- 스트림셋이란?
- 앤서블 설치
- 도커
- Today
- Total
리그캣의 개발놀이터
서버 구축 및 관리 - 기말고사 정리 본문
기말고사(필기&실기)
범위(sum5~15)
가상호스트, CGI, 웹 서비스, 웹 로그 기록, 웹 페이지 인증, SSL HTTPS, PHP, MySQL, dbdump, MySQL Scripts, Tomcat&JSP, Servlet 등
내용
수업 중 구현한 서비스(과제 및 퀴즈 등) 기초 내용 질문과 응용 (예, user id, 파일명, 디렉토리, DB명, DB 테이블 생성/수정, 웹
출력 변경하여 구현), 각 페이지의 머릿글은 문제 번호와 제목으로 하고, 각 배경색은 반드시 모두 다르게 함.
개인정리
email 설정(/etc/mail/*, /etc/mail/sendmail.cf)
yum install mailx ⇐ /bin/mail 명령이 없는 경우 설치
yum update sendmail ⇐ sendmail update
cd /etc/mail
‘sendmail.cf’ 수정
“0 DemonPortOption=Port=smtp, Addr=127.0.0.1, Name=MTA” ==>“0 DemonPortOption=Port=smtp, Name=MTA” 로 수정
외부접속 허용하게 바꿈
Unix에서 메일 주고 받기
메일보내기
mail email_address
Subject: 본문내용 입력 후 맨 마지막 . 로 맞춤
메일 읽기
메일 서버로 들어온 모든 메일은 /var/spool/mail 디렉토리에 저장된다.
mail ⇐ 메일 읽기 명령
&1 ⇐ 1번 메일 읽음, &s em ⇐ ‘em’ 파일로 저장 , &h ⇐ 제목줄 보기 , &d ⇐ current mail 삭제
&? ⇐ 도움말 보기, &r ⇐ 답장
Samba(/etc/samba/smb.conf)
리눅스의 디렉토리를 윈도우즈(네트워크환경)와 공유, 즉 삼바서비스로 공유된 디렉토리를 윈도우즈 네트워크 환경에서 볼 수 있음.
install samba
yum -y install samba
file /etc/samba/smb.conf에서 아래 부분 수정
workgroup = grup이름
server string = is103 # 각장 is. 번호
hosts allow = 특정 호스트만 접속을 허용함.
다른 계정 추가하고자 할때
(addusers uname ⇐ /etc/apsswd 수정됨
passwd uname)smbpasswd - a uname ⇐ 삼바의 암호는 계정 암호와 다르게 설정
smbpasswd -a uname
SMB passwd: 암호 재입력
Retype passwd : 암호 재입력service smb restart
방화벽 설정확인(/etc/sysconfig/iptables)
HTTP Web Server 설정
install apache web server
dnf -y install httpd
test run
service httpd start
MySQL DB & PHP 설치
dnf -y install mariadb-server
php 설치 안나올듯
php -v , mysql -V 버전확인명령어
phpinfo.php test page
vi infotest.php 파일 생성
<?php phpinfo(); ?>
service httpd restart ⇐ 웹 서버 다시 시작
Server Web Home Page(/var/www/html/index.html)
cd /var/www/html
vi ‘index.html’
httpd configure file(etc/httpd/conf/httpd.conf)
/etc/httpd/conf/httpd.conf 수정
cd /etc/httpd/conf
ServerName is103.skuniv.ac.kr:80
DirectoryIndex index.html index.htm index.shtml index.php
AddDefaultCharset UTF-8
/etc/httpd/conf.d/userdir.conf
일반 사용자의 웹 페이지 환경 설정(/etc/httpd/conf.d/userdir.conf) 및 테스트 페이지
su testuser
mkdir public_html
vi index.html
/etc/httpd/conf.d/welcome.conf : DocumentRoot index 파일이 없을 때 보여주는 환경 설정
CGI(Common Gateway Interface) 실행
CGI란 웹 서버에서 실행 가능한 모든 프로그램은 웹(클라이언트)를 통해서도 실행 가능하다.
서버에서 실행한 프로그램 결과를 웹으로 보여주기 위하여 httpd 헤더에 두 줄 출력이 먼저 나와야 한다.
첫 줄은 MIME(Multipurpose Internet Mail Extensions) 형식으로 나오r고 어쩌구저쩌구CGI는 누구나 접속 가능한 클라이언트에서 서버에 직접 프로그램을 실행하는 기법이므로 서버의 보안에
매우 민감하다. 따라서 실행 가능한 특정한 디렉토리와 확장자 및 권한, 등 여러 보안 규칙들이 적용된다./etc/httpd/conf.d/userdir.conf 수정
<Directory /home/*/public_html/>
...
</Directory> 다음에 아래와 같이 <Directory /home/*/public_html/cgi-bin> 설정
<Directory /home/*/public_html/cgi-bin> <== cgi-bin 디렉토리 설정
AllowOverride FileInfo AuthConfig Limit
Options ExecCGI <== 반드시 Options에 "ExecCGI"가 있어야 함.
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
cd ~id/public_html
mkdir cgi-bin
chmod g-w cgi-bin ⇐ suexec 정책에 따라 그룹에 쓰기 허가권이 금지된다.
cd cgi-bin
cat > test.c
gcc -o test.cgi test.c
./test.cgi
Content-Type:test/html
Hello!! CGI test program.
g++ -o addcpp.cgi addcpp.cpp
chmod g-w addcpp.cgi
가상 호스트 이름과 TCP Wrapper
가상호스트(/etc/httpd/conf/httpd.conf)
<VirtualHost localhost:80>
ServerAdmin root@localhost
ServerName is103.skuniv.ac.kr
DocumentRoot /var/www/html
ScriptAlias /cgi…../etc/hosts 파일 내에도 vis103.skuniv.ac.kr 있어야 한다.
localhost is103 is103.skuniv.ac.kr
localhost vis103 vis103.skuniv.ac.kr가상 호스트의 웹 접속 기록은 /var/log/httpd/vaccess_log, 오류 기록 파일은 verror_log 이다.
TCP Wrapper(/etc/hosts, hosts.allow, hosts.deny)
/etc/hosts.allow
/etc/hosts.deny
웹 디렉토리 접근 인증
해당 디렉토리 (/home/id/public_html/Protected)
“.htaccess” file을 아래와 같이 만든다.
AuthUserFile /home/id/.htpasswd
AuthGroupFile /dev/null
AuthName Seokyeong_University <== 주의 단어에 빈칸(space)이 있으면 안됨.
AuthType Basic
<Limit GET POST>
require user cosec
</Limit>
아래 명령으로 .htpasswd 파일 만듬
/usr/bin/htpasswd -c /home/id/.htpasswd cosec
비밀번호 입력 창이 나옴.
/etc/httpd/conf/httpd.conf 확인(.htaccess 파일을 웹에서 볼 수 없도록 해야함.)
AccessFileName .htaccess
httpd.conf 환경 파일 수정 : 접근을 제한하고자 하는 디렉토리 환경 설정
<Directory /home/id/public_html/Protected>
Options MultiViews Indexes Includes ExecCGI
AllowOverride AuthConfig FileInfo Limit Options <== "AuthConfig"가 반드시 필요
</Directory>
service httpd restart ⇐ httpd 데몬을 다시 시작
HTTPS(Secure HTTP, Web SSL 통신) 설정
인증서 만드는 방법 2가지: 자가-사인 인증서와 인증 기간 (CA) 인증서
자가-사인 인증서(self-signed certificate), 무료
CSR(인증요청서)을 이용하여 openssl로 직접 인증서를 만든다
이렇게 해서 준비된 private key 파일과 인증서 파일을 아파치에서 사용한다.
인증기관(CA) 인증서 만들기, 상용
openssl로 private key와 CSR 파일을 만들고, 그중 내가 만든 CSR을 CA 기관에 보내면
인증서를 CA에서 만들어 준다개인키 생성(무료 openssl을 이용한 self-signed certificate 사용)
cd /etc/pki/tls/certs
make is103.skuniv.ac.kr.key
위 암호 구문을 설정하면 “service httpd restart” 할 때 마다 암호구문 물어봄
개인키에서 암호구문 제거를 위하여 아래 명령문 실행openssl rsa -in is103.skuniv.ac.kr.key -out is103.skuniv.ac.kr.key
서버 공개키 생성
make is103.skuniv.ac.kr.csr
crt 인증서 생성(self-signed certificate, cer 키 변형)
Configure HTTPD for SSL
Install mod_ssl, openssl
dnf install mod_ssl
/etc/httpd/conf.d/ssl.conf 편집
https 로그 기록 파일
/var/log/httpd/ssl_access_log & ssl_error_log
https SSL 가상 호스트 설정
MySQL(MariaDB)
MySQL DB & PHP 설치(PHP가 설치 안되어 있을 때)
dnf -y install mariadb-server php-mysqlnd
systemctl start mariadb.service
Database 구성 : Databases > Tables > fields & records
MySQL 데몬 처음 시작
service mariadb start
스스로 초기 mysql db 생성 : /var/lib/mysql/*
systemctl start mariadb
/var/lib/mysql ⇐ 실제 mysql db가 저장되는 위치
MySQL root user 암호 설정/변경
mysqladmin -u root password
mysql -p 명령으로만 mysql 시스템에 들어갈 수 있다.
Mysql DB 위치
/var/lib/mysql
일반 사용자 계정(seoky) 만들기
mysql -p
show databases;
create database seoky
show databases;
create user ‘seoky’@’localhost’ identified by ‘user-password’;
grant all privileges on seoky.* to seoky@’localhost’;
set password for ‘seoky’@’localhost’ = password(‘newpassword’);
flush privileges;
quit
drop user ‘user’@’localhost’; ⇐ 권한 삭제
MySQL 일반 사용자 암호 바꾸기
mysql -p
set password=password(“new password”);
flush privileges;
quit;
MySQL root user가 일반 사용자 암호 바꾸기
mysql -u root -p
use mysql;
update user set Password=password(“new password”) where User=”id”;
flush privileges;
quit
MySQL 계정 만들기(다른 방법 - mysql db 수정)
mysqladmin -p create db-name ⇐ db-name 데이터 베이스 생성
cat > mkuser.sql
use mysql;
INSERT INTO user
VALUES('localhost','user-name',PASSWORD('user-passwd'),
'N','N','N','N','N','N','N','N','N','N','N','N','N','N',
'N','N','N','N','N','N','N','N','N','N','N','N','N','N',
'','','','','',0,0,0,0,'','','N','N','',0.0);
INSERT INTO db
VALUES('localhost','db-name','user-name',
'Y','Y','Y','Y','Y','Y','N','N','N','Y',
'Y','Y','Y','Y','Y','Y','Y','Y','N');
create database db-name;
FLUSH PRIVILEGES;
^D
$ mysql -p < mkuser.sql
$ mysql -u user-name -p
password: user-ppasswd
mysql> use db-name;
mysql> show tables;
mysql> show databases;
mysql> quit
테이블 만들기/수정/읽기
mysql -useoky -p
show databases;
* MySQL을 설치하면 기본적으로 로컬(localhost)에서만 접속이 가능하도록 되어 있다.
혼자 지역적으로만 사용하는것이 아닌, 하나의 계정으로 여러 곳에서 사용할 경우 사용권한
부여으로 'localhost' 대신 '%' 을 사용하여 외부에서 해당 계정에 대해서 외부에서 접근이
가능하도록 한다.
MySQL(Maria) DB관리
mysql > delete from users where id=’jang’;
텍스트 자료 가져오기(입력)
vi users.dat
table 구성 보기
mysql > show columns from test(테이블명);
Table 특정 내용의 선택적 보기
특정 레코드 보기
select * from test where id=2;
select * from tbl_name WHERE col2=val2;
특정 필드 보기
select name from test;
Table 내용을 정렬하여 보기
select * from test by order id;
select * from test by order id desc; ⇐ 역순
Table 특정 내용 편집
update test set id=1 where name =’Leesanghae’;
Table에 필드 추가하기
alter table tbname add fldname char(50);
Table 이름 바꾸기
alter table oldname rename newname;
Table 삭제
drop table tablename;
database 삭제
drop database dbname;
mysql 나가기
quit
database 생성(허가권 있는 관리자)
mysqladmin -u root -p create dbname ⇐ mysql 관리자만 생성
DB dump 저장:
mysqldump php0xx -p > dbphp0xx.sql
mysqldump --opt php0xx -p > php0xxdb.sql
혹은 모든 DB저장시에는 ‘-A’ 선택자 사용
mysqldump -A -p > dbdump.sql ⇐ 모든 데이터 베이스 저장
DB 복구
mysql -p < inp0xx.sql
mysql -p dbname < inp0xx.sql
MySQL 상태 보기
mysql > status
MySQL DB관리
PHP와 MySQL 연동 작업 순서
MySQL Database 연결: mysqli_connect(“localhost”,”id”,”pw”);
Database 선택 : mysqli_select_db(link_id,dbname);
MySQL 질의어 실행 : $result = mysql_query(link_id,”mysql commnet”);
MySQL 서버 연결
int mysqli_connect(host,id,password)
link_id = mysql_connect(‘localhost’,’id’,’pw’);
제로보드 admin 암호를 잊었을 때
mysql -p
mysql > use id;
mysql > update xe_member set password=password(‘새암호’) where user_id=”admin”;
mysql > quit
새로운 암호로 로그인
JSP 개요
JSP는 ASP나 PHP와 같이 서버에서 실행되는 스크립트 언어이며, JSP 태그와 Java 코드를 끼워 넣어 servlet 엔진을 통하여 실행되며, Java 언어를 사용할 수 있다.
Installation
tomcat은 JSP container , 즉 JSP Servlet(서버 실행)을 실행하는 엔진
tomcat 서비스 시작
service tomcat start
systemctl enable tomcat.service
이후 /etc/tomcat/tomcat.conf 설정 파일 수정 한 후,
service tomcat restart
/var/lib/tomcat/webapps/ROOT/index.jsp ⇐ 톰캣 고양이 초기 화면 경로
jsp 기본 포트 번호 확인 /etc/tomcat/server.xml
nmap is103 방화벽 검사
주요 환경변수명과 디랙토리
주요 디렉토리
/etc/sysconfig/tomcatWeb Page
/var/lib/tomcat/webapps/
/var/lib/tomcat/webapps/ROOTJSP 프로그램 실행
JSP Document_Root : /var/lib/tomcat/webapps/ROOT/index.jsp
일반 directory : /var/lib/tomcat/webapps/user/
Tomcat JSP JDBC 데이터 베이스 연동
Java JDK 설치
java -version
dnf install -y java*
jshell test
jshell
JDBC 설치
dnf install mysql-connector-java
'프로그래밍 기본 > 서버 구축 및 관리' 카테고리의 다른 글
[linux] 명령어 find로 파일 폴더 찾기 (0) | 2019.01.28 |
---|---|
python 을 이용한 command line(명령어) 입력 (0) | 2018.10.11 |
[Ubuntu]node.js server구축시 events.js:160 error (0) | 2018.08.31 |
[Ubuntu] linux 포트 방화벽 체크하기 (0) | 2018.08.31 |
서버 구축 및 관리 -중간고사 정리 (0) | 2018.01.25 |