• 리눅스의 시간대(TZ)를 한국(KST)로 변경하기

    리눅스와 유닉스는 주로 미국과 유럽의 개발자들이 개발하는 운영체제다. 그래서 언어(character set), locale과 Time 및 Time Zone 역시 유럽과 미국을 기준으로 만들어 배포된다. 그렇다 보니 리눅스를 다운로드 받아 설치하고 나면 설치과정에서 지역과 타임존을 한국을 선택해도 묘하게 지역과 시간이 한국과 맞지 않는 문제가 발생하곤 한다. 이번에도 그런 경험을 할 수 있었다. 테스트 용으로 사용하고 있는 오라클 클라우드의 Rocky 리눅스를 dnf 명령으로 업데이트 한 뒤 갑자기 타임존이 KST에서 UTC로 바뀌 …

  • 우분투 20.04 에 MariaDB 설치하기

    python의 웹 프레임워크인 Flask를 테스트하면서 DB를 연동해야할 일이 생겼다. MySQL을 설치할지 아니면 MariaDB를 설치할지를 고민하다 MariaDB를 설치하기로 했다. [Flask 웹 프레임워크] Blueprint를 이용한 모듈화 이해하기 사실 MySQL과 MariaDB는 같은(?) DBMS다. MySQL을 오픈소스로 개발하던 회사를 선 마이크로시스템즈(Sun Microsystems)가 인수하고 몇 년이 지난 뒤 그 선 마이크로시스템즈를 다시 Oracle이 인수했다. 그리고 이 때 MySQL 개발진이 Oracle …

  • vi 필수 사용법 – vi 쉽게 배우기

    vi 는 무엇인가? vi는 1970년대에 개발되어 사용하기 시작한 Unix 계열 운영체제에 기본 유틸리티로 포함된 오픈소스 문서편집기다. 문서편집기라고 하지만 자체적인 문서파일의 포맷은 없고 그냥 text (ascii) 편집기일 뿐이다. 즉 Windows에서의 notepad 역할을 Unix와 Linux에서 수행하는 프로그램이 바로 vi다. vi 라는 명칭은 요즘의 GUI 개념과 비교하면 전혀 어울리지 않는 "visual editor"에서 따온 것이라고 한다. 요즘의 Linux에서는 vi와 호환되는 vim 이라는 문서편집기가 설치되 …

  • 워드프레스 블로그 방문자 분석도구 만들기 (Apache access log 분석)

    이 블로그는 오라클 클라우드에서 제공하는 평생 무료 서비스에 구축하여 운영중이다. 우분투 리눅스 가상머신 2대를 생성하여 하나의 가상서버에는 아파치 웹서버와 PHP를 설치하였고 다른 하나의 가상머신에 MariaDB DBMS를 설치하였다. 그리고 웹 어플리케이션은 워드프레스(Wordpress)를 설치하여 블로그를 구성하였다. www가 웹서버이고 mariadb가 DB서버다. 그리고 ap-svr-01 서버가 바로 오늘의 주제인 워드프레스 블로그의 방문자 분석, 즉 Apache 웹서버의 access log를 분석하고 DB에 업로드하는 웹 …

  • [Apache] 악성 봇과 크롤러 차단하기 (.htaccess)

    블로그와 같은 웹서비스를 구축하고 운영하다 보면 광고댓글, 악성댓글과 싸우게 된다. 하지만 이 싸움에서 이기고 나니 다시금 악성 봇과 웹 크롤러들과 싸우는 2차 대전이 벌어졌다. 하지만 이젠 그 싸움이 그다지 어렵지 않다. 광고댓글과 악성댓글을 작성하는 IP를 .htaccess 파일에서 차단하듯 새로운 룰을 적용하여 차단하면 된다. 다만 악성봇과 웹크롤러들은 IP로 차단하기는 어렵다. Access.log를 분석해 보면 User-Agent에 봇이나 웹 크롤러의 정보가 보이는데 광고댓글이나 악성댓글이 대부분 한두개의 IP에서 들어와 …

  • VSCode와 Linux의 Git 연동하기

    VSCode(Visual Studio Code)는 Microsoft에서 개발하여 공개하고 있는 소프트웨어 중 가장 찬사를 받는 소프트웨어 중 하나다. 그 이유는 개발자들이 코딩을 하는데 있어 매우 강력한기능들을 제공하기 때문이다. 비교적 무거운 소프트웨어 임에도 말이다. 그중에서도 리눅스 서버에 Remote SSH 플러그인을 통해 원격접속한 다음 서버의 소스코드를 쉽게 편집하고 저장할 수 있는 기능은 많은 개발자들이 편리하게 사용하고 있는 기능이다. 게다가 오늘 포스팅하는 "리눅스 서버에 설치된 Git"과 연동하여 Git의 버전관 …

  • 리눅스 Shell 명령어 로그가 남지 않는 문제 해결하기

    티스토리 블로그를 직접 구축한 리눅스의 워드프레스로 이사한 뒤 안정화와 백업 등 관리적인 부분에 신경이 집중되어 있어 인지하지 못했었는데 블로그를 구축하여 운영하고 있는 웹서버와 DB서버 2대에 이유는 알 수 없지만 Shell History가 남지 않고 있었다. Shell History 란? 쉘 히스토리(Shell History)란 리눅스와 유닉스 운영체제의 쉘 프롬프트 상에서 실행한 명령어를 로그 파일에 기록하여 사후에 어떤 명령어들을 사용했는지 알 수 있도록 지원해주는 기능을 의미한다. 보안관점에서는 책임추적성을 확보하기 위한 …

  • Rocky Linux 9.3에 MariaDB 설치하기

    워드프레스와 같은 블로그 툴을 리눅스 서버에 설치하기 위해서는 APM, 즉 Apache, PHP, MariaDB (또는 MySql)를 설치해야 한다. 앞의 포스트에서 Apache 웹서버와 PHP의 설치에 대해 설명했다. 이제 MariaDB를 설치하는 과정을 기록하고자 한다. MariaDB Server 설치 다음과 같이 dnf 명령을 사용해 MariaDB 서버 패키지를 설치한다. sudo dnf install mariadb-server 설치될 패키지와 의존성(dependensy)이 있는 패키지 목록을 보여주고 설치할지 물어본다. y …

  • Rocky Linux에 APM 설치하기 – Apache + PHP 설치하기 (PHP-FPM)

    RedHat 리눅스, CentOS 리눅스, Rocky 리눅스의 관계 RedHat에서 RedHat Enterprise Linux와 완벽하게 동일한 코드를 갖는 CentOS의 지원을 중단하고 CentOS Stream이라는 RedHat 공식 릴리즈 버전을 제작하기 전에 만들어 배포하는 업스트림 배포본으로 정책을 변경하면서 그에 반발해 다시금 RedHat과 100% 호환되는 완전하게 동일한 코드를 갖는 오픈소스 리눅스 프로젝트가 바로 Rocky Linux다. RedHat은 Fedora 버전의 리눅스를 오픈소스 개발자들과 함께 개발하며 약 …

  • [리눅스 기초] 쉘 스크립트의 사칙연산과 문자열 자르기

    쉘 스크립트에서도 자바(Java)나 C언어처럼 문자열 자르기와 사칙연산을 비롯한 연산이 모두 가능하다. 아니 어쩌면 더 쉽게 느껴질 수도 있다. 하지만 이런 연산을 설명하기 전에 먼저 쉘 스크립트에서는 변수를 어떻게 사용하는지 이해해야 한다. 쉘 스크립트에서의 변수 일반적인 Java나 C와 같은 프로그래밍 언어에서는 변수의 선언과 타입(type)이 무척 중요하다. 선언하지 않고 사용하거나 잘못 참조하거나 잘못 연산하게 되면 엉뚱한 값이 출력되거나 컴파일 시 에러를 팍팍~뿌려댄다. 하지만 쉘스크립트에서 변수는 미리 선언하지 …