#!/bin/bash <-- 스크립트 시작 구문

#백업 날짜
date=`date +%Y%m%d`

#백업 파일이 저장될 경로
db_backup_path="/backup/mysql_back"
home_backup_path="/backup/home_back"

#db 계정 정보
db_user="DB계정"
db_pw="패스워드"

#db 목록
mysqlshow="mysqlshow"


# db 전체 백업
##mysqldump -u$db_user   -p ${db_pw}  --all-databases > $db_backup_path/$date.sql     # /usr/bin/mysqldump 명령어는 찾을 수 없다고 나옴.

 

# db 목록 추출
db_lists=`$mysqlshow -u${db_user} -p${db_pw} | egrep -v "Databases|test|^\+" | awk '{print $2}'`

 

#실행 날짜의 db 백업 디렉토리 생성
if [ ! -d $db_backup_path/$date ]; then
        mkdir $db_backup_path/$date
fi

 

#실행 날짜의 home 백업 디렉토리 생성
if [ ! -d $home_backup_path/$date ]; then
        mkdir $home_backup_path/$date
fi

# home 백업 실행
tar -czvpf $home_backup_path/$date/$date.home.tar.gz -C / home

# db 별로 백업 실행
for db_lists in $db_lists; do

 mysqldump -u $db_user -p${db_pw} --skip-lock-tables $db_lists > $db_backup_path/$date/$db_lists.sql

done

#오래된 백업 파일 삭제
find $home_backup_path/ -type f -mtime +0 | sort | xargs rm -rf
find $db_backup_path/ -type f -mtime +0 | sort | xargs rm -rf


## sql파일을 tar로 압축.(공간 절약의 효율은 미미함)
#tar czvpf $db_backup_path/$date.tar.gz -C $db_backup_path $date
~                                                                    

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------------

(cron 로그 남기기)

* * * * * /var/cron/test.sh >> /var/log/test.log 2>&1

 

크론탭에 대한 설명은 아래 링크를 확인.

https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%B0%98%EB%B3%B5_%EC%98%88%EC%95%BD%EC%9E%91%EC%97%85_cron,_crond,_crontab

'스크립트' 카테고리의 다른 글

리눅스 파일 언어셋 변경  (0) 2020.08.25

현재 사용중인 메모리 : grep MemTotal /proc/meminfo


최대 인식 가능한 메모리 용량 : dmidecode -t 16


ispci => 기본적인 하드웨어 정보 확인

ispci => verbose를 의미하며, 각 장치들에 대한 자세한 정보 확인



#dmidecode -s baseboard-product-name

메인보드 이름만 출력



#dmidecode -t baseboard

메인보드의 전체적인 내용 출력


#dmidecode -t 17 | egrep 'Memory|Size'

메모리 슬롯 확인


https://bwhite.tistory.com/466 참고



디스크 속도 측정

-리눅스 측정

dd if=/dev/vda1 bs=1G count=1 of=write_1GB_test


# sample configuration for iptables service

# you can edit this manually or use system-config-firewall

# please do not ask us to add additional ports/services to this default configuration

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [269:26607]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 143 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 50001:50005 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT



--------------------------------------------------------------------------------------------


우분투에서 iptsbles  적용


룰셋 삭제

 iptables -F

 iptables -P INPUT ACCEPT

  iptables -P OUTPUT ACCEPT

  iptables -P FORWARD ACCEPT


룰셋 저장

# iptables-save


룰셋 적용하기

# iptables-restore < /etc/iptables/rules.v4


(URL 참고)
https://idchowto.com/?p=31482

http://blog.daum.net/_blog/BlogTypeView.do?blogid=0OzV0&articleno=235&categoryId=21&regdt=20180228143109

-------------------------------------------------------------------------------------------------

port forwarding


포워딩 정책 추가 명령어

iptables -A PREROUTING -d 49.247.210.167 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 443


설정된 포트 워딩 확인

iptables -t nat -L


정책 추가 명령어의 -A 부분을 -D로 다시 입력하면 정책이 삭제 되나, 안되는 경우 삭제 방법

iptables -t nat -L --line-numbers 명령어로 설정된 정책의 번호를 확인.


정책 삭제

iptables -t nat -D PREROUTING 1


https://www.centos.org/forums/viewtopic.php?t=6138    <= elpo 저장소 에러 시 errno 14

mysql 5.6 설치


필수 라이브러리 설치

# yum -y install zlib curl gcc g++ gcc-c++ openssl openssl-devel libtermcap-devel ncurses-devel libc-clientdevel bzip2-devel bison make cmake


(mysql 5.5이상 부터는 cmake를 이용하여 설치를 한다. 아래와 같이 cmake 소스 설치도 가능하다.)

# cd /usr/local/src 

# wget https://cmake.org/files/v3.9/cmake-3.9.6.tar.gz 

# tar zxvf cmake-3.9.6.tar.gz 

# cd cmake-3.9.6 

# ./bootstrap 

# make && make install


myslq 계정 생성

# groupadd -g 400 mysql → mysql 그룹 생성 

# useradd -u400 -g400 -d /usr/local/mysql -s /bin/false mysql → mysql 유저 생성


mysql 설치

# tar zxvf mysql-5.6.20.tar.gz 

# cd mysql-5.6.20

# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ → 기본 설치 디렉터리 설정 

-DMYSQL_DATADIR=/usr/local/mysql/data \ → 데이터 디렉터리 위치 설정 

-DDEFAULT_CHARSET=utf8 \ → 언어 설정 

-DDEFAULT_COLLATION=utf8_general_ci \ → 서버 데이터 정렬, show collation 문을 사용하여 각 문자 집합에 사용할 수 있는 데이터 정렬 

-DWITH_EXTRA_CHARSETS=all \ → 포함할 추가 문자 세트 

-DWITH_INNOBASE_STORAGE_ENGINE=1 \ → 스토리지 엔진 “innobase”를 서버에 정적으로 컴파일 

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ → 서버가 소켓을 연결하는 unix 소켓파일 경로. 절대경로여야함. 

-DSYSCONFDIR=/etc \ → my.cnf 파일 디렉터리 

-DMYSQL_TCP_PORT=3306 → 서버가 tcp/ip 연결을 청취하는 포트 번호

(euckr로 설치를 원할 경우, -DDEFAULT_CHARSET=euckr -DDEFAULT_COLLATION=euckr_korean_ci로 변경해준다.)

# make

# make install


mysql 기본 설정

# cd /usr/local/src/mysql-5.6.20/support-files 

# cp -arp my-default.cnf /etc/my.cnf → 설정파일 이동 

# cp -arp mysql.server /etc/init.d/mysqld 

# rm -rf /usr/local/mysql/data → 설치 후 필요없는 파일들이 들어가있음, 삭제 

# /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql → mysql의 데이터베이스를 생성하며, mysql디렉터리를 설정 

# chown -R mysql.mysql /usr/local/mysql → mysql은 권한이 mysql이 아니면 구동이 되지 않기 때문에 소유자 변경 

# chmod 700 /etc/init.d/mysqld 

# chmod 711 /usr/local/mysql 

# chmod 700 /usr/local/mysql/data 

# chmod 751 /usr/local/mysql/bin 

# chmod 750 /usr/local/mysql/bin/* 

# chmod 755 /usr/local/mysql/bin/mysql 

# chmod 755 /usr/local/mysql/bin/mysqldump 

# echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf


자동실행 설정

# cd /usr/local/mysql

# ln -s lib lib64

# chkconfig --add mysqld

# chkconfig mysqld


mysql> update user set password = password('패스워드') where user='root';

mysql> flush privileges;




error 및 특이사항 발생 시

명령어 인식 안될때 /usr/local/mysqll/bin/에서 실행하거나  /etc/profile 파일에서 export PATH="$PATH:/usr/local/mysql/bin" 구문 추가 후 source /etc/profile 로 적용한다.



support-files 없을 시 my-samll.cnf or my-large.cnf 중 선택하여 my.cnf로 복사한다.


5.7.10 버전 루트패스워드 변경 후 SET PASSWORD = PASSWORD('your_new_password'); 



sentos 7.4 에 mysql 5.4 설치 때 cmake 오류 (컴파일 러가 지원하지 않음)----

-- The C compiler identification is unknown

-- The CXX compiler identification is unknown

CMake Error: your C compiler: "CMAKE_C_COMPILER-NOTFOUND" was not found.   Please set CMAKE_C_COMPILER to a valid compiler path or name.

CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.   Please set CMAKE_CXX_COMPILER to a valid compiler path or name.

=> #> yum install gcc gcc-c++

  



Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)

: 요고이 링크가 안걸려서 생기는 에러다.

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock 를 해보고 이미 링크가 존재한다고 하면

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock 요렇게 반대로 해보자



Can't connect to local MySQL server through socket '/tmp/mysql.sock' (13)

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)

: 마지막 13번 에러...

이건 /usr/local/mysql 디렉토리에 권한이 잘못되서 그런 것이다.

777로 해주면 된다.

chmod 777  /usr/local/mysql





apache 2.4 + php 5.2  설치시 phplib5.so 에러 해결



httpd-2.4.3 버전과  php-5.2.14 버전을 설치하였다.

php 5.2 설치 후에 apache를 start 하게 되면 다음과 같은 메시지가 나오면서 apache가 정상적으로 작동을 하지 않았다.

httpd: Syntax error on line 146 of /usr/local/apache/conf/httpd.conf: Cannot load modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: undefined symbol: unixd_config

아파치의 버전업으로 인해서 해당 심볼의 명칭이 바뀌었다. unixd_config -> ap_unixd_config로 변경

src/php-5.2.14/sapi/apache2handler/php_functions.c

안에서 unixd_config -> ap_unixd_config 로 변경하면 된다. 총 2군데 4번 변경하면 된다.

그리고 나서 다시 컴파일을 하게 되면 문제 없이 실행이 된다.


mysql 접속 시 패스워드 없이 또는 패스워드를 틀려도 로그인이 되는 경우 인증 방식이 소켓으로 되어 있기 때문에 인증 플러그인을 변경 해야 한다.=> UPDATE user SET plugin='mysql_native_password' WHERE user='root'; 후 재시작


'APM' 카테고리의 다른 글

centos6 apache2.2 + php5.3 + mysql5.1  (0) 2019.06.26
centos6 mariadb 10.1 , php5.4 yum설치  (0) 2019.06.11
ubuntu 18 apm 소스설치  (0) 2019.06.01
mysql 5.7 설치  (0) 2019.04.30
apache 2.4.x 설치  (0) 2019.04.30

centos7 apache2.4 letsencrypt 설치

# yum install epel-release

# yum install certbot

# certbot certonly --cert-name www.test.com --standalone -d www.test.com,test.com

이메일 기입 및 agree로 진행

/etc/letsencrypt/live/www.test.com/인증서 파일이 생성됨.

https://www.tuwlab.com/ece/28638 <- 해당 링크에서 참고하여 작성함


# certbot renew --no-self-upgrade    <- crontab에 인증서 갱신 명령어 등록 시 해당 옵션을 넣어주지 않으면 apt-get,yum 설치 시 사용자의 입력을 받을 수 없기 때문에 스크립트 실행이 종료된다고 한다.



Ubuntu letsencrypt 설정


wget https://dl.eff.org/certbot-auto

certbot을 설치한다.

apt-get 방식으로 설치해도 무관하다.

apt-get install certbot


certbot certonly --agree-tos --standalone --debug --no-bootstrap --domain test.com (webroot 방식 안될 경우 standalone 사용)

원하는 도메인에 대헤 인증서를 발급한다.


certbot-auto certonly --manul --preferred-challenges=dns --email test@test.com --server https://acme-v02.api.letsencrypt.org/directory --agree-tos --debug --no-bootstrap -d test.com -d *.test.com


서브도메인이 여러개 있을 경우 와일드카드 인증서를 발급 받는 방법도 있다.



a2enmod ssl 

인증서 모듈을 활성화 한다.


a2ensite default-ssl.conf

인증서 설정 파일을 활성화 한다.


apache2 restart

아파치 재시작



다른 방법으로 인증서 설치하기

# git clone https://github.com/letsencrypt/letsencrypt

# ./letsencrypt-auto certonly -a webroot --agree-tos -m testID@test.com -w /home/경로 -d www.test.com --rsa-key-size 4096

https://idchowto.com/?p=33077 <- 참고


/usr/bin/letsencrypt certonly --cert-name 인증서이름 --webroot -w /경로 -d 도메인


-참고 사항-



apache 1.x 버전은 startssl로 해야 443porp가 열린다.


letsencrypt  설치 시 http.conf 파일에서 mod_ssl 모듈과 socache_shmcb.so 모듈 2개를 활성화 하고

http-ssl.conf 파일의 Include 설정도 활성화 한다.


Redirect permanent / https://example.com  ->https 로  접속되기 위해 리다이랙트 설정



자체 DNS(bind) 사용시 letsencrypt 갱신 시 자체 DNS를 사용 해야 하며 recursion을 허용 해야 한다.


ssl 인증서 만료일 확인 명령어 : openssl x509 -in /경로/인증서파일.crt -noout -text

   letsencrypt certificattes

sendmail+dovecot+roundcube 


라운드큐브 설치 후 저장소를 찾을 수 없다며 로그인이 안되는 경우가 있다. 

dovecot 설정 파일에서 디렉토리 경로를 다른 경로로 바꾸어 본다.

메일박스 기본 디렉토리 (2)

mail_location = mbox:~/mail:INBOX=/var/mail/%u


roundcube설치 때 openssl 오류 발생시 php openssl 모듈 설치하면 됨


roundcube설치 때 imap,smtp 테스트가 실패할 경우 installer 설정에서 testdomai.com -> imap.testdomain.com 등으로 구문을 추가하거나 빼거나 수정하여 시도해 본다


ERR [SYS/PERM] Permission denied 에러 발생 시 /var/spool/mail/계정이름의 권한을 변경 한다.


roundcube의 로그는 /var/log/maillog 에서 확인 한다.

윈도우 에서만 원격접속이 안될 때가 있다. 방화벽을 내려도 안되면 서비스 구성에서 보안 설정을 낮춰본다.

시작 -> 모든프로그램 -> 터미널서비스 -> 터미널 구성 -> RDP-Tcp -> 속성 -> 일반 탭 -> 암호화 수준: 낮음 , 보안계층 : RDP 보안 계층


윈도우 원격 접속 포트 확인 -> # HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

+ Recent posts