1. firewalld 중지 및 해제하기

systemctl stop firewalld
systemctl mask firewalld

systemctl status firewalld (firewalld 상태 확인)

* firewalld.service
   Loaded: masked (/dev/null; bad)
   Active: inactive (dead)

위와 같이 나오면 정상적으로 죽은 것이다.

2. iptables service 설치

yum -y install iptables-services
systemctl enable iptables
systemctl start iptables

systemctl status iptables (iptables 데몬 상태 확인)

* iptables.service - IPv4 firewall with iptables
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)
   Active: active (exited) since 수 2021-02-03 05:14:07 KST; 1h 26min ago
 Main PID: 9989 (code=exited, status=0/SUCCESS)

 2월 03 05:14:07 localhost.localdomain systemd[1]: Starting IPv4 firewall with iptables...
 2월 03 05:14:07 localhost.localdomain iptables.init[9989]: iptables: Applying firewall rules: [  OK  ]
 2월 03 05:14:07 localhost.localdomain systemd[1]: Started IPv4 firewall with iptables.

위와 같이 나오면 정상적으로 시작 된 것이다.

'Works > CentOS' 카테고리의 다른 글

Cent OS 7에서 iptables 사용하기  (0) 2021.02.03
m4 오류해결법 sendmail  (1) 2020.06.26
CentOS 7 network prefix  (0) 2020.06.24
ssh, scp 비밀번호 없이 실행(공개키 기반 인증)  (0) 2020.05.13
네임서버 설정 검사하기  (0) 2019.09.04
scp 이용시 속도 제한 걸기  (0) 2019.04.09


MariaDB에 하이픈(-)이나 점(.)을 포함한 이름으로 데이터베이스를 만들면 에러가 납니다.

예를 들어

create database test-test;

라고 하면 다음과 같은 에러 메시지를 출력하면서 데이터베이스를 생성하지 못합니다.

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '-test' at line 1

이 문제를 해결하는 방법은 데이터베이스 이름을 낮은 액센트표(grave accent)로 감싸는 것입니다. 즉

create database `test-test`;

와 같이 하면 됩니다.


출처 : https://www.manualfactory.net/10161


[증상]


CentOS7 서버에 FTP를 구축하여 처음 연결을 시도하였는데 아래와 같이 

500 OOPS vsftpd: refusing to run with writable root inside chroot()라는 메시지와 함께 

Critical error가 뜨면서 연결이 되지를 않았다.

원인은 chroot내에 쓰기 권한이 없어서 발생한 문제로써, 설정을 바꿔주면 해결되는 문제다.

 

 

[해결책]

vi /etc/vsftpd/vsftpd.conf

allow_writeable_chroot=YES 구문을 적당한 위치에 추가해 준다.

systemctl restart vsftpd.service

  1. Favicon of http://tv.dasiboa.live 드라마다시보기 2020.09.11 09:51

    포스팅 잘 보고 갑니다...


종종 sendmail이 설치된 장비에서, 다음과 같은 오류를 볼 수 있다. (흔하지는 않지만..)

 

[root@linux ]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

m4:/etc/mail/sendmail.mc:10: cannot open `/usr/share/sendmail-cf/m4/cf.m4': No such file or directory

 

위와 같은 오류는 sendmail.cf를 생성하기 위한 sendmail-cf 패키지가 설치되어 있지 않을 경우에 발생한다.
해결 방법은 다음과 같이 sendmail-cf 패키지를 설치하면 된다.

 

[root@linux ]# yum install sendmail-cf

원문 : http://blog.daum.net/aswip/3638513

'Works > CentOS' 카테고리의 다른 글

Cent OS 7에서 iptables 사용하기  (0) 2021.02.03
m4 오류해결법 sendmail  (1) 2020.06.26
CentOS 7 network prefix  (0) 2020.06.24
ssh, scp 비밀번호 없이 실행(공개키 기반 인증)  (0) 2020.05.13
네임서버 설정 검사하기  (0) 2019.09.04
scp 이용시 속도 제한 걸기  (0) 2019.04.09
  1. Favicon of https://tvple.me/movie 영화다시보기 2020.08.31 16:39

    잘 보고 갑니다...


PHP 에서 mail 함수 정상 동작하는지 확인하는 소스

<?php
 //$mailto="받는주소";
 $mailto="sample@a.com";
 $subject="mail test";
 $content="test";
 $result=mail($mailto, $subject, $content);
 if($result){
  echo "mail success";
  }else  {
  echo "mail fail";
 }
?>


test.php 로 저장하여,
웹페이지에서 로드했을때
mail success 가 찍혀야 정상

만약, 위 소소에서 mail success 가 찍히는데
각종 커스텀 보드에서 메일 발송이 되지 않는다면,
php소스에서 mail 함수의 각 인자들을 확인해본다.

error_log($mailto, 0);  // mailto 변수를 서버의 에러로그에 찍는다.
error_log($subject, 0);

가령,

<?php
 //$mailto="받는주소";
 $mailto="sample@a.com";
 $subject="mail test";
 $content="test";
 $result=mail($mailto, $subject, $content);
 if($result){
  echo "mail success";
  }else  {

  error_log($mailto, 0); 

  echo "mail fail";
 }
?>

일 경우,
Apache 서버를 구동중이라면,
Apache\logs\error.log
파일에 mailto 변수의 내용이 찍힌다.

지금 내가 사용중인 환경은
Apache2.2.8
+ SMTP(W2K3 R2) + PHP5.2.5


위와 같이 테스트에서 이상이 없었으나,
제로보드에서는 메일을 보내지 못하는 현상이 발생한다.

따라서,
제로보드의 메일발송 소스를 확인해보니,
받는 사람(Receiptor) 변수에

위의 예제에서는 "sample@a.com" 이지만,
제로보드는 "받는사람 이름 <sample@a.com>"을 설정한다.

Receiptor 변수를 임의로 "sample@a.com"으로 수정하고
정상 작동하는 것을 확인
해당 소스를 수정해주었다.

제로보드\classes\mail\Mail.class.php

function getReceiptor() {
  //if($this->receiptor_name) return sprintf("%s <%s>", '=?utf-8?b?'.base64_encode($this->receiptor_name).'?=', $this->receiptor_email);
  return $this->receiptor_email;
}


수정이후 정상 발송 확인

출처: https://lifeful.tistory.com/19 [SEIZ THE DAY.]

  1. Favicon of http://tv.dasiboa.live 드라마다시보기 2020.09.04 14:31

    포스팅 잘 보고 갑니다...


[리눅스 sendmail 로 폼메일사용시 nobody@localhost.localhost.com 으로 발송될 경우 ]


보내는 사람 계정 명이 nobody@localhost.localdomain 으로 발송이 되서 

다음이나 다른 포털에서 반송되는 경우를 볼수 있습니다 

이럴때에 조치 방법으로 

php.ini에서 

 

메일 함수 사용시 

리눅스

php.ini 를 수정하는 방법.(Linux) 
; PHP mail() 함수에서 발송하는 메일에는 모두 적용됨.  수정후 아파치 재시작해야함. 
;sendmail_path = 

sendmail_path = “/usr/sbin/sendmail -t -i -f 계정@도메인” 

 

위에 처럼 수정후 발송 하면 잘 적용 되십니다 

무조건 적용 

 

 

윈도우

php.ini 를 수정하는 방법(windows)
; 모든 메일발송자가 고정적으로 지정됨.  수정후 아파치 재시작해야함. 
;sendmail_from = master@example.com 
=> 
sendmail_from = 계정@도메인



출처: https://cnisoft.tistory.com/10 [씨엔아이소프트]


 

CentOS7 에서부터는 network 설정방법이 좀 달라졌음


[root@localhost network-scripts]# vi /etc/sysconfig/network-scripts/ifcfg-enp6s0



랜카드명이 eth0 에서 enp6s0 처럼 변경되었음. 



고정ip설정시 netmask 설정은 NETMASK, PREFIX 중에 하나만 사용해야 함. 

두 개 다 지정해 놓을 경우 PREFIX가 우선함


NETMASK = 255.255.255.224

PREFIX = 27


와 


PREFIX = 27

NETMASK = 255.255.255.224


는 동일하게 PREFIX값이 우선함


PREFIX 값을 주석처리하거나 삭제함



-----



서브넷 클래스에 따른 NETMASK / PREFIX 값 (둘 중 하나만 사용)


NETMASK = 255.255.255.0

PREFIX = 24

호스트범위 : 1~254



NETMASK = 255.255.255.128

PREFIX = 25

호스트범위 : 1~126



NETMASK = 255.255.255.192

PREFIX = 26

호스트범위 : 1~62



NETMASK = 255.255.255.224

PREFIX = 27

호스트범위 : 33~62



NETMASK = 255.255.255.240

PREFIX = 28

호스트범위 : 49~62



NETMASK = 255.255.255.248

PREFIX = 29

호스트범위 : 49~54



NETMASK = 255.255.255.252

PREFIX = 30

호스트범위 : 53~54



출처: https://ellordnet.tistory.com/67 [IT in MT]

'Works > CentOS' 카테고리의 다른 글

Cent OS 7에서 iptables 사용하기  (0) 2021.02.03
m4 오류해결법 sendmail  (1) 2020.06.26
CentOS 7 network prefix  (0) 2020.06.24
ssh, scp 비밀번호 없이 실행(공개키 기반 인증)  (0) 2020.05.13
네임서버 설정 검사하기  (0) 2019.09.04
scp 이용시 속도 제한 걸기  (0) 2019.04.09


 

증상 : configure: error: DBA: Could not find necessary library.
해결 : ln -s /usr/lib64/libgdbm_compat.so /usr/lib/libdbm.so

 

증상 : checking for DB4 major version... configure: error: Header contains different version.

해결 1 : yum install db4 db4-devel (db4 와 db4-devel 을 설치한 뒤에도 안되면 아래 참고)

해결 2

/usr/include/db.h 가 /usr/include/libdb/db.h 로 연결되어 있을 경우
unlink /usr/include/db.h   (기존 db.h 링크 해제)

cd /usr/include
ln -s /usr/include/libdb4/db.h db.h

 

make 과정에서

/home/segio_php/php-5.2.17/ext/dom/node.c: In function ‘dom_canonicalization’:

/home/segio_php/php-5.2.17/ext/dom/node.c:1953:21: error: dereferencing pointer to incomplete type

/home/segio_php/php-5.2.17/ext/dom/node.c:1955:5: error: dereferencing pointer to incomplete type


오류가 발생한다면

 

[root@localhost] wget -O php.patch  https://mail.gnome.org/archives/xml/2012-August/txtbgxGXAvz4N.txt

[root@localhost] cd php-5.2.17

[root@localhost] patch -p0 -b < php.patch


patching file ext/dom/node.c

Hunk #1 succeeded at 1950 (offset 55 lines).

patching file ext/dom/documenttype.c

Hunk #1 succeeded at 215 (offset 10 lines).

patching file ext/simplexml/simplexml.c

Hunk #1 succeeded at 1343 (offset -74 lines).


patch 명령어를 찾을 수 없다고 할 경우 yum -y install patch

위와 같이 패치를 적용한 후 컴파일을 하면 문제없이 진행된다.


 

ssh, scp 를 리눅스에서 사용하려면 비밀번호를 입력하라고 프로그램이 멈춘다.


자동화 시스템에서 이러한 점은 큰 문제점이다.


이러한 점들을 해결하기 위해 공개키 기반 인증을 사용할 수 있다.


미리 ssh 인증을 서버간에 해두면, 그 인증파일을 사용하여 비밀번호 없이 ssh나 scp 를 사용할 수 있다.


방식은


scp를 사용할 서버에서 키를 아래와 같이 생성한다.

ssh-keygen -t rsa


Enter file in which to save the key : 인증 파일을 어디에 만들지 설정(엔터시 계정 아이디/.ssh 에 파일들이 생성)

Enter passphrase : 비밀번호를 입력 안하려 하니 엔터

Enter same passphrase again : 비밀번호 확인 그냥 엔터


생성 되는 파일은 ID/.ssh 에 id_rsa, id_rsae.pub 이다.


id_rsa 는 private key.

id_rsae.pub 는 public key 이다.


키가 생성 되었으면 scp를 받을 서버에 키를 전송해야 한다.

공개 키인 id_rsa.pub 를 전송한다.


scp .ssh/id_rsa.pub ID@serverName:.ssh/authorized_keys

하고 비밀번호를 입력하면 전송이 된다.


authorized_key 말고 authorized_key2 까지 인식 된다.


ssh ID@serverName 했을 때 비밀번호를 인증하라고 메시지가 나오지 않으면 된다.



출처: https://www.kiljh.me/entry/ssh-scp-비밀번호-없이-실행공개키-기반-인증 [Dominic Blog]


출처 : http://www.cgmarina.co.kr/computer/13720

 

[Session]

session.save_handler = files
session.save_path = /tmp
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.gc_maxlifetime = 1440
session.cache_expire = 180

session.save_handler :
기본적으로 Files 방식을 이용한다.
session_module_name() 을 통하여 현재 설정된 정보를 볼 수 있다. 공유 메모리를 사용하는 MM방식과 USER방식을 지원하다.
USER방식을 사용하는 경우에는 session_set_save_handler(string open, string close,string read, string write, string destroy, string gc)을 이용하여session_set_save_handler("함수명", "함수명", "함수명", "함수명", "함수명", "함수명")과 같이콜백 함수를 정의하고 콜백 함수를 호출하여 세션 데이터나 세션ID등을 데이터베이스 등에 보관하여 사용할 수도 있다.

session.save_path :
세션 파일을 저장할 경로을 의미하고 files 방식에서는 /tmp가 기본적인 파일이 저장되는 디렉토리의 절대 경로이다.

session.use_cookies :
세션과 함께 쿠키를 사용할 것인가에 대한 설정으로 기본적으로 쿠키와 함께 사용하도록 되어 있다.
쿠키를 사용하지 않는 경우에는 0으로 설정하고 버전에 따라서는 On과 Off로 설정하기도 한다.

session.name :
세션ID를 쿠키에 저장한 경우 PHP에서 세션ID를 확인하기 위한 변수명을 의미한다.
기본값으로 PHPSESSID로 설정되어 있으며$PHPSESSID라고 하면 세션ID를 확인할 수 있다.

session.auto_start :
PHP시작과 동시에 세션이 자동으로 스타트 되도록 하는 옵션이다.
기본값은 0으로 자동으로 시작되지 않도록 되어 있다.
그러므로 세션을 사용하기 전에는 session_start()를 호출해야 하고, 자동으로 시작하게 하려면 1로 설정하면 된다.
버전에 따라서는 On과 Off로 설정하기도 한다.

session.cookie_lifetime :
세션ID를 저장한 쿠키의 활성화 시간 또는 유효 시간을 설정하는 것이다.
기본값으로는 0이 설정되어 있어 브라우저가 종료되면 자동으로 쿠키값은 삭제된다.
session_set_cookie_params()함수를 이용하여 쿠키의 유효 시간을 변경할 수 있으며 PHP.INI를 수정하여 쿠키 적용 시간을 변경 가능하다.

session.cookie_path :
세션ID가 저장된 쿠키가 적용될 유효 경로(디렉토리)를 설정하는 부분이다.
기본값은 "/"로 모든 경로에서 적용 가능하도록 설정되어 있다.
session.cookie_lifetime과 같이 session_set_cookie_params()함수를 이용하여 쿠키의 적용 디렉토리를 변경할 수 있다.

session.gc_maxlifetime :
사용되지 않는 것으로 보이는 세션 데이터를 삭제한다.
세션ID를 삭제하는 것이 아니라 기본 설정 시간인 1440초 동안 아무런 요청이 없을때 자동으로 세션 데이터를 삭제하도록 되어 있다.
이렇게 자동으로 삭제하는 이유는 서버의 부하를 줄이기도 하지만 클라이언트에서 접속을 종료하였는지 여부를 확인할수 없으므로1440초 동안 사용하지 않는 데이터는 삭제하게 한다.

session.cache_expire :
서버에 저장된 세션ID의 활성화 시간이다.
클라이언트에서 브라우저를 닫아버리면 서버에서는 클라이언트가 연결중인지 아닌지 확인하는 방법이 없으므로 미리 세션데이터를 삭제하고 세션ID는 180분 이후에 삭제시킨다.
만약 세션 ID를 삭제하지 않으려면 PHP.INI를 수정하여 시간을 늘려주면 된다.


세션을 핸들링하려면 세션 저장 디렉토리를 별도로 사용해야 한다.

session_save_path("저장디렉토리");
ini_set("session.cache_expire", 180); // 세션 유효시간 : 분
ini_set("session.gc_maxlifetime", 86400); // 세션 가비지 컬렉션(로그인시 세션지속 시간) :

 

 

 

 

 

실제 사용할때에는  
session_save_path($_SERVER['DOCUMENT_ROOT']."/세션폴더");
ini_set("session.cache_expire", 180); // 세션 유효시간 : 분
ini_set("session.gc_maxlifetime", 86400); // 세션 가비지 컬렉션(로그인시 세션지속 시간) :
session_start();

 

위와같이 사용 하면 됨.



출처: https://jaweb.tistory.com/entry/php-session-유지시간-설정-작업관련 [잡다구리 파크]