Imgur

Ansible

Ansible은 오픈 소스 소프트웨어 프로비저닝, 구성 관리, 애플리케이션 전개 도구이다. 수많은 유닉스 계열 시스템에서 실행되며 유닉스 계열 운영 체제 및 마이크로소프트 윈도우의 구성이 가능하다.
시스템 구성을 기술하기 위해 자체 선언형 언어를 포함하고 있다. 위키백과

  • 테스트 환경을 구축(다양한 OS)

  • python으로 개발 되었고 YAML 언어를 통해 정의할 수 있고, JSON 방식으로 통신

  • OPEN Source

기본개념

환경설정, 배포를 가능케 하는 언어. 리모트 서버에 접속해서 무언가를 실행시키는 정책을 기술한다. YAML 문법으로 정책이 기술되어 고급 단계에서 로드밸런서를 모니터링하는 복잡한 환경에서도 사용할 수 있도록 한다.

playbook은 하나 또는 하나 이상의 play를 두게 되고, play의 목적은 여러 호스트들을 잘 정의 된 ROLETASK를 매핑하는 역할을 합니다. TASKAnsible모듈의 호출을 의미한다.
ROLE을 더 편하게 관리하기 위해서 YAML파일로 정의해서 사용할 수 있다. 또한 host inventory 파일에 정의한 서버 그룹별로 각각 나누너 provision 할 수 있도록 할 수 있다.

장점

  • 빠른 SSH 통신, 빠른 Provision을 이용가능

  • agent daemon을 사용하지 않음

  • 자동 배포 환경이 구성 쉬움

  • 멱등성
    여러 번 적용해도 결과 변동 없음
    바뀌는 것이 없으면 당연히 배포되어도 변경 없음
    바뀌는 부분이 있으면 그 부분만 반영
    shell, command, file module은 보장 안됨

  • playbook

  • ad-hoc 지원

  • 병렬 Provisioning 지원

단점

  • 시스템 초기 설치 수행은 불가능

  • 시스템 모니터링은 지원 안함

  • 시스템 변경사항 초적하지 않음

할수있는 것

앤서블에는 크게 3가지 요소가 있다.
inventory, playbook, module이 그것이다.
이는 각각 (1) 어디서, (2) 무엇을, (3) 어떻게 수행할지를 정의한다. (엄밀히 말하면 모듈이 플레이북에서 사용되지만, 이해를 위해 구분해 설명한다)

inventory

remote server에 대한 meta 데이터를 기술하는 파일.
인벤터리는 앤서블에 의해 제어되어 Infrastructure as a Code의 대상이 될 서버들의 목록을 정의하는 파일 일반적으로 hosts.ini 파일에 정의해 사용하는 듯 하며, 위 예시에서 작성했던 hosts.ini 파일이 바로 그것이다.
인벤터리에는 여러 서버들의 접속 정보 (SSH 접근 IP, 포트, 리눅스 사용자) 등을 정의.
기본 파일은 /etc/ansible/hosts를 읽게 하거나, 따로 inventory파일을 만들고 옵션을 주어 동작하게 할 수 있다. 만약 고정 ip를 가지고 있고, ghost 파일 안에 들어가 있지 않는 서버가 있다면 설정 파일을 만들 수 있고 테스트 환경을 만들 때 유용하다.

대충 아래와 같은 파일로 구성이 된다.

centos1 ansible_host=172.16.49.133 ansible_user=rootcentos2 ansible_host=172.16.49.134 ansible_user=rootzabbix ansible_host=172.16.49.135 ansible_user=root[server]centos1centos2zabbix

PLAYBOOK

설정을 관리가호 다수의 머신에 대한 배포 시스템에 대한 기본적인 단위. 복잡한 형태의 배포에 매우 적합하다. 설정을 정의할 수 있으며 특정머신의 집합을 오가며 다른 작업을 수행하도록 수동으로 작업 순서를 설정하는 것도 가능하다. 이 때의 작업은 동기 또는 비동기로 수행할 수 이다. /usr/bin/ansible명령을 통해서 AD-HOC 테스크를 실행하는 것에 반해 PLAYBOOK은 소스 컨트롤을 통해 보관하거나 사용자의 설정을 내보내거나 원격 시스템을 구성,보장디는데 더욱 적합합니다.

Module

이미 정의해 놓은 모듈들을 통해서 다중명령어를 보내줄 수 있다. 예를 들어 yum이라는 모듈을 통해서 설치작업을 요청할 수 있으며, shell모듈을 통해서 커맨드 입력을 보낼 수 있다.

ansible -l #모든 module 목록 조회

ad-hoc

adhoc이라는 의미는 임시적 수행을 말한다.
ansible의 playbook을 작성하는 것이 아니라 임시적으로 또는 특별하게 어떤 작업을 수행하기 위해서 사용할 수 있는 실행방법이라고 할 수 있다.

Ansible 시작하기

![](file:///Users/forteleaf/Library/Application Support/marktext/images/2019-09-06-16-16-11-image.png)

기본옵션 (Inventory)

hosts.ini파일을 아래와 같이 설정 된다. 파일 이름은 정해진 틀이 없으므로 편한데로 맞춰서 사용합니다.

centos1 ansible_host=172.16.49.133 ansible_user=rootcentos2 ansible_host=172.16.49.134 ansible_user=rootzabbix ansible_host=172.16.49.135 ansible_user=root[server]centos1centos2zabbix

ssh-copy-id로 자동로그인을 설정해 놓으면 ansible_password와 같은 옵션을 따로 설정하지 않아도 된다.

설정파일 ( ansible.cfg / .ansible.cfg )

ansible.cfg파일을 지정해 줌으로서 옵션에 넣을 변수를 줄이고 편하게 사용할 수 있다

## ansible.cfg[defaults]inventofy=./hosts.iniremote_user=rootprivate_key_file=~/.ssh/id_rsa

host_key_checking=false옵션을 추가하면, 접속시 key 확인하는 작업을 스킵합니다. 일일히 yes칠 상황을 제거해 줍니다

service 상태 조회

ansible all -m shell -a "service status sshd"

모듈 ( MODULE )

모듈들은 정말 다양한 기능들을 제공한다. 이런 기능은 없나? 생각하면 이미 개발되어 있는 상황이고 그게 안된다면, shell또는 command명령을 통해서 작업할 수 있다

shellcommand 모듈의 차이

Module : command

원격 노드에서 명령을 실행

명령 모듈은 명령 이름 뒤에 공백으로 구분 된 인수 목록을 사용합니다. 주어진 명령은 선택된 모든 노드에서 실행됩니다.
쉘을 통해 처리되지 않으므로 $HOME과 같은 변수 및 "<", ">", "|"및 "&"와 같은 조작은 작동하지 않습니다 (이 기능이 필요한 경우 쉘 모듈을 사용하십시오).

Module : shell

노드에서 명령을 실행

쉘 모듈은 명령 이름 뒤에 공백으로 구분 된 인수 목록을 사용합니다. 명령 모듈과 거의 동일하지만 원격 노드의 쉘 (/bin/sh)을 통해 명령을 실행합니다.

Module : template

nginx.ini와 같은 설정 파일을 role을 지정해서 서버마다 다른 설정 값을 넣어서 파일을 생성할 수 있는 기능입니다. 자주 사용되는 기능

PLAYBOOK

# public key 를 server들에 등록하는 playbook---- hosts: all    # inventory 의 모든 대상  tasks:        # 수행할 작업    - name: authorized to server    # 작업 이름      authorized_key:               # 수행할 MODULE 명        user: root                  # MODULE에 들어갈 environment        state: present        key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}" 

yml(야믈)의 파일 구조를 갖고 있습니다. 규칙성에서 벗어나면 제대로 동작하지 않습니다. 이를 유의해 주시면서 작업 하시면 오히려 정규화 된 표현에 코드 리딩하기 편할 것 입니다.

authorized_key를 사용하기 위해서는 암호또한 자동으로 입력 해 주는 sshpass가 필요합니다.

참조


블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

Untitled

CentOS 대 Ubuntu : 서버에 더 좋은 것은

가장 많이 사용되는 두 가지 서버 배포판은 CentOSUbuntu 입니다. 이것은 관리자, 초보자 및 전문가 모두의 주요 딜레마입니다.
두 가지 (그리고 그 이상) 배포판에 대한 경험을 가지고 우리는 서버에 사용될 때 CentOSUbuntu를 비교하기로 결정했습니다.

간략한 개요 :

CentOS Ubuntu
RedHat Linux Enterprise 기반 Debian 기반
업데이트가 느림 자주 업데이트 됨
업데이트가 느리지만 안정적 업데이트 된 패키지들이 볼안정하고, 안정화 되기까지 시간이 걸림.
튜토리얼이 충분하지 않고, 사용자 기반이 적다 풍부한 문서, 온라인 커뮤니티를 통해 충분히 학습할 수 있음
레드햇 기반 배포판이 없기 때문에, 초보자들에게 어려움 Ubuntu Desktop 버전이 존재함으로 초보자들이 접근하기 좋음
.rpm, yum 패키지 관리 .deb 패키지와 apt-get 패키지로 패키지 관리

어느 것이 초보자에게 더 낫지?

우분투. 언제나 그렇듯이, 귀하의 요구 사항과 이전 경험에 크게 의존하지만 일반적으로 우분투는 초보자에게 더 나은 선택입니다.
주로 다음 두 가지 이유 때문입니다.

  • 우분투에는 무료로 도울 준비가 된 커다란 커뮤니티가 있습니다. 그리고 우리는 정말 큰 의미가 있습니다.
    수많은 온라인 포럼 및 그룹에 속한 수천 명의 사용자들이 지원을 해 줄수 있습니다.
    CentOS에 대한 많은 자습서와 도움말 또한 찾을 수 있습니다. 특히 간단한 LAMP 스택과 인기있는 응용 프로그램에 특히 유용합니다.

  • 우분투 서버는 이전에 우분투 데스크톱을 사용 해본 사람이라면 훨씬 쉽습니다.
    CentOSFedora도 마찬가지지만 Ubuntu Desktop 버전은 가정용 Linux 기반 배포판보다 훨씬 인기가 있습니다.

기업을 위한 선택

CentOS. 다시 한 번 우분투를 비즈니스 웹 사이트 나 내부 회사 서버로 사용할 수는 있지만 CentOS의 장점은 다음과 같습니다.

  • CentOS는 (틀림없이) 더 안정적이고 안전합니다.
    CentOS는 업데이트 빈도가 적기 때문에 소프트웨어가 더 오랜 기간 테스트되고 진정한 안정 버전 만 출시된다는 의미입니다.
    CentOS를 사용하면 새롭고 버그가 많은 앱 릴리스에서 안정성 문제가 발생하지 않을 것입니다. 왜냐하면 실제로 새롭고 버그가있는 버전을 얻지 못할 것이기 때문입니다.

  • 대부분의 제어 패널 (가장 인기있는 패널을 포함하여 - cPanel)은 CentOS 만 지원합니다. 즉, 웹 호스팅 회사이거나 고객이 많고 제어판이 필요한 웹 에이전시 인 경우 CentOS가 더 나은 옵션입니다.

어느 것이 더 빠를까

속도 측면에서 동일합니다. 하드웨어만큼 빠릅니다. 당신이 하드웨어를 구성하는만큼 빠릅니다.
무엇이든 관계없이 모든 서버, 구성 및 응용 프로그램을 올바르게 구성하고 보안해야합니다.

블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

XCP-ng Tools 설치

가상화 2018. 11. 29. 14:57

install XCP-ng Tools on CentOS

이 가이드는 영문으로 잘 나와 있습니다. 본문은 여기

Xenserver 를 설치해서 사용하다 기능에 몇가지 제한이 있다는 사실을 알고 기존에 있는 Xenserver를 Fork 해서 어느정도 공개로 제공하고 있는 Xcp-ng 프로젝트를 알게되고 변경 하였습니다.

그 와중에 XCP-ng Center 에서 Guest OS 의 상황을 파악할 수 있는 XCP-ng Tools 를 설치 할 수 있는 방법에서 조금 헤매서 글을 남깁니다.

Imgur

XenServer Center의 Search 메뉴에서 위와 같이 XCP-ng Tools not installed라는 메세지를 확인 할 수 있을 겁니다. 이 버튼을 눌러주면 자동으로 guest-tools.iso 파는 파일이 DVD DriveInsert 된 상태를 확인 할 수 있습니다.

부팅을 하고 로그인을 합니다.

# mount -o ro,exec /dev/disk/by-label/XCP-ng\\x20Tools /mnt

# blkid -t LABEL="XenServer Tools"

# /mnt/Linux/install.sh

# umount /mnt

Imgur

'가상화' 카테고리의 다른 글

docker | error : Failed to get D-Bus connection: Operation not permitted  (0) 2019.01.16
XCP-ng Tools 설치  (0) 2018.11.29
블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

centos 7 vsftpd 설치 오류

일단 현재 사용 버전

[root@centos home]# rpm -qa *-release
centos-release-7-5.1804.5.el7.centos.x86_64
elrepo-release-7.0-3.el7.elrepo.noarch
epel-release-7-11.noarch

vsftpd 설치에 관한 문서

centos 7 에 vsftpd 를 설치해서 chroot() 를 적용해서 일반 사용자들은 상위 폴더에 접속제한를 주려고 한다.

vsftpd.conf파일 안에 설정을 다음과 같이 바꿨다.

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
  • chroot_local_user=YES … 상위폴더에 접근 제간
  • chroot_list_enable=YES … 리스트를 통해 상위접근을 하게 한다.
  • chroot_list_file=/etc/vsftpd/chroot_list … 리스트 파일 위치

500 OOPS: chroot

filezilla 를 통한 접속

상태:	연결 수립, 환영 메시지를 기다림...
응답:	220 (vsFTPd 3.0.2)
명령:	AUTH TLS
응답:	530 Please login with USER and PASS.
명령:	AUTH SSL
응답:	530 Please login with USER and PASS.
상태:	보안되지 않은 서버입니다. TLS를 통한 FTP를 지원하지 않습니다.
명령:	USER leaf
응답:	331 Please specify the password.
명령:	PASS ********
응답:	500 OOPS: chroot
오류:	치명적 오류: 서버에 연결하지 못함

에러 발생 이유

SELinux 설정 때문에 발생하였음.
그렇다고 SELinux 설정을 enforcing에서 disabled하는 행위는 최대한 피하자. 보안상 나중에 이슈가 있을 수 있으며, 나중을 위해서라도 최대한 이를 해결 해 보려고 한 것이 포스팅의 이유다.

해결책

SELinux 설정에 ftp 관련 항목을 enable 하자

일단 SELinux 에서 ftp 관련 허용 목록을 리스트 해보자

# getsebool -a | grep ftp
[root@centos /]# getsebool -a | grep ftp
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> on
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off
  • allow_ftpd_anon_write on : FTP 서버가 public_content_rw_t 파일 형식으로 파일을 읽고 쓸 수 있도록 허용합니다.
  • ftp_home_dir on : FTP 서버가 사용자의 홈 디렉토리에있는 파일을 읽거나 쓸 수 있도록 허용합니다.
  • allow_ftpd_full_access : FTP 서버가 시스템의 모든 파일을 읽거나 쓸 수 있도록 허용합니다.
  • allow_ftpd_use_cifs on : FTP 서버 공개 파일 전송 서비스에 CIFS를 사용하는 것을 허용합니다.
  • allow_ftpd_use_nfs on : FTP 서버 공개 파일 전송 서비스에 NFS를 사용할 수 있습니다.

ftp에 대한 모든 허용

# setsebool -P ftpd_full_access 1

vsftpd: refusing to run with writable root inside chroot()

응답:	500 OOPS: vsftpd: refusing to run with writable root inside chroot()
오류:	치명적 오류: 서버에 연결하지 못함

vsftpd 에서 chroot내에 쓰기 권한이 없어서 있기때문에 발생한 원인이다. 이를 해결하기 위해서는 설정을 통해서 쓰기권한이 있어도 좋다는 허용을 해 주던가 아니면 폴더ㅈ에 쓰기 권한을 제거하는 방법이 있다.

vsftpd.conf 에서 쓰기 권한을 허용

vsftpd.conf 설정 변경

chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES

폴더에서 쓰기 권한을 제거

# sudo chmod u-w [사용자폴더명]

이렇게 한다면 파일을 복사해서 넣을 수 없을 것이다.

'리눅스' 카테고리의 다른 글

synology | nginx + php70 + mariadb + wordpress  (0) 2019.02.15
CentOs7 | Vim8 설치하기  (0) 2018.12.07
CentOS7 | vsftpd 설치 오류  (0) 2018.11.19
firstmall plus 설치하기  (0) 2018.07.27
Amazon Linux AMI에 mysql57 설치  (0) 2018.07.24
nginx + php71 + php-fpm 설치하기  (0) 2018.06.20
블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

firstmall plus 설치기

주의사항

  • php 7.0.30 버전을 사용해야 한다.
    • 패키지 명령어를 통해서 간단히 설치할 수 있다. (firstmall에서는 컴파일이 기본). 사실 컴파일이 시간이 많이 들지만 속도면서 우월하다.
    • firstmall 에서 제공하는 본인확인 모듈이 php 7.0 에 맞춰져 있다. 이게 호환되는 버젼이 7.0이고 상위 버전을 설치하려면 나이스 인증 업체에 연락을 해서 상위 버전에 맞는 php 파일을 제공 받아야 한다.
  • Linux 에 설치해야 하는 이유
    • firstmall에서 제공하는 모듈은 중에 일부를 컴파일해서 사용해야 되기 때문에 윈도우에서 컴파일 번거롭다.
  • firstmall 설치 기준이 Centos 이다.
    • window에도 설치해 봤는데 초반에 뻘짓을 했다. 이제는 대충 사양을 다 알아서 어디서든 설치할 수 있는 수준이 됐다.

centos7 을 설치

kernel upgrade

보인을 위한 커널 업그레이드.

firstmall 설치파일 옮기기

scp 명령어를 통해서 파일을 이동

# scp [file_name] root@[서버주소]:~/

mysql 5.7.17 설치

컴파일 해서 설치를 권장하지만, 설정의 구찮음으로 stable version 으로 설치 했다.

사전 작업

컴파일에 필요한 패키지 설치

# yum -y install compat-libstdc* compat-glibc* cpp* gcc* rpm-devel elfutils elfutils-libelf elfutils-devel gdbm* flex gd gd-devel gd-progs libjpeg* libpng* freetype* libart* openssl* ncurses-devel libxml2* cmake bison make

boost 1.59.0 설치

mysql 컴파일에 필요. 버전에 맞게 인터넷 검색을 통해서 다운로드. mysql 소스 파일이 있는 곳에서 아래 명령어를 입력

다운로드
# wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
압축해제
# tar xvfz boost_1_59_0.tar.gz
cmake 작성
 # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1  -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=1  -DWITH_EXTRA_CHARSETS=all -DWITH_ZLIB=system  -DDOWNLOAD_BOOST=1  -DWITH_BOOST=./boost_1_67_0 -DMYSQL_DATADIR=/usr/local/mysql/data
컴파일 & 설치, 엄청난 시간이 들어간다. 대신 좀 빠르겠지.
# make
# make install
기존에 있는 mysql 설정파일 덮어쓰기
# cp support-files/my-default.cnf /etc/my.cnf
mysql 설정 파일추가
# vi /etc/my.cnf
[mysqld]
innodb_file_per_table -> 선택 입력 옵션
sql-mode="NO_AUTO_CREATE_USER" -> 필수 입력 옵션
초기화
# /usr/local/mysql/bin/mysqld --no-defaults --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --initialize

에러가 없이 진행이 된다면, 패스워드가 화면에 표시된다.

[Note] A temporary password is generated for root@localhost: %y1jWyjqi(&( <- 처음 DB root 비밀번호 지정시 필요
디렉토리 권한설정
# chown -R root.mysql /usr/local/mysql/
# chown -R mysql /usr/local/mysql/data
Mysql 실행
# /usr/local/mysql/support-files/mysql.server start
재시작시 자동 실행등록
# cp -a support-files/mysql.server /etc/init.d/mysqld
# cd /etc/rc3.d
# ln -s ../init.d/mysqld S90mysqld
mysql 계정 정보 변경
# /usr/local/mysql/bin/mysqladmin -u root -p password '사용할 root 비밀번호 지정'

이 방법에서 에러가 나서 아래와 같은 방법으로 실행했다.
사실은 일종의 초기화 방법이기도 하다.

# /usr/local/mysql/bin/mysql_secure_installation

새로운 root 비밀번호를 입력한다.
나머지는 yesyesyesyesyesyesyes

MARIADB 10.3

마리아DB에서도 설치할 수 있다.
라이센스 문제가 있을 수도 있겠다싶어서 개인적으로는 여기로 설치했다.아래는 MariaDB 에서 설정하는 방법.
대게 MYSQL과 비슷한 설정을 가지고 있지만, Mysql 베이스 버전에 맞게 설치를 진행해다 한다.

SQL-MODE

ERROR 1265 : Data truncated for column 에 대한 대응

STRICT_TRANS_TABLES 또는 STRICT_ALL_TABLES 중 적어도 하나가 사용되는 모드를 엄격 모드라고합니다.
엄격 모드가 설정되지 않으면 (버전 <= MariaDB 10.2.3의 기본값), MariaDB는 너무 긴 문자열을 자르거나 범위를 벗어난 숫자 값을 조정하고 경고를 생성하는 등 잘못된 값을 자동으로 조정합니다.
엄격 모드가 설정된 경우 (기본값 : MariaDB 10.2.4) 명령문이 실패하고 대신 오류가 반환됩니다. IGNORE 키워드는 엄격 모드가 설정되어 오류를 경고로 변환 할 때 사용할 수 있습니다.

> select @@sql_mode, @@global.sql_mode;

출력내용

STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

NO_AUTO_CREATE_USER만 남겨야 하므로, 아래와 같이 입력한다.

> select @@sql_mode, @@global.sql_mode;
> set @@SQL_MODE = 'NO_AUTO_CREATE_USER';
> set @@global.SQL_MODE = 'NO_AUTO_CREATE_USER';

본인은 global.@@sql_mode 도 설정을 변경해야 적용이 됐다.

httpd 2.2.31 설치

준비

# tar xvfz httpd-2.2.31.tar.gz

PHP 7.0.30 설치

컴파일 하다가, 그냥, package로 설치가 된다는 것을 알게 됨

# sudo yum install php70 php70-soap php70-mysqlnd php70-gb php70-mcrypt php70-opcache php70-mbstring php70-xml php70-zip php70-devel

SELINUX 끄기

/var/www/html 에 접속을 하려고하면 다음과 같은 에러를 뿜어내는 것을 알 수 있다.
selinux 의 보안체계 때문이다.

core:crit] [pid 1502] (13)Permission denied: [client 192.168.0.114:54909] AH00529: /var/www/html/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable and that '/var/www/html/' is executable
# Forbidden

You don't have permission to access / on this server.

SELinux 해제

  • 인터넷에 연결된 리눅스 서버라면 SELinux 해제는 결코 추천하지 않는다.
  • 해제할 경우 다시 활성화 시키려면 재부팅이 필요하며 재부팅시 모든 자원에 대해 보안 레이블을 설정해야 하므로 부팅 시간이 매우 오래 걸릴 수 있다.

SELinux 해제 방법

#  vi /etc/sysconfig/selinux

다음 항목을 아래와 같이 수정 후, 재부팅 한다.

SELINUX=disabled

'리눅스' 카테고리의 다른 글

CentOs7 | Vim8 설치하기  (0) 2018.12.07
CentOS7 | vsftpd 설치 오류  (0) 2018.11.19
firstmall plus 설치하기  (0) 2018.07.27
Amazon Linux AMI에 mysql57 설치  (0) 2018.07.24
nginx + php71 + php-fpm 설치하기  (0) 2018.06.20
centos 7 yum 깨짐  (0) 2017.12.05
블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

version 정보

  • nginx : 1.14.0
  • php : 7.1.18

yum install nginx 를 통해서 설치하였으며,

# yum install nginx

[root@centos html]# nginx -v
nginx version: nginx/1.14.0

php71 은 remi repo를 추가해서 아래와 같이 설치했다.

# yum --enablerep=remi-php71 install php-fpm php-common

[root@centos html]# php -v
PHP 7.1.18 (cli) (built: May 24 2018 07:59:58) ( NTS )
Copyright © 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright © 1998-2018 Zend Technologies

설정파일

/etc/php-fpm.d/www.conf 파일

########### file /etc/php-fpm.d/www.conf
user = nginx
group = nginx
;listen은 nginx 설정과 맞춰줘야 한다.
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock;
listen.owner = nginx
listen.group = nginx

/etc/nginx/conf.d/default.conf 파일

########### file /etc/nginx/conf.d/default.conf

server {
    listen   80;
    server_name  your_server_ip;

    # note that these lines are originally from the "location /" block
    # root 설정이 없으면 404 에러가 날수 있다.
    root   /usr/share/nginx/html; 
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        #fastcgi_pass 는 아래 두개 중 아무거나 사용해도 좋으나 php-fpm.d/www.conf 설정과 맞춰줘야 한다.
        #fastcgi_pass 127.0.0.1:9000;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        #/scripts 이름으로 인해서 오류가 생길 수 있다.
	    #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

에러상황 #1

사이트에 접속은 되는데 404 error 또는 파일을 찾을 수 없는 상황

[error] 7469#7469: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.0.114, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fpm.sock:",

해결방법

/etc/nginx/conf.d/default.conf 설정파일에서 아래와 같이 root 폴더 설정을 한다.

server {
	root /usr/share/nginx/html;
	index
}

에러상황 #2

*1 connect() to unix:/var/run/php-fpm/php-fpm.sock failed (13: Permission denied) while connecting to upstream,

php-fpm.sock 의 그룹:사용자 권한 문제
아래와 같은 명령어로 해결할 수 있다.

# chown nginx:nginx /var/run/php-fpm/php-fpm.sock

다른 분들 고생 안했으면 좋겠다.

...

'리눅스' 카테고리의 다른 글

firstmall plus 설치하기  (0) 2018.07.27
Amazon Linux AMI에 mysql57 설치  (0) 2018.07.24
nginx + php71 + php-fpm 설치하기  (0) 2018.06.20
centos 7 yum 깨짐  (0) 2017.12.05
centos 7 커널 최신버전으로 설치하기  (0) 2017.09.18
리눅스 daemon 항목들 정리  (0) 2016.08.09
블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

centos 7 커널 최신버전으로 설치하기

참조

커널 version 확인 하기

# uname -sr

CentOS 7.3 최신버전을 설치했는데도 저의 커널은 3.1 버전이었습니다.

업데이트 진행

ELRepo repository 를 CentOS7 에 추가합니다.

# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

설치가능 커널목록 을 확인 합니다.

# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

커널을 설치합니다.

# yum --enablerepo=elrepo-kernel install kernel-ml

여기가지 설치가 끝났습니다.
이제 부팅 순서를 변경해야 새로운 커널로 부팅이 되는 것을 확인 할 수 있습니다.

현재 부팅 순서 변경하기

ssh 로 접속해서 하려니 속이 터졌습니다.

/etc/default/grub파일의 GRUB_DEFAULT=0 으로 추가를 해 줘도 새로운 커널로 부팅이 안되서 찾와봤는데, 아래처럼 하는게 제일 확실한 방법 인 것을 알게 되었습니다.

오타가 나는 순간 부팅이 안되고 물리적으로 서버를 찾아가야 하는 합니다.

현재 부팅 순서 확인하기

# grub2-editenv list
saved_entry=Fedora (3.14.9-200.fc20.x86_64) 20 (Heisenbug)

시스템에 등록 된 부팅커널 확인

# grep ^menuentry /boot/grub2/grub.cfg | cut -d "'" -f2
CentOS Linux (4.13.2-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-693.2.2.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.26.2.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-99469085913545568c1e75ad9d37bd09) 7 (Core)

uefi로 설치하신 분은 /boot/efi/EFI/centos/grub.cfg 에 위치하고 있습니다.
# grep ^menuentry /boot/efi/EFI/centos/grub.cfg | cut -d “’” -f2

부팅커널 변경하기

위의 리스트에서 붙여넣기 해 주세요. 괜히 직접 쓰다가 오타나지 마세요.

# grub2-set-default "CentOS Linux (4.13.2-1.el7.elrepo.x86_64) 7 (Core)"

부팅 설정이 변경 됐는지 확인 해 봅니다.

# grub2-editenv list
saved_entry=CentOS Linux (4.13.2-1.el7.elrepo.x86_64) 7 (Core)

재부팅 및 확인

다음 명령어를 통해서 재부팅을 합니다.

# reboot

변경 된 것을 확인 할 수 있습니다.

[root@ML350 ~]# uname -sr
Linux 4.13.2-1.el7.elrepo.x86_64

'리눅스' 카테고리의 다른 글

nginx + php71 + php-fpm 설치하기  (0) 2018.06.20
centos 7 yum 깨짐  (0) 2017.12.05
centos 7 커널 최신버전으로 설치하기  (0) 2017.09.18
리눅스 daemon 항목들 정리  (0) 2016.08.09
소유자, 그룹 변경하기  (0) 2016.07.28
우분투에서 일본어 사용하기  (0) 2016.07.18
블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

web, sql 서버를 윈도우로 사용하고 있습니다. 그런데, 저는 리눅스 서버가 더 안정적이라고 생각해서 리눅스 서버로 backup 서버를 구축하고자 했습니다.

아크로닉스는 윈도우와 리눅스를 동시에 제공하고 있습니다.

설치하고 난 뒤에 알게 된 문제점

  1. 백업 서버 방화벽(firewalld)
  2. 백업 파일 배포방법(smb server 를 통한 파일 복제)

순서

install acronis 12 for CentOs 7

Imgur

저는 CentOs 7 로 구성하고 잇어서 Linux 64 버전을 다운 받았습니다.

설치프로그램 실행

# ./AcronisBackup_12.5_64-bit.x86_64

여기서 알아둬야 할 점은 설치 마지막에 두가지 포트를 설정해 주는 점입니다. 아래 방화벽을 세팅할때 사용합니다.

  • 관리 서버에 액세스하기 위해 웹 브라우저 포트기본값 9877
  • 제품 컴퍼넌트 간 통신에 사용될 포트 7780

방화벽

Centos 7 부터는 firewalld 라는 프로그램이 기본으로 내장 되어 있어서 방화벽을 제어 할 수 있습니다.
저는 여기를 참조해서 세팅을 했습니다.

네트워크 형태에 따라 다양한 방화벽 룰을 적용할 수 있습니다.

public zone 의 설정 파일은 XML형식로 저장이 됩니다. /etc/firewalld/zones/public.xml 에 저장이 됩니다.

Acronis backup 를 사용하기 위해서는 9877, 7780 포트를 개방해 줘야합니다. 아래와 같이 입력 해서 포트를 개방해 줍니다.

# firewall-cmd --permanent --zone=public --add-port=9877/tcp
# firewall-cmd --permanent --zone=public --add-port=7780/tcp
포트제거 방법
# firewall-cmd –permanent –zone=public –remove-port=포트

또는, 설정파일에 접근해서 수정을 합니다.

수정을 했으면, 다시 방화벽을 재실행 합니다.

# firewall-cmd --reload

ip 주소를 입력하면, 다음과 같은 접속 화면을 볼 수 있습니다. (이 화면은 한번 백업을 실행한 모습)

Imgur

에이전트 연결하기

백업할 컴퓨터에 AcronisBackup 프로그램을 설치합니다. 윈도우용 백업 프로그램을 실행합니다. 게다가 SQL 서버를 백업할 예정이어서 Agent for SQL 을 지정 했습니다.

Imgur

설치할 항목을 정하고 난뒤에 관리서버에 접속할 주소를 지정해 주면 됩니다.

백업 계획 만들기

문제점

로컬디스크(SQL 이 설치가 되어 있는 곳)에 백업은 간단합니다. 그러나 제가 원하는 방법은 백업서버에 저장을 하는 것이었습니다. 그래서 백업 저장되는 곳을 네트워크 드라이브를 만들어 주는 방법을 선택 했습니다.

관리서버가 있으면, 자동으로 관리서버의 디렉토리에 자동으로 인식 저장할 수 있는 줄 알았는데, 그게 아니라, acronis backup 프로그램 외적으로 연결통로를 만들어서 사용해야 했습니다. 이럴 꺼면, 기본적인 스케줄로 SQL 백업 스케줄을 만들어서 사용해도 괜찮지 않을까 싶습니다.

centos 7 에 samba 설치

yum 을 통해서 삼바를 설치

# yum install samba

사용자를 만들어 줍니다.

# useradd acronis -g acronis

useradd acronis 라고 입력 했더니, 이미 있는 그룹이라면서 만들어지지 않습니다. 그래서 그냥 이렇게 만들었습니다.

삼바사용자 생성

# smbpasswd -a acronis
New SMB password:
Retype new SMB password:

공유할 폴더를 만들고, 사용자 권한을 연결합니다.
저는 사용자 폴더를 통째로 권한을 주려고 합니다. 어차피 이거를 위해서만 사용할 꺼니까요

# chown -R acronis:acronis /home/acronis
# chmod -R 770 /home/acronis
$ chron -t samba_share_t /home/acronis

chron 은 seLinux 때문에 사용합니다.

삼바 설정 변경

# vi /etc/samba/smb.conf

아래와 같이 추가했습니다.

[acronis]
path = /home/acronis
valid users = @acronis, acronis
guest ok = no
writable = yes
browsable = yes

설정을 저장하고 삼바를 재실행 합니다.

# systemctl restart smb
# systemctl restart nmb

아크로닉스에서 위치추가

이제 SQL 서버에서 Cent Os 서버의 파일 저장소에 접근할 수 있게 되었습니다.

접속 아이디와 비밀번호는 위에 설정한 대로 입력하면 접근할 수 있습니다.

리눅스도 초보고 윈도우 서버도 초보이다 보니 맨땅에 열심히 헤딩하고 있습니다.
윈도우 라이센스 비용이 많이 들어서, 이렇게 했지만, 돈 많으신 분들은 직접 라이센스 구매해서 하시기 바랍니다. 참고로 아크로닉스는 서버 대당비용을 지불해야 합니다. 더 구입해야 하네요.

블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

HP 서버를 하나 새로 들어오면서 RAID1 구성으로 Centos를 설치하려고 하는데, 이게 B140i통해서 구성을 해야 되는 문제가 있다. 이를 사용하려면 이에 받는 드라이버를 로드해서 인스톨해야 한다.

ahci 로 그냥 설치하면 생기는 문제점

  1. RAID 구성을 사용할 수 없다.
  2. 팬이 55% 로 자동 조정

ahci 로 간편하게 설치가능하지만, 서버부팅시점에 나는 만큼의 서버팬이 돌아가는 것을 경험할 수 있다. 반드시 B140i드라이버를 통해서 OS 설치 하여야 합니다.

반드시 드라이버 dd 로드 하셔서 사용하세요

B140i 드라이버 다운로드

드라이버는 매번 업글되니 확인하기 바란다.

Centos 와 Redhat enterprise 드라이버는 동일하므로 여기서 다운받으면 된다. 드라이버 다운로드

다운로드하신 드라이버 hpxxx.dd.gz 압축 풀면 hpxxx.dd 파일 확인되며, 확장자명에 .iso를 추가합니다

예시
hpdsa-1.2.6-115.rhel7u0.x86_64.dd.iso

USB에 저장을 해 놓습니다.

OS 설치

OS 설치이미지 장치와 DD USB 메모리 모두 서버에 연결하고, OS 이미지로 부팅합니다.

아래 설치 메뉴에서 'e'를 눌러서 편집모드로 들어 갑니다.

Imgur

linuxefi 라인의 제일 마지막 줄에 커서를 옮기고 quiet 뒤에 아래 문장을 이어서 작성합니다.

modprobe.blacklist=ahci inst.dd

일정시간이 지나고 난 뒤에 아래 화면이 나옵니다.
‘r’ 를 입력해서 저장되어 있는 USB를 선택합니다.
여기서는 2번으로 되어있습니다.
‘c’ 를 입력하고 계속 진행 합니다.

Imgur

그리고, 안에 있는 dd.iso 파일을 선택합니다. 파일이 제대로 들어있다면 아래와 같은 화면을 확인할 수 있습니다.

Imgur

확장자가 rpm으로 되어있는 드라이버를 찾을 수 있습니다.
1번을 눌러서 드라이버를 입력하고, ‘c’를 입력하고 다음으로 진행합니다.

Imgur

선택한 드라이버가 [x] 표시 된 것을 확인할 수 있습니다.
‘c’를 눌러서 다음으로 진행합니다.

Imgur

그럼 이제 설치가 진행되는 것을 확인 할 수 있습니다.

블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

Hyper-v 에 Centos 를 설치 및 네트워크 설정

hyper-v 를 통해서 Centos를 설치해서 서버를 운용해 볼 계획이었다. 그래서 설치와 네트워크 세팅을 조금 해 보려고 햇는데, 시작이 좀처럼 쉽지 않았다.

Hyper-v 에 Centos 설치

hyper-v 에 Centos 설치는 너무 간단하므로 넘어갑니다.
다른 글에서 설치하는 방법들을 무수히 찾을 수 있습니다.

주의할점
가상서버를 두려고 하는 파일 시스템을 NTFS로 한다.
1세대로 설치한다. (2세대 가능하지만 번거롭습니다.)

Hyper-v 스위치 구성

저는 다음과 같이 네트워크 구성을 하려고 합니다.

Created with Raphaël 2.1.2이더넷(Ethernet)외부 스위치(External)내부 스위치(Internal)CentOS(OS)

가상 스위치 설정

가상스위치를 설정합니다.

외부로 하나를 만듭니다.

내부 스위치를 하나 만듭니다.

네트워크 어댑터 설정

외부 네트워크 (External) 어댑터 설정

제어판네트워크 연결에 들어가면 아래와 같은 어댑터들이 추가 된 것을 확인 할 수 있습니다.

외부스위치(External)을 더블클릭해서 속성정보에 들어가서 공유에 들어가 아래와 항목들을 체크 합니다.

□ 다른 네트워크 사용자가 이 컴퓨터의 인터넷 연결을 통해 연결할 수 있도록 허용(N)
□ 다른 네트워크 사용자가 공유 인터넷 연결을 제어하거나 중지시킬 수 있도록 허용(O)

여기까지하고 확인을 누릅니다.

내부 네트워크( Internal) 어댑터 설정

외부 네트워크를 설정 했던 방식그대로 아래와 같이 설정합니다.

외부 네트워크에서 공유항목을 체크하고 오면, 인터넷 프로토콜 버전4(TCP/IPv4)에 IP 주소와 서브넷 마스크가 자동으로 입력되어 있는 것을 확인 할 수 있습니다.

ip주소 : 192.168.137.1
서브넷마스크 : 255.255.255.0

그러나 저는 사진과 같이 설정 했습니다. 이 부분은 마음대로 정해도 되지만, 처음 하시는 분이라면 사진을 따라서 테스트 하는 것을 추천합니다. 어느정도 원리를 파악하면 그 때에 마음대로 수정하시기 바랍니다.

그래서 저는 아래와 같이 수정 했습니다.

ip주소 : 10.0.1.1
서브넷마스크 : 255.255.255.0

이제 내부 스위치까지 인터넷이 도착할 수 있게 되었습니다. Hyper-V 와 윈도우에서 설정하는 작업은 끝났고, 이제 CentOS에서 내부 IP 설정을 해주면 됩니다.

CentOS 설정

CentOS 는 기본적으로 네트워크 어댑터가 작동하지 않게 되어있습니다. 이부분을 설정으로 부팅시 동작하게 설정하고 DHCP로 자동설정 하는 방식이 아닌 직접 잡아서 사용하도록 하겠습니다.

저는 이곳을 참고 해서 CentOS 네트워크 설정 작업을 했습니다.

/etc/sysconfig/network-scripts/ifcfg-eth0

vi, nano 를 이용해서 위의 파일을 변경합니다.

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
  1. BOOTPROTO=dhcp부분을 static으로 변경합니다.
  2. ONBOOT=no 부분을 yes 로 변경합니다.
  3. ip,netmask,gateway설정을 합니다.

다음과 같이 설정 했습니다.

IPADDR=10.0.1.100
NETMASK=255.255.255.0
GATEWAY=10.0.1.1

모두 대문자로 입력해야 합니다.
게이트웨이에 대한 설명

/etc/resolv.conf

네임서버 설정을 합니다.

    # Generated by NetworkManager
    nameserver 10.0.1.1
테스트
게이트웨이가 제대로 연결이 되어있나 검사합니다.
어디서 에러가 났는지 파악 할 수 있는 게 중요합니다.
# ping 10.0.1.1

service network restart

[root@localhost ~]# service network restart
Restarting network (via systemctl):                        [  OK  ]

다음 메세지와 함께 설정이 완료되었다는 것을 확인할 수 있습니다.

[root@localhost ~]# ifconfig

ifconfig가 없다면
# yum install net-tools -y
를 입력해서 설치하세요

PS
그런데, 이상하게 컴퓨터를 재부팅하면 내부 스위치가 죽어버린다.
외부 어댑터의 공유 기능을 껏다가 다시 키고, 설정을 다시 하면 되는데, 무엇이 문제 인지 잘 모르겟다.
이 떄문에 이틀을 날림.
지금은 hostname 설정을 하고 있는데, 경험이 없으니 맨땅에 헤딩을 하고 있는 중.

블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요