멀티도메인 호스팅에 대한 robots.txt 분리 설정

Progmming/PHP|2024. 2. 28. 14:59
반응형

 

특정도메인에 대해서 robots.txt 설정이 되어야하는 경우

혹은 도메인 별로 robots.txt 설정이 필요한 경우 

 

아래와 같이 .htaccess 상에 추가하면 됨.

 

<IfModule mod_rewrite.c>
    RewriteEngine On

    # abc.uhoon.co.kr 도메인에 대한 리디렉션
    RewriteCond %{HTTP_HOST} ^abc\.uhoons\.co.kr$ [NC]
    RewriteRule ^robots\.txt$ robots_uhoons.txt [L]

	# b2b.uhoon.co.kr 도메인에 대한 리디렉션
    RewriteCond %{HTTP_HOST} ^b2b\.uhoons\.co.kr$ [NC]
    RewriteRule ^robots\.txt$ robots_uhoons.txt [L]

    # 나머지 도메인에 대한 리디렉션
    RewriteCond %{HTTP_HOST} !^abc\.uhoon\.co.kr$ [NC]
    RewriteRule ^robots\.txt$ robots.txt [L]
</IfModule>

 

 

본인의 경우는 codeigniter로 public_html 하위에 폴더로 멀티도메인 서비스를 하는데

robots.txt 가 분리 설정이 필요하게 되어 적용함.

댓글()

[AWS] EC2 아파치 로그를 S3 버킷으로 업로드 후 삭제 , 로그 관리 하는 방법

Cloud Server|2024. 2. 7. 19:05
반응형
#!/bin/bash

# AWS 자격 증명 설정
export AWS_ACCESS_KEY_ID="xxxxxxxxxxxxxx"
export AWS_SECRET_ACCESS_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
export AWS_DEFAULT_REGION="xxxxxxxxxxx"

# 로그 파일 경로 및 S3 경로 설정
LOG_PATH="/var/log/httpd/"
S3_BUCKET="버킷명"
S3_PREFIX="logs/$(date -d 'yesterday' +'%Y/%m')/"  

# 어제의 로그 파일을 S3로 이동
aws s3 cp "${LOG_PATH}access_log-$(date -d 'yesterday' +'%Y%m%d')" "s3://${S3_BUCKET}/${S3_PREFIX}"
aws s3 cp "${LOG_PATH}error_log-$(date -d 'yesterday' +'%Y%m%d')" "s3://${S3_BUCKET}/${S3_PREFIX}"
aws s3 cp "${LOG_PATH}ssl_access_log-$(date -d 'yesterday' +'%Y%m%d')" "s3://${S3_BUCKET}/${S3_PREFIX}"
aws s3 cp "${LOG_PATH}ssl_error_log-$(date -d 'yesterday' +'%Y%m%d')" "s3://${S3_BUCKET}/${S3_PREFIX}"
aws s3 cp "${LOG_PATH}ssl_request_log-$(date -d 'yesterday' +'%Y%m%d')" "s3://${S3_BUCKET}/${S3_PREFIX}"

# 로그 파일 삭제 (선택 사항)
rm "${LOG_PATH}access_log-$(date -d 'yesterday' +'%Y%m%d')"
rm "${LOG_PATH}error_log-$(date -d 'yesterday' +'%Y%m%d')"
rm "${LOG_PATH}ssl_access_log-$(date -d 'yesterday' +'%Y%m%d')"
rm "${LOG_PATH}ssl_error_log-$(date -d 'yesterday' +'%Y%m%d')"
rm "${LOG_PATH}ssl_request_log-$(date -d 'yesterday' +'%Y%m%d')"

 

 

위 스크립트를 cron 으로 적절히 스케쥴링 해주면 끝.

로그 경로 및 로그파일 패턴에 대해서는 적절히 변경이 필요하며 삭제에 대해서는 선택사항임.

스크립트는 글쓴이 상황에 맞게 작성된 것이며 검증 후 사용하시길 바랍니다.

댓글()

C# , OpenFileDialog 확장자 지정하는 방법

Progmming/.Net|2023. 4. 28. 18:50
반응형

아래는 OpenFileDialog를 사용하여 특정 확장자를 가진 파일만 선택할 수 있도록 필터를 지정하는 예시 코드입니다. 

CSV 파일과 TXT 파일을 선택하는 방법.

 

using System;
using System.Windows.Forms;

namespace OpenFileDialogExample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
            openFileDialog1.Filter = "CSV 파일 (*.csv)|*.csv|텍스트 파일 (*.txt)|*.txt";
            openFileDialog1.ShowDialog();
        }
    }
}

댓글()

C#에서 특정 경로의 폴더를 Windows 탐색기에서 여는 예시 코드

Progmming/.Net|2023. 4. 28. 18:48
반응형

C#에서 특정 경로의 폴더나 파일을 Windows 탐색기에서 열려면 

Process.Start 메서드를 사용합니다. 

 

이 때, ProcessStartInfo 클래스를 이용하여 Process 객체를 생성하고, 

ProcessStartInfo 객체의 Arguments 속성에 "Explorer.exe"와 함께 열고자 하는 경로를 전달합니다.

아래는 C#에서 특정 경로의 폴더를 Windows 탐색기에서 여는 예시 코드입니다.

using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        string path = @"C:\MyFolder";
        Process.Start(new ProcessStartInfo()
        {
            FileName = "Explorer.exe",
            Arguments = path
        });
    }
}

 

 

댓글()

JSON 객체의 데이터를 filter 적용하기

Progmming/Javascript|2023. 3. 24. 18:49
반응형

json 데이터를 filter 적용하는 예제

 

const jsonData = [
  { "숙소코드": 123, "숙소명": "호텔A", "사용여부": "Y" },
  { "숙소코드": 456, "숙소명": "모텔B", "사용여부": "N" },
  { "숙소코드": 789, "숙소명": "게스트하우스C", "사용여부": "Y" }
];

const filteredData = jsonData.filter(data => data["사용여부"] === "Y");

console.log(filteredData);

 

 

댓글()

웹 개발 언어별 장단점

이야기|2023. 3. 3. 18:32
반응형

웹 개발 언어는 각각 장단점이 있습니다. 다음은 대표적인 웹 개발 언어들의 장단점입니다.

 

HTML / CSS

장점:

  • 웹 페이지의 구조와 스타일을 정의하는 데 필수적인 언어입니다.
  • 모든 웹 개발 프로젝트에서 사용됩니다.
  • 쉽게 배울 수 있고, 많은 자료와 템플릿이 제공됩니다.

단점:

  • 동적인 기능을 구현할 수 없습니다.
  • 웹 애플리케이션 개발에는 부족합니다.

 

Javascript

장점:

  • 웹 페이지의 동적인 기능을 구현할 수 있습니다.
  • Node.js를 사용하여 서버 측 개발도 가능합니다.
  • 다양한 라이브러리와 프레임워크가 있어 개발이 용이합니다.

단점:

  • 다른 언어보다 학습 곡선이 높습니다.
  • 브라우저 호환성 문제가 발생할 수 있습니다.

PHP

장점:

  • 동적인 웹 페이지를 생성하고 데이터베이스와의 상호 작용을 가능하게 합니다.
  • 많은 웹 호스팅 업체에서 지원합니다.
  • 개발 생산성이 높습니다.

단점:

  • 보안 문제가 발생할 수 있습니다.
  • 대규모 프로젝트에서 성능 이슈가 발생할 수 있습니다.
  • 다른 언어보다 문법이 복잡합니다.

Python

장점:

  • 웹 애플리케이션 개발에 많이 사용됩니다.
  • Django, Flask와 같은 프레임워크를 사용하면 개발을 더욱 효율적으로 할 수 있습니다.
  • 높은 생산성과 코드 가독성을 보장합니다.

단점:

  • 대규모 프로젝트에서 성능 이슈가 발생할 수 있습니다.
  • 웹 호스팅 업체에서 지원되는 경우가 적습니다.

 

Ruby

장점:

  • Ruby on Rails 프레임워크를 사용하여 웹 개발을 할 수 있습니다.
  • 생산성이 높고, 코드 가독성이 좋습니다.
  • 다양한 플러그인과 라이브러리가 있어 개발이 용이합니다.

단점:

  • 성능 이슈가 발생할 수 있습니다.
  • 다른 언어보다 학습 곡선이 높습니다.

각 언어의 장단점을 고려하여, 자신이 개발하려는 프로젝트에 적합한 언어를 선택하는 것이 중요합니다.

 

React

장점:

  • 가상 DOM을 사용하여 성능을 최적화할 수 있습니다.
  • 컴포넌트 기반으로 구조화되어 있어 코드의 재사용성이 높습니다.
  • 다른 라이브러리와 프레임워크와의 호환성이 뛰어납니다.

단점:

  • 학습 곡선이 높습니다.
  • 개발을 위해 추가적인 라이브러리가 필요할 수 있습니다.
  • SEO를 위해 서버 사이드 렌더링을 구현해야 할 경우에는 추가적인 구현이 필요합니다.

React는 대규모 애플리케이션에서도 활용할 수 있으며, 컴포넌트 기반으로 구조화되어 있어 재사용성이 높습니다. 또한, 가상 DOM을 사용하여 성능을 최적화할 수 있어 빠른 렌더링이 가능합니다. 그러나 React는 기존의 HTML/CSS와는 다른 개념과 문법을 가지고 있기 때문에 학습 곡선이 높은 편입니다. 또한, SEO를 위해 서버 사이드 렌더링을 구현해야 할 경우에는 추가적인 구현이 필요할 수 있습니다.

 

Java

장점:

  • 객체 지향 프로그래밍을 지원하며, 안정적이고 확장성이 높은 애플리케이션을 개발할 수 있습니다.
  • 다양한 라이브러리와 프레임워크가 있어 개발이 용이합니다.
  • 멀티 쓰레드 처리를 지원하여 대규모 애플리케이션 개발에 적합합니다.

단점:

  • 개발 생산성이 낮은 편입니다.
  • 메모리 관리가 자동으로 이루어지지 않기 때문에 메모리 누수가 발생할 수 있습니다.
  • 코드 가독성이 다른 언어들에 비해 떨어질 수 있습니다.

Java는 안정적이고 확장성이 높은 애플리케이션을 개발할 수 있는 언어입니다. 또한, 다양한 라이브러리와 프레임워크가 있어 개발이 용이합니다. 그러나 개발 생산성이 낮은 편이며, 메모리 관리가 자동으로 이루어지지 않기 때문에 메모리 누수가 발생할 수 있습니다. 또한, 코드 가독성이 다른 언어들에 비해 떨어질 수 있습니다. 대규모 애플리케이션을 개발할 때, 멀티 쓰레드 처리를 지원하여 성능을 향상시킬 수 있습니다.

댓글()

개발자로 전향을 고민하신다면..

이야기|2023. 2. 23. 17:55
반응형

개발자 진로를 선택하는 것은 매우 현명한 선택입니다. 하지만 이 일을 계속하기 위해선 다양한 고민과 노력이 필요합니다. 아래는 개발자 진로에 대한 고민과 해결책에 대한 몇 가지 팁입니다.

  1. 어떤 분야에서 개발자가 되고 싶은가?
    소프트웨어 개발에는 다양한 분야가 있습니다. 예를 들어 웹 개발, 애플리케이션 개발, 빅 데이터, 인공지능, 게임 개발 등이 있습니다. 각 분야마다 요구되는 기술과 지식이 다르기 때문에, 우선 자신이 어떤 분야에서 일하고 싶은지 생각해보는 것이 중요합니다. 그리고 해당 분야에서 요구되는 기술과 경험을 쌓는 것이 필요합니다.

  2. 어떤 언어를 배워야 할까?
    개발자가 되기 위해서는 언어를 배워야 합니다. 하지만 어떤 언어를 배워야 할지 고민하는 경우가 많습니다. 이 경우, 자신이 선택한 분야에서 사용되는 언어를 찾아보는 것이 좋습니다. 예를 들어, 웹 개발 분야에서는 HTML, CSS, JavaScript, Python, Ruby 등이 자주 사용됩니다. 하지만 언어는 매우 다양하기 때문에, 언어를 배우는 것은 끝이 없습니다. 중요한 것은 기본적인 지식을 쌓는 것이며, 언어를 사용하는 방법과 원리를 이해하는 것입니다.

  3. 어떻게 기술과 경험을 쌓을 수 있을까?
    개발자가 되기 위해서는 기술과 경험이 필요합니다. 이를 위해서는 자신의 프로젝트를 만들어보거나 오픈 소스 프로젝트에 참여하는 것이 좋습니다. 이외에도 학교나 커뮤니티에서 개최하는 해커톤, 코딩 대회 등에 참여하여 기술을 쌓을 수 있습니다. 또한, 이론적인 지식뿐만 아니라 실무적인 경험도 중요하기 때문에, 인턴십을 경험해보는 것도 좋은 방법입니다.

  4. 어떤 회사에서 일을 해야 할까?
    개발자로 일하기 위해서는 어떤 회사에서 일하는가도 중요한 요소입니다. 이 경우, 자신이 일하고 싶은 분야에서 일하는 회사를 찾아보는 것이 좋습니다. 또한, 회사의 규모와 문화도 고려해야 합니다. 대기업에서는 안정적인 업무와 복지가 많이 제공되지만, 그만큼 느린 의사결정과 업무분담 등의 문제가 있을 수 있습니다. 반면에 스타트업은 빠른 의사결정과 다양한 경험을 쌓을 수 있는 기회가 많지만, 안정성이 떨어지고 직원의 업무량이 많을 수 있습니다. 이러한 것들을 고려하여 자신이 잘 맞을 수 있는 회사를 찾는 것이 중요합니다.

  5. 어떤 자질이 필요할까?
    개발자가 되기 위해서는 기술적인 역량뿐만 아니라, 문제해결능력, 논리적인 사고력, 창의력, 협업능력 등의 다양한 자질이 필요합니다. 특히, 빠른 학습능력과 지속적인 자기계발이 필요하기 때문에, 호기심과 열정을 가지고 지속적으로 학습하며 발전하는 것이 중요합니다.

  6. 어떤 고민이 있을까?
    개발자로 일하면서도 다양한 고민이 있을 수 있습니다. 예를 들어, 새로운 기술을 배워야 하는지, 진로를 변경해야 하는지, 업무에 대한 만족도 등이 그 예입니다. 이 경우, 주변의 개발자들이나 선배 개발자들과 이야기를 나누는 것이 좋습니다. 또한, 자신의 목표와 가치를 재확인하고, 그에 따라 방향을 잡는 것이 중요합니다.

 

개발자로서 성장하는 것은 지속적인 노력과 자기계발이 필요합니다. 

이를 위해서는 자신이 선택한 분야에서 필요한 기술과 경험을 쌓는 것이 중요합니다. 

또한, 회사와 문화, 자질, 고민 등 다양한 요소를 고려하여 자신에게 맞는 길을 찾아 나가는 것이 중요합니다.

댓글()

PHP CI 로그 레벨별 파일 분리 하는 방법

Progmming/PHP|2023. 1. 19. 11:23
반응형

libraries/Log.php

// 아마도 상단에 이렇게 선언이 되어있을텐데..
protected $_levels = array('ERROR' => '1', 'DEBUG' => '2',  'INFO' => '3', 'ALL' => '4');

// $level 을 추가하면 기존 log연월일.php 가 ERROR-연월일.php로 바뀌게 됨. 에러 레벨별로 로그 분리
$filepath = $this->_log_path.$level.'-'.date('Y-m-d').'.php';

 

 

 

https://cikorea.net/bbs/view/lecture?idx=7113 

 

[게임서버] 로그파일 분리하기

CI 기본은 log-년-월-일.php와 같이 단일파일로 로그가 저장이 됩니다. 단일파일로 로그가 합쳐져 있을경우 분석시간이 많이 걸리기 때문에 분리를 하게 됩니다. (예 : 결제로그를 별도로 분리해서

cikorea.net

 

댓글()