Ubuntu Server 18.04 버전에서 “커널이 정상적으로 부팅되지 않고 부트로더 상태에 멈춰있는 경우에 해결방법

서버를 리부팅시켰는데, 커널이 정상적으로 부팅이 되지 않고 부트로더 상태에서 넘어가지 않는 문제가 발생했습니다.

자신의 서버가 다음과 같은 문제와 비슷한 상황인지 검토하십시오.

1. 메인보드 보안부팅 해제

서버를 재부팅하여 메인보드 바이오스 설정 모드로 전환합니다. 바이오스 접근법은 일반적으로 DEL 키나 F number key를 연타합니다. 그런데 만약 바이오스 접근이 어렵다면, 자신의 메인보드 제조사를 찾아가 문의하십시오.

바이오스에 접근했다면 부트 설정에서 보안부팅 설정 부분을 체크 해제해야 합니다. 그 다음 과정은 설정 변경을 저장한 다음 재부팅을 하여 서버가 정상적으로 부팅이 되는지 확인합니다.

2. 커널 패닉

커널이 손상된 것입니다. 커널 패닉 상태를 해결하기 위해서는 커널 재설치를 진행해야 합니다. 커널 재설치를 위해서는 우분투 서버 복구가 필요하며, Live USB를 사용하여 복구 모드로 부팅해야 합니다.

그 다음으로 커널 복구를 진행해야 합니다. 커널 복구가 정상적으로 진행됐다면, 복구 부팅을 해제 후 재부팅을 시도합니다. 마지막으로 우분투 서버가 정상적으로 부팅이 되는지 확인합니다.

3. 만약 해결되지 않는 경우

부팅 문제가 잘 해결되지 않는 경우 디스크 포맷 후 OS 재설치를 진행합니다. 또는 이용하고 있는 전문가의 기술지원을 알아보세요. 외부의 도움을 통하여 문제를 해결할 수 있도록 합니다.

4. 참고 자료

NGINX로 워드프레스 사이트가 구동하는 경우 멀티사이트 하위 디렉토리 설정 방법

저는 NGINX로 구동되는 워드프레스 사이트를 잘 운영하던 중에 멀티사이트를 활성화시켰습니다. 그런데 “너무 많은 리디렉션을 시도했다”고 사이트 접속이 되지 않았습니다. NGINX로 구동되는 워드프레스 멀티사이트는 서버에서 몇 가지 설정이 필요합니다.

1. 멀티사이트 활성화

멀티사이트를 활성화하려면 wp-config.php 파일을 FTP나 SSH vi 에디터 등으로 엽니다. 그리고 “* That’s all, stop editing! Happy blogging. */”라는 주석 아래에 다음과 같은 코드를 붙여 넣습니다.

/* Multisite */
define( ‘WP_ALLOW_MULTISITE’, true );

워드프레스 알림판으로 돌아와서 메뉴 > 도구를 보면 멀티사이트 설치가 생성된 것을 확인할 수 있습니다.

멀티사이트 설정에 대한 자세한 정보 보기(준비중)

멀티사이트 설치를 문제 없이 잘 진행했다면 상단 메뉴에 내 사이트 > 네트워크 설정 메뉴가 생긴 것을 확인할 수 있다. 그리고 네트워크 관리자 메뉴 > 사이트에서 멀티 사이트를 개설할 수가 있다. 그런데 사이트를 개설하고 바로 접속은 불가능하다.

멀티사이트 주소를 하위 디렉토리로 설정하는 경우와 NGINX로 구동하는 경우 몇 가지 서버 설정이 필요하다. 서버 설정은 어느 정도 서버에 대한 지식이 있으면 작업할 때 수월할 것이다. 작업하기 어렵다면 [유료서비스(준비중)]에서 의뢰할 수 있다.

2. 플러그인 설치

먼저 네트워크 관리자 플러그인에서 Nginx Helper라는 플러그인을 설치해 준다. 그 다음 설치가 완료되었다면 설치한 플러그인 설정 페이지를 클릭해서 “Enable Nginx Map”을 활성화한다. 이때 wp-content/uploads 파일의 쓰기 권한이 설정되어 있어야 한다. URL 매핑은 하위디렉토리로 설정된 멀티사이트가 정상적으로 접근할 수 있도록 해준다.

3. 서버 설정

멀티사이트와 하위디렉토리가 정상적으로 작동할 수 있도록 서버 설정을 하면 모든 과정이 마쳐진다. 서버 설정은 어느정도 서버에 대한 지식이 있으면 작업이 수월하다는 것을 다시 한번 강조한다. 서버 작업은 SSH로 할 수가 있다. 만약 내 서버 접속 정보를 알 수 없다면 서버관리자나 웹서버 제공 업체에 문의하면 된다.

SSH로 NGINX 가상호스트 설정 파일로 이동한다. 데미안/우분투 버전 기준 파일 위치는 /etc/nginx/sites-available에 있다.

파일 상단에 Nginx 맵 경로를 사용하여 맵 지시문을 추가해 준다.

map $http_host $blogid {
    default 0;
    include /var/www/pathtoyoursite/wp-content/uploads/nginx-helper/map.conf;
}

위 코드를 추가해 준다면 플러그인에서 생성한 블로그 매핑을 서버가 읽어준다. 그러면 새 사이트를 추가할 때마다 플러그인이 매핑 파일을 자동으로 업데이트할 수 있어서 서버 구성을 다시 변경할 필요가 없다.

마지막으로, 가상 호스트 파일에서 server{} 적당한 위치에 다음 지시문을 추가해 준다. 보통은 location @php{} 지시문 뒤에 붙여 넣는다.

location ~ ^/files/(.*)$ {
  try_files /wp-content/blogs.dir/$blogid/$uri /wp-includes/ms-files.php?file=$1 ;
  access_log off; log_not_found off; expires max;
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
	expires 24h;
	log_not_found off;
}

location ^~ /blogs.dir {
	internal;
	alias /var/www/pathtoyoursite/web/wp-content/blogs.dir ;
	access_log off; log_not_found off;      expires max;
}


if (!-e $request_filename) {
	rewrite /wp-admin$ $scheme://$host$uri/ permanent;
	rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
	rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
}

마지막 지시문 블록에서 두 번째에 있는 별칭 줄을 유의해야 한다. 해당 줄은 워드프레스 설치 경로로 내 사이트 설정에 따라 변경해 주어야 한다.

최종 단계

수정 파일을 저장하였다면, 설정을 적용하기 위하여 Nginx를 재시작해주어야 한다.

참고자료

1. How to configure Nginx for WordPress Multisite with subdirectories – www.computerworld.com/article/2871918/how-to-configure-nginx-for-wordpress-multisite-with-subdirectories.html

2. 워드프레스 멀티사이트 설치하기 – www.thewordcracker.com/intermediate/setup-wordpress-multisite/

3. 워드프레스 멀티사이트에서 서브 도메인과 서브 디렉터리 간 전환하기 – avada.co.kr/멀티사이트-서브도메인과-서브디렉터리-간-전환/

리눅스 SSH를 인증키를 사용하여 로그인하는 방법

SSH를 인증서로 사용하여 우분투 서버에 로그인하는 방법은 보통 다음의 단계를 따릅니다.

  1. 클라이언트 키 쌍 생성: 클라이언트(예: 개발 컴퓨터)에서 SSH 키 쌍을 생성합니다. 이 단계는 클라이언트 컴퓨터에서 수행됩니다.
  2. 공개 키 서버에 추가: 클라이언트의 공개 키를 SSH 서버에 추가하여 서버가 클라이언트를 신뢰할 수 있도록 합니다. 이 단계는 서버 컴퓨터에서 수행됩니다.
  3. SSH 클라이언트 구성: 클라이언트에서 SSH 구성 파일을 수정하여 인증서를 사용하도록 설정합니다.

여기에 각 단계를 자세히 설명하겠습니다.

단계 1: 클라이언트 키 쌍 생성

bashCopy code

ssh-keygen -t rsa -b 2048

위 명령을 실행하여 클라이언트 키 쌍을 생성합니다. 기본 설정으로 엔터를 누르면 됩니다.

단계 2: 공개 키 서버에 추가

bashCopy code

ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip

위 명령을 실행하여 공개 키를 서버에 복사합니다. username은 서버에 로그인할 사용자 이름, server_ip는 SSH 서버의 IP 주소 또는 도메인 이름입니다.

단계 3: SSH 클라이언트 구성

bashCopy code

nano ~/.ssh/config

위 명령을 실행하여 SSH 구성 파일을 엽니다. 파일이 없으면 새로 만들 수 있습니다. 다음 라인을 추가합니다.

javascriptCopy code

Host server_alias HostName server_ip User username IdentityFile ~/.ssh/private_key

여기서, server_alias는 서버에 대한 별칭, server_ip는 SSH 서버의 IP 주소 또는 도메인 이름, username은 서버에 로그인할 사용자 이름, ~/.ssh/private_key는 클라이언트의 개인 키 파일 경로입니다.

이제 이 설정으로 SSH를 실행하면 인증서를 사용하여 서버에 로그인할 수 있어야 합니다. ssh server_alias 명령을 실행하여 서버에 로그인할 수 있습니다.

이 단계들을 따르면 SSH 인증서를 사용하여 우분투 서버에 로그인할 수 있습니다.

윈도우 putty에서 리눅스에서 생성한 키를 사용해 서버에 접속할거야.ChatGPT

PuTTY를 사용하여 리눅스 서버에 SSH 키를 사용하여 접속하려면 PuTTY와 PuTTYgen을 사용하여 SSH 키를 변환해야 합니다. 다음은 이러한 작업을 수행하는 단계입니다.

단계 1: PuTTYgen을 사용하여 키 변환

  1. PuTTYgen을 열고, ‘Load’ 버튼을 클릭하여 리눅스에서 생성한 개인 키 파일을 선택합니다.
  2. PuTTYgen은 키를 변환하고, ‘Save private key’ 버튼을 클릭하여 새로운 키 파일을 저장합니다. 이 파일을 안전한 곳에 보관하세요.

단계 2: PuTTY 구성

  1. PuTTY를 열고, SSH 세션 설정으로 이동합니다.
  2. ‘Hostname’에는 리눅스 서버의 IP 주소나 도메인 이름을 입력합니다.
  3. ‘Port’에는 SSH가 사용하는 포트 번호(기본값은 22)를 입력합니다.
  4. 좌측 메뉴에서 ‘Connection’ > ‘SSH’ > ‘Auth’를 선택합니다.
  5. ‘Private key file for authentication’ 옵션에는 PuTTYgen을 사용하여 저장한 새로운 키 파일을 선택합니다.
  6. 이제 ‘Session’으로 돌아가서, ‘Saved Sessions’에 원하는 세션 이름을 입력하고 ‘Save’를 클릭하여 세션을 저장합니다.
  7. 이제 ‘Open’ 버튼을 클릭하여 리눅스 서버에 SSH로 접속할 수 있습니다.

이렇게 하면 PuTTY를 사용하여 리눅스 서버에 생성된 SSH 키를 사용하여 접속할 수 있습니다.

리눅스(Ubuntu)에서 sudo 패스워드 없이 사용하는 방법

리눅스(ubuntu)에서 sudo 패스워드 없이 사용하는법

  • /etc/sudoers 파일 맨아래에 다음 내용을 추가합니다.
    – (사용자명) ALL=NOPASSWD: ALL
  • 또는 echo 명령어를 사용하여 추가할 수 있습니다.
    – echo ‘(사용자명) ALL=NOPASSWD: ALL’ >> /etc/sudoers
  • 만약 /etc/sudoers 파일이 readonly파일로 수정이 불가능한 경우에 visudo 명령어를 사용하여 파일을 수정할 수 있습니다.

모든 sudo 권한 명령어가 패스워드 입력없이 사용되면 불안하거나 보안상 한 단계 더 어렵게 사용하고 싶다면,

특정 명령어(자주사용되는)만 패스워드 입력없이 sudo 권한을 사용하는 방법도 있습니다.

특정 명령어만 PASSWD 입력 없이 sudo 권한을 사용하는법

  • echo 명령어를 사용하여 추가하는 방법
    – echo ‘(사용자명) ALL=NOPASSWD: (특정 명령어)’ >> /etc/sudoers
    – echo ‘(사용자명) ALL=NOPASSWD: (/usr/sbin/useradd, /usr/sbin/userdel)’ >> /etc/sudoers

워드프레스 멀웨어 제거하기

워드프레스는 국제적으로 가장 많이 사용하는 웹프로그램이다보니 해커들의 공격 대상이 되기가 쉽다. 워드프레스로 만든 웹사이트들이 많이 당할 수 있는 공격은 멀웨어 삽입이라고 한다.

최근 우크라이나 전쟁 같은 국지적 도발이 일어나면서 사이버 공격이 잦아, 사이버 공격을 대비할 필요가 있다.

워드프레스에서 알 수 없는 스크립트가 실행되거나 내가 모르는 파일이 업로드되었다면 삭제하거나 적절한 조치를 취해야 한다(가능한 빠른 시일 내에 조치를 취하는 것이 좋다).

주요 감염 루트

해커의 시도는 다양해 질 수가 있다. js 파일을 변조한다거나 관리자가 wp-admin에 접근하지 못하도록 .htaccess 파일에 변조를 일으키는 등 문제를 일으킬 수 있다.

  1. index.php 상단에 알 수 없는 명령어가 실행되는 경우
  2. 워드프레스 root(루트) 폴더에 낯선 파일이나 폴더가 실행된 경우
  3. wp-content, plugins, themes 폴더도 해커의 공격 대상이 될 수 있다.
  4. Newspaper과 같은 테마 패널이 제공되고 있는 유료 테마를 사용하는 경우 ‘커스텀 코드’에서 ‘커스텀 자바스크립트’에 낯선 코드가 입력되어 있는 경우 멀웨어를 의심해 볼 수가 있다.

멀웨어 예방법

먼저, 멀웨어 예방에는 정답은 없다.

삭제하거나 적절한 조치를 하더라도 보안 조치가 허술하거나 미흡하다면 해커가 언제든지 멀웨어를 삽입 시도를 할 수 있다.

  1. 백업을 생활화한다(웹사이트의 파일과 DB를 PC로 다운로드 받아 놓는다).
  2. 폴더는 755, 파일은 644로 퍼미션을 설정한다.
  3. wp-config.php, wp-content 폴더 관리를 신중히 한다(만약 wp-config.php가 털린 상태라면 기본으로 제공된 샘플 파일과 비교하여 체크하도록 한다).
  4. 만약 해커에게 털린 경우라면, ftp, db 등 계정의 패스워드를 모두 변경하도록 한다.
  5. 자동 업데이트보다는 수동으로 작업을 해본다.

구글 검색에서의 불리한 점

멀웨어가 삽입되어 비정상적으로 사이트가 작동되는 경우 구글 검색에서 순위가 밀리거나 최악의 경우 웹기록이 삭제가 되어 버리는 경우가 발생한다.

이때 웹마스터 도구에서 해당 사이트를 삭제한 후 다시 재등록하여 검수를 요청하면 구글 웹로봇이 알아서 체크 후 판단할 수 있게 된다.

Phpmyadmin /php/Twig/Extension/CoreExtension.php#1608 에러 해결 방법

Phpmyadmin을 이용하여 DB 작업을 할 때, CoreExtension.php #1608 라인에 에러가 있을 수가 있다. 물론 에러를 무시하고 작업해도 상관은 없지만,

무언가 거슬리고 찝찝한 느낌이 드는 것을 치울 수가 없다.

Deprecation Notice in ./../../php/Twig/Extension/CoreExtension.php#1608 array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead

상기한 경로의 파일의 1608 라인에 array_key_exists() 라는 함수 대신 property_exists() 함수를 사용하라는 말이다.

다음과 같이 바꿔주면 된다.

if (isset($object->$item) || property_exists($object, (string) $item)) {

위 오류는 최근 깃허브 자료를 보니 수정된 것으로 확인되는 것 같다.

참고자료 :
https://stackoverflow.com/questions/66222481/phpmyadmin-coreextension-php1608array-key-exists-using-array-key-exists-on

https://github.com/phpmyadmin/phpmyadmin/issues/17270

워드프레스 wp-load.php 50라인 오류

필자는 요새 잦은 해킹 공격과 오류 발생으로 고통 받고 있는 지극히 평범한 회사 사이트 관리자이다.

보안상 전체 오류 로그를 보일 수는 없고 일부만 가져오자면…

Fatal error: require_once(): Failed opening required

failed to open stream: permission denied in…. 중략…. wp-load.php 50 line

wp-config.php 파일의 위치를 알 수 없어서 생기는 오류이다.

이 경우 보통은 파일 퍼미션 문제로 서버에 접속해 퍼미션을 변경해 주면 된다.

chmod 707 wp-content

워드프레스 500 에러 해결하기

500 에러 (사진=구글 이미지 검색)

워드프레스 멀티사이트를 활성화하였다가, 아무래도 설정을 잘못한 것 같아서 비활성화하고 다시 멀티사이트를 설정하려고 접속하니, 500 에러를 뿜어내는 것이었다.

보통 500 에러라고 하면, PHP 구문에 문제가 발생했거나, 웹서버 상의 각종 문제들이 원인이다. 보다 정확한 원인 진단은 웹서버의 에러 로그를 확인해보는 것이 현명하다.

[Thu Feb 04 21:49:48.361382 2021] [php7:error] [pid 26479] [client 210.♡.108.131:60869] PHP Fatal error: require_once(): Failed opening required '/home/사용자경로/wp-config.php' (include_path='.:/usr/share/php') in /home/사용자경로/wp-load.php on line 37, referer: https://www.google.com/

wp-load.php 파일의 37라인의 wp-config.php를 읽어오는데 문제가 발생한 것 같다.

이때는 문제가 발생한 파일의 라인의 코드를 수정하거나, 퍼미션을 체크해보아야 한다.

퍼미션이 644나 755로 되어 있지 않으면, FTP나 SSH로 퍼미션을 조정해 볼 것을 권장한다.

chmod 707 wp-config.php

백해무익한 액티브X, 한꺼번에 삭제해버리기

인터넷뱅킹, e-지로, 정부24 등 관공서 등을 접속하면 늘 한결같이 보안 프로그램을 설치하도록 하고 있다. 말은 사용자의 컴퓨터의 보안을 위해서라지만 선택이 아닌 강요에 가깝다.

옛날에 비교하면 설치되는 프로그램의 수는 많이 줄고는 있지만, 그럼에도 여전히 설치되는 액티브x는 많다.

문재인 정부 출범 이후 혁신 성장과 국정과제의 일환으로 액티브X를 폐지하는 법안을 만든다고는 하지만 아직 갈길은 멀어보인다.

그리고 문재인 정부 이전에도 액티브X 폐지는 논의되고 있지만, 어쩐 일인지 제자리 걸음인 것 같은 것은 기분 탓인가;;

아무튼 나도 모르게 보안프로그램이 설치되다보면 컴퓨터가 느려지는 현상을 경험하고는 한다. 끝내는 너무 느려진 컴퓨터를 감당하지 못해 포맷을 해야 하는 지경에 이른다.

그런데, 이들을 일괄 삭제하는 프로그램이 있으니, 바로 “구라제거기”라는 프로그램이다.

이미 한번 전부 모두 제거를 했기 때문에 필자의 컴퓨터에는 어떤 프로그램도 목록에 뜨지 않는다.

만약 구라 제거기에 내 프로그램이 뜨지 않는다면 목록 다시 읽기를 누르거나,
개발자에게 요청하면 추후 업데이트에서 반영해준다.

프로그램을 개별 제거할 수도 있고,
모두 제거시 설치된 액티브X 전부를 제거할 수 있다.

x86, x64 버전 둘다 지원하며, 64비트일 겨웅 x64버전을 추천한다고 한다.

개발자에 따르면,
구라제거기는 회사, 개인 모두가 사용할 수 있다고 하며,

후원을 받는다고 한다.

프로그램 다운은 여기로 가자.

PC 카카오톡, 광고를 제거하기

21세기를 사는 우리의 일상은 광고로 얼룩져 있다고 말해도 과언이 아니다. 무엇을 검색을 하려고 할 때도 검색 상하단에는 각종 관련 광고 문구들이 가득일 때가 많다. 영상을 보거나 인터넷 기사를 읽을 때에도 우리의 마우스 커서 옆에는 자극적인 문구와 이미지로 가득찬 광고들이 유혹하고 있다.

통칭, 대한민국 1등, 국민 메신저 “카카오톡”도 출시 이후 광고가 제법 늘어났다. 카톡을 운영하는 회사가 자선 단체가 아닌 이상, 당연한 처사다.

기업은 돈을 벌기 위해 기업을 하므로, 서비스를 제공하는 회사 입장에서 서비스를 계속 유지하기 위해서는 수익을 내기 위해 수단과 방법을 가리지 않는 건 어쩌면 당연하다.

그러나, 사용자 입장에서는 그러한 광고들이 신경이 쓰이고, 보기가 싫은 건 어쩔 수가 없다.

사용자와 기업, 두 그룹이 원하는 이상을 딱 들어 맞춰 줄리는 만무하다.

PC 카카오톡 광고 차단하기

광고 차단 불법일까?

포털사이트가 제공하는 화면에서 원하는 콘텐츠의 추가, 삭제, 위치 변경 및 스킨과 색상을 포함한 전체 디자인의 변경을 가능하게 해 주는 프로그램을 제공·배포한 사안에서, 위 프로그램 제공·배포행위로 포털사이트 웹페이지의 동일성이 손상된다고 볼 수 없고, 부당한 수단을 사용하여 개별 인터넷 사용자와 을 회사 사이 또는 광고주들과 을 회사 사이에 존재하는 계약의 이행을 방해하거나 권리를 침해하는 등 불법 행위가 성립한다고 볼 수 없다.

이미 우리나라 대법원은 위와 같이 판시한 바 있다.

이로서 광고차단은 불법이 아니다.

Github에서 KakaoTalkAdBlock 다운로드하기

위 KakaoTalkAdBlock을 다운로드 받았다면, 압축을 풀고, 생성된 폴더를 열고, publish 폴더를 클릭합니다.

setup.exe를 실행합니다.

카카오톡 광고 차단 프로그램을 정상적으로 설치했다면, 아래와 같이 카카오톡 PC 화면의 광고가 사라지게 됩니다.

하단 광고가 사라진 카카오톡 PC 화면