728x90

CentOS 에서 httpd 등의 데몬 프로그램들을 설치하면 디폴트로 자동시작이 안 되어 있는 경우가 많습니다.

이 때는 수동으로 데몬 프로그램을 서버 부팅시 자동으로 시작하도록 설정해 둬야 합니다.

이 때 사용하는 명령어가 chkconfig 입니다.

 

서비스 리스트 조회

# chkconfig --list

 

서비스 자동시작 설정

# chkconfig httpd on

 

서비스 자동시작 해제

# chkconfig httpd off

 

데몬 프로그램의 서비스명은 chkconfig --list 에서 확인하시면 됩니다.

728x90

YUM 명령어 도움말 보기

yum -h

 

패키지를 최신 버전으로 업데이트 하기

yum update

 

패키지 설치하기

yum install <패키지명>

 

패키지 삭제하기

yum erase <패키지명>

 

모든 패키지 목록을 보기

yum list

 

모든 패키지 그룹 목록을 보기

yum grouplist

 

http과 관련된 패키지를 검색하기

yum search http

 

패키지 이름에 http를 포함하고 있는 것을 검색하기

yum list *http*

 

httpd 패키지의 정보 보기

yum info httpd

 

X Window System 패키지 그룹의 정보 보기

yum groupinfo "X Window System"

 

httpd 패키지 설치하기

yum install httpd

 

httpd와 php 설치하기

yum install httpd php

 

X Window System 패키지 그룹 설치하기

yum groupinstall "X Window System"

 

X Window System와 KDE Desktop 설치하기

yum groupinstall "X Window System" "KDE Desktop"

 

httpd와 php 삭제하기

yum erase httpd php

 

X Window System 삭제하기

yum groupremove "X Window System"

728x90

유저명 및 홈경로 변경(root 계정에서 실행)

# usermod  -l <newname> <oldname>

# usermod -m -d /home/<newname> <newname>

 

그룹명 변경(root 계정에서 실행)

# groupmod -n <newname> <oldname>

728x90

지역시간 설정

$ sudo dpkg-reconfigure tzdata

 

로케일 설정

$ sudo dpkg-reconfigure locales

728x90

은폰트 – unfonts

$ sudo apt-get install fonts-unfonts-core fonts-unfonts-extra

 

백묵폰트 – baekmuk

$ sudo apt-get install fonts-baekmuk

 

나눔폰트 – nanum

$ sudo apt-get install fonts-nanum fonts-nanum-coding fonts-nanum-extra

728x90

Nginx Proxy Manager (이하 NPM)에서 설정한 Proxy Host의 SSL의 인증 기간이 지나가서 문제가 발생하지 않도록 자동 갱신하는 방법에 대해 알아보도록 하겠습니다.

 

프록시를 설정하면서 SSL 인증을 설정하였는데요

이 인증서를 제때 갱신해주지 않으면 도메인으로 접속을 못하는 상당히 불편한 일을 겪게 될 수도 있습니다.

 

저희가 인증받은 Let’sencrypt는 무료 SSL 인증서로 갱신 주기가 90일입니다.

갱신 주기 : 90일 (만료 30일 이전부터 갱신 가능)

이렇게 90일마다 꼬박꼬박 갱신을 하지 않으면 어느날 갑자기 접속이 불가능해지는 상황이 발생한다는 것이죠

 

이제 본론으로 들어가서 명령어를 통해서 인증서를 갱신하는 방법을 설명하겠습니다.

 

갱신이 필요한 SSL 인증서

 

1. 명령어로 SSL 인증 하는 방법

1) docker 컨테이너명 확인

docker ps -a 

 

  CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS                 PORTS                                                                        NAMES

  c510bbe77858        jc21/mariadb-aria:10.4            "/scripts/run.sh"        6 hours ago         Up 6 hours             3306/tcp                                                                     npm_db

  b51361627e5b        jc21/nginx-proxy-manager:latest   "/init"                 6 hours ago         Up 6 hours (healthy)   0.0.0.0:80->80/tcp, 0.0.0.0:81->81/tcp, 0.0.0.0:443->443/tcp  npm

 

가장 우측의 NAMES를 보시면 npm이라는 컨테이너가 있죠. 이걸 잘 확인해두시면 됩니다.

 

2) 컨테이너 쉘로 명령어 실행하기

docker exec -it npm /usr/bin/certbot renew

  Saving debug log to /var/log/letsencrypt/letsencrypt.log

 

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

  Processing /etc/letsencrypt/renewal/npm-1.conf

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

  Cert not yet due for renewal

 

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

  Processing /etc/letsencrypt/renewal/npm-3.conf

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

  Cert not yet due for renewal

 

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

  Processing /etc/letsencrypt/renewal/npm-5.conf

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

  Cert not yet due for renewal

 

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

  Processing /etc/letsencrypt/renewal/npm-6.conf

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

  Cert not yet due for renewal

 

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

 

  The following certs are not due for renewal yet:

    /etc/letsencrypt/live/npm-1/fullchain.pem expires on 2020-09-01 (skipped)

    /etc/letsencrypt/live/npm-3/fullchain.pem expires on 2020-09-01 (skipped)

    /etc/letsencrypt/live/npm-5/fullchain.pem expires on 2020-09-01 (skipped)

    /etc/letsencrypt/live/npm-6/fullchain.pem expires on 2020-09-01 (skipped)

  No renewals were attempted.

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

“docker exec -it [컨테이너명] /usr/bin/certbot renew” 명령어를 입력하면 생성되어 있는 SSL 전체가 갱신됩니다.

 

2. crontab 사용하기

1) crontab 사용방법 (리눅스)

## crontab 설정

crontab -e

 

## crontab 목록 확인

crontab -l

 

## crontab 삭제

crontab -r

 

2) crontab 사용방법 (시놀로지)

시놀로지에서는 crontab -e 가 작동하지 않습니다.

## crontab 설정

nano /etc/crontab

 

3) crontab 주기 설정 방법

## crontab 주기

*      *      *      *      *

분(0-59)  시간(0-23) 일(1-31)   월(1-12)   요일(0-7)

 

## 매분마다 example.sh 실행 예제

* * * * * /home/example.sh

 

## 매주 일요일 10시 45분에 example.sh 실행 예제

45 10 * * 7 /home/example.sh

 

## 매일 매시간 0분, 30분에 example.sh 실행 예제

0,30 * * * * /home/example.sh

 

## 매일 7시 0분~30분까지 매분 example.sh 실행 예제

0-30 7 * * * /home/example.sh

 

## 매 10분마다 example.sh 실행 예제

*/10 * * * * /home/example.sh

 

## 매월 11일에서 15일까지 2시, 4시, 6시, 8시에 매 15분마다 example.sh 실행 예제

*/15 2,4,6,8 11-15 * * /home/example.sh

 

4) crontab 로그 기록하기 (cron logging)

## 로그 기록하기

* * * * * /home/example.sh > /home/example.log 2>&1

 

## 로그 누적시켜 기록하기

* * * * * /home/example.sh >> /home/example.log 2>&1

 

## 로그 없이 실행하기

* * * * * /home/example.sh > /dev/null 2>&1

 

여기까지 crontab 사용 방법을 알아보았는데요.

이제 crontab설정을 통해서 SSL 인증을 자동 갱신하는 방법에 대해 설명드리겠습니다.

 

3. crontab으로 SSL인증 자동 갱신하기

## root 권한 얻기

sudo -i

 

## crontab 열기

nano /etc/crontab

 

## 스크립트 파일 작성

nano /homes/script/auto_renew.sh

docker exec -it npm /usr/bin/certbot renew

 

## SSL인증을 위한 명령 추가하기 (매월 1일 0시 0분)

0       0       1       *       *       root    /volume1/homes/user/script/npm/auto_renew.sh

 

위와 같이 1달 단위로 갱신을 설정해두면 Let’sencrypt의 갱신주기 범위를 지나지 않고 갱신이 가능하겠죠?

불안하시면 보름 단위로 설정해두셔도 상관없습니다.

이상으로  crontab으로 SSL 자동 갱신하는 방법에 대한 포스팅을 마치도록 하겠습니다.

728x90

데비안 계열에서는 apt를, 레드햇 계열은 yum을 사용하듯이 아치리눅스는 pacman이라는 패키지 관리자를 통해 시스템의 패키지들을 관리합니다.

pacman 에서는 여러 옵션들을 제공하지만 실제로 사용하는 옵션은 그리 많지 않습니다. 업그레이드, 검색, 설치, 삭제 정도만 알아두면 사용에 큰 어려움이 없습니다.

 

1. 시스템 전체 업그레이드

pacman에서 시스템의 모든 패키지들을 업그레이드하는 것은 아치리눅스를 사용하면서 가장 많이 사용하게될 명령입니다. 명령은 아래와 같습니다.

$ sudo pacman -Syu

 

이를 실행하면 pacman은 패키지 데이터베이스를 업데이트하고 업데이트가 필요한 패키지를 찾아서 사용자가 업그레이드를 할지 말지 물어봅니다.

 

2. 패키지 검색

아치리눅스를 사용하다보면 추가적으로 패키지를 설치해야 할 필요가 있습니다. 그러기 위해서 패키지 이름을 알아야 하는데 pacman에서 패키지 명과 설명에 대해 검색할 수 있는 기능을 제공합니다. 설치되었거나 설치가능한 패키지를 검색하기 위해서는 -Ss 옵션을 사용하면 됩니다. 사실 이 검색을 사용하여도 원하던 패키지를 찾기 어렵기 때문에 인터넷에 검색하여 패키지 명을 알아내는게 대부분입니다.

$ sudo pacman -Ss [검색할 단어]

 

이미 설치가 되어있다면 패키지 명 마지막 부분에 [installed]가 표시됩니다.

-Ss 옵션에서 검색할 단어를 입력하지 않는다면 모든 패키지가 출력됩니다.

 

만약 설치된 패키지 중에서 검색을 하고싶다면 -Qs 옵션을 사용하면 됩니다.

$ sudo pacman -Qs [검색할 단어]

 

이 옵션도 검색할 단어를 입력하지 않는다면 설치된 모든 패키지를 출력합니다.

 

추가적으로 패키지의 자세한 정보(버전, 의존성, 용량, 만들어진 날짜 등등)를 알고싶다면 -Qi 옵션을 사용하면 됩니다.

$ sudo pacman -Qi 패키지명

 

3. 패키지 설치

패키지 설치를 위한 옵션은 -S 입니다. 옵션 뒤에 패키지를 여러 개 나열하면 한번에 설치가 가능합니다.

$ sudo pacman -S <패키지명> <패키지명> ...

 

4. 패키지 삭제

패키지 삭제를 위한 옵션은 -R입니다. 다만 이 옵션만으로는 입력한 패키지만 삭제하기 때문에 -s 옵션을 추가로 사용하여 다른 패키지에서 필요로하지 않는 의존성이 있는 패키지들도 함께 삭제하는 것이 일반적입니다.

$ sudo pacman -Rs <패키지명> ...

728x90

#만자로 미러서버 변경, 업데이트

sudo pacman-mirrors --country Japan Taiwan China Hong_Kong Indonesia Philippines South_Korea

sudo pacman -Syyu

sudo reboot

#zsh사용

chsh -s /usr/bin/zsh

 

#로그아웃 후 재로그인

curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh

 

#vim 설치

sudo pacman -S vim

sudo rm /usr/bin/vi

sudo ln -s /usr/bin/vim /usr/bin/vi

#yaourt 설치(aur)

pamac-manager

preference -> AUR -> enable aur support 체크, check for update from aur 체크

yaourt 검색, 체크, apply,commit

또는

git clone https://aur.archlinux.org/yaourt.git

cd yaourt

makepkg -si

 

#한글 입력기 설치(uim)

sudo pacman -S uim

uim-pref-gtk

 

#글로벌 세팅 -> default IM 체크, Default input method 벼루, enalbe input method 벼루only

enable im switching… 체크해제, enable input method toggle… 체크해제

 

#벼루 key bindings 1 -> 벼루 on-off에 한영키 추가

 

#나눔 글꼴, 구글 noto글꼴 설치

sudo pacman -S noto-fonts-cjk

yaourt -S ttf-nanum

yaourt -S ttf-nanumgothic_coding

 

#uim 자동 실행

vi ~/.xprofile

-> IM=”uim”

export GTK_IM_MODULE=$IM

export XMODIFIERS=@im=$IM

export QT_IM_MODULE=$IM

export XIM=$IM

 

#Plank Dockbar 설치

sudo pacman -S plank

 

#전체설정 -> 세션 및 시동 -> 프로그램 자동 시작 -> 오른쪽마우스-프로그램 추가

-> 이름: plank, 설명: plank, 명령: plank

sudo reboot

 

#plank 설정

plank –preferences

728x90

Samba는 리눅스의 파일이나 프린터를 윈도우에서 사용할 수 있게 해줍니다.

우분투에 Samba를 설치하고 디렉토리를 공유하면 윈도우에서 연결이 가능합니다.

우분투에 Samba을 설치하고 초기 설정을 진행하는 방법은 다음과 같습니다.

 

1. Samba 설치

아래 명령어를 순차로 입력해서 Samba를 설치합니다.

sudo apt-get -y update 

sudo apt-get -y install samba

 

기존에 사용하고 있는 리눅스 계정을 Samba에 추가하기 위해 아래 명령어를 입력합니다.

sudo smbpasswd -a <계정명>

 

명령어의 <계정명> 부분은 실제 계정 이름을 입력하면 됩니다.

계정은 리눅스에 존재하는 계정이면 Samba에 계속 추가할 수 있습니다.

 

2. 다음으로 원본을 보존하기 위해 Samba 설정 파일을 백업합니다.

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_temp

 

이제 Samba 설정 파일을 수정합니다.

sudo nano /etc/samba/smb.conf

 

공유할 디렉토리를 설정하기 위해서 설정 파일의 가장 하단에 아래와 같은 형태로 입력합니다.

 

[multimedia]

comment = multimedia directory

path = /data/Multimedia

valid users = id1,id2

writeable = yes

read only = no

create mode = 0777

directory mode = 0777

 

해당 부분은 실제 필요한 상황에 맞춰서 다양하게 변경할 수 있습니다.

 

create mode와 directory mode는 실제 필요한 권한만 주는 것도 가능합니다.

 

Read는 4, Write는 2, Execute는 1이며 모든 권한을 주기 위해 777을 사용했습니다.

 

읽기 전용으로 변경하려면 writeble과 read only 값을 각각 no, yes로 변경하면 됩니다.

 

파일 수정이 완료되면 저장하고 Samba를 재시작해주면 됩니다.

sudo service smbd restart

 

이제 윈도우에서 네트워크 드라이브 연결을 통해 우분투의 공유 디렉토리를 사용할 수 있게 됩니다.

728x90

Nginx는 서버 블록 (Apache의 가상 호스트)을 수행 할 수 있는 기능이 있지만 프록시 헤더 내에서 IP 주소를 전달해야 할 때 문제가 발생합니다.

프록시 서버 뒤에 위치한 서버들에서는 실제 방문자의 IP가 아닌 프록시 서버의 IP만 보인다는 점입니다.

하지만 해결책이 있습니다.

 

※ 프록시 서버 구성 편집

(Docker 사용 경우 - <path to nginx-proxy-manager>/data/nginx/default_host/site.conf)

 

먼저 프록시 서버(프론트엔드)에 있는 프록시 서버 블록을 편집합니다. 기본적으로 내 모습은 다음과 같습니다.

 

## redirect uname.in to https

server {

  listen      80 default_server;

  server_name uname.in;

  return 301 https://uname.in;

}

 

## redirect www prefix to https

server {

  listen      80;

  server_name www.uname.in;

  return 301 https://www.uname.in;

}

 

server {

  #listen 80;

  listen 443 ssl default_server;

  server_name uname.in;

  ssl_certificate /etc/nginx/ssl/uname.in.crt;

  ssl_certificate_key /etc/nginx/ssl/uname.in.key;

 

  location / {

    proxy_set_header  Host $host;

    proxy_set_header  X-Real-IP $remote_addr;

    proxy_set_header  X-Forwarded-Proto https;

    proxy_set_header  X-Forwarded-For $remote_addr;

    proxy_set_header  X-Forwarded-Host $remote_addr;

    proxy_pass        http://wp.uname.in;

  }

}

 

다음 세 줄을 포함하는 것이 매우 중요합니다.

Host : 프록시 서버의 이름과 포트.

X-Real-IP : 방문자의 IP 주소를 가상 호스트로 보냅니다.

X-Forwarded-For : 방문자의 IP 주소를 가상 호스트로 보냅니다.

 

※ 프록시 되는 서버 구성 편집

(/etc/nginx/sites-available/default)

 

이제 프록시 서버(백엔드)의 구성에서 서버 블록 내에 아래 3개의 중요한 행을 포함해야 하지만 위치 블록 외부에 있어야 합니다.

 

server {

    #other junk here blah blah

    set_real_ip_from 10.0.0.0/8;

    real_ip_header X-Real-IP;

    real_ip_recursive on;

 

    location / {

       #some junk here

    }

}

 

세 줄은 다음과 같습니다.

 

set real ip_from : nginx가 이 범위 내의 프록시 서버에서 실제 방문자의 IP를 가져 오도록 지시합니다. 10.0.9.2와 같은 고정 IP 주소 일 수도 있습니다.

real_ip_header : nginx는 주어진 주소에서 클라이언트의 IP 주소를 선택합니다.

real_ip_recursive : 프록시 서버의 IP가 방문자의 IP 주소로 대체됩니다.

728x90

※ Nginx 설치

 

① Nginx를 설치합니다.

apt-get install nginx

 

② 만약 방화벽을 사용하고 있다면 포트를 Open해 줍니다.

ufw allow 'Nginx Full'

 

③ 서버 IP로 접속해 Nginx가 잘 동작하는지 확인합니다.

 

※ Nginx 시작, 정지 명령어 

 

① Nginx 시작

systemctl start nginx

 

② Nginx 정지

systemctl stop nginx

 

③ Nginx 재시작

systemctl restart nginx

 

④ Nginx 리로드

systemctl reload nginx

 

⑤ 시스템 부팅시 Nginx 자동 시작

systemctl enable nginx

 

⑥ 시스템 부팅시 Nginx 자동 시작 해제

systemctl disable nginx

 

※ PHP 설치 

 

① php-fpm을 설치합니다.

apt-get install php-fpm

 

② /etc/nginx/sites-available/default 수정 

#location ~ \.php$ {

# include snippets/fastcgi-php.conf;

#

# # With php-fpm (or other unix sockets):

# fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;

# # With php-cgi (or other tcp sockets):

# fastcgi_pass 127.0.0.1:9000;

 

#}

 

를 아래와 같이 수정 

 

location ~ \.php$ { 

  include snippets/fastcgi-php.conf;

#

# # With php-fpm (or other unix sockets):

  fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;

# # With php-cgi (or other tcp sockets):

# fastcgi_pass 127.0.0.1:9000;

}

 

또한 index.php를 자동 인식하게 하려면

index index.html index.htm index.nginx-debian.html;

 

를 아래와 같이 수정

 

index index.html index.htm index.nginx-debian.html index.php;

 

③ php 정상동작 테스트

/var/www/html 내에 phpinfo.php를 만들고 아래코드를 입력하고 저장

 

<?php phpinfo(); ?>

 

웹브라우저로 서버IP/phpinfo.php 로 접속해 보면 정상동작 확인가능

 

※ MariaDB 설치 

 

① MariaDB와 php-mysql, php-gd을 설치합니다.

apt install mariadb-server php-mysql php-gd

 

② 설정

다음과 같이 명령하여 root 계정 비밀번호 등 몇 가지를 설정합니다.

mysql_secure_installation

 

③ 웹에서 root 계정 사용

웹에서 root 계정을 사용할 수 있게 하려면 수정해야 합니다. MariaDB에 접속합니다.

mysql -u root -p

 

다음을 차례대로 입력합니다.

 

use mysql;

update user set plugin='' where user='root';

flush privileges;

quit;

+ Recent posts