공공데이터 포털에서는 금융감독원에서 제공하는 주식시세의 OPEN API를 이용할 수 있습니다. 이 OPEN API를 이용해 시세를 정보를 얻어오는 샘플 코드를 만들어 보려고 합니다.

공공 데이터 포털에 접속 후 금융위원회에서 제공하는 주식시세 정보 aip 활용신청을 합니다.

 

그럼 아래와 같이 활용신청이 나고 사용가능한 상태가 됩니다. 페이지 내용에 들어 가면 간단히 api를 활용할 수 있는 상태가 됩니다.

 

REST API 이므로 아래와 같이 간단한 코드로 사용이 가능합니다. 주의할점은 http_build_query 가 자동으로 urlEncoding까지 하므로, 일반 인증키(decoding)을 사용하도록 합니다.

<?php

function get_search($serviceKey, $stdt){ // 상품검색명령

    $param = array(
        'serviceKey'=>$serviceKey,
        'stdt'=>$stdt
    );

    $url = "https://apis.data.go.kr/1160100/service/GetStockSecuritiesInfoService/getStockPriceInfo" . "?" . http_build_query($param);
    echo $url . PHP_EOL;
    $ch = curl_init();                                 //curl 초기화
    curl_setopt($ch, CURLOPT_URL, $url);               //URL 지정하기
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    //요청 결과를 문자열로 반환 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);      //connection timeout 10초 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);   //원격 서버의 인증서가 유효한지 검사 안함
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    return $response;

}

echo get_search([일반 인증키(Decoding)], "2023");

 

 

 

 

 

'PHP' 카테고리의 다른 글

PHP 8.2 업데이트  (0) 2023.01.02
php 정규식 문제점  (0) 2020.08.21
맥에서 php 활성화  (0) 2020.06.11
맥에서 php 활성화 및 컴포저 설치  (0) 2019.08.16
PHP Facebook OAuth 2.0 Login (fsocketopen 이용)  (0) 2019.06.17
Posted by 창업닉군
,

PHP 8.2 업데이트

PHP 2023. 1. 2. 02:07

최근 php 8.2가 업데이트 되어 글을 남깁니다. 

 

Readonly Classes

클래스를 선언할 때 readonly 키워드를 앞에 붙여 선언할 수 있게 되었습니다. readonly로 클래스를 선언하면, type을 꼭 지정해 프로퍼티를 선언해야 하며, static property를 선언할 수 없습니다.

<?php

// 8.2 버전부터는 AllowDynamicProperties 가 Deprecated 경고가 뜬다고 합니다.
#[AllowDynamicProperties]
readonly class Foo {
}

// Fatal error: Cannot apply #[AllowDynamicProperties] to readonly class Foo
?>


<?php
readonly class Foo
{
    public $bar;
}

// Fatal error: Readonly property Foo::$bar must have type
?>


<?php
readonly class Foo
{
    public static int $bar;
}

// Fatal error: Readonly class Foo cannot declare static properties
?>

 

DNF

DNF 유형을 사용하면 교집합과 합집합을 결합할 수 있습니다.

 

stand-alone type : null, false and true

null, false, true를 int 같은 타입으로 선언해 사용할 수 있습니다. 클래스의 멤버 변수로 지정할 수 있습니다.

 

New "Random" extension

Random 기능이 확장되었습니다.

 

Constants in traits

trait 에 상수 선언이 가능해졌습니다.

 

Deprecate dynamic properties

dynamic properties가 지원이 중단 되었습니다.

 

 

 

 

 

 

 

 

 

 

 

Posted by 창업닉군
,

카테고리 조회를 실행하려면 먼저 11번가 판매자 가입 후 api 키 발급이 필요합니다. 선행하지 않았다면, 아래 링크를 참조해 먼저 완료해 주세요.

 

11번가 OPEN API CENTER - 서비스등록

참고 11번가 판매자 센터 참고 : https://happytownn.tistory.com/176 11번가 OPEN API CENTER : https://openapi.11st.co.kr/ 11번가 open api를 이용하려면, 먼저 판매자로 가입을 해야 합니다. 그리고, 서비스를 등록하고 o

nicgoon.tistory.com

 

상품검색 조회 관련 문서는 아래 링크에서 확인이 가능합니다.
https://openapi.11st.co.kr/openapi/OpenApiServiceIntroduce.tmall#info1

 

상품검색 > 상품검색

11번가에서 상품을 조회 했을 때의 결과를 자신의 사이트에서 활용할 수 있는 API 입니다. 실제 사용성은 낮지만 테스트용으로 해보기 좋습니다. 간단히 url을 브라우저에 붙여넣어도 결과를 확인할 수 있습니다.


http://openapi.11st.co.kr/openapi/OpenApiService.tmall?key=[key]&apiCode=ProductSearch&keyword=[keyword]     


GET PARAM에 넣어야할 값은 아래와 같습니다.
key = 서비스가입 후 받은 OPEN API KEY를 넣어주세요.
apiCode = api명령인데, 현재는 상품 검색을 할 것이므로, 'ProductSearch'를 그대로 두세요.
keyword = 검색할 명령어를 입력해 주세요.

keyword '양말'로 입력하고 브라우저 주소창에 넣으면 xml 응답값을 받을 수 있습니다. 11번가에 등록되는 상품들은 매일매일 다르므로 호출할때마다 다른 응답을 받이실거에요.

브라우저에서 사용하면 편하지만, 우리는 서버환경에서 받아 대체로 가공해서 사용해야하므로, 서버 언어로 실행이 필요합니다. php curl을 사용해 서버환경에서 구현해 보겠습니다.

<?php

    function get_search($rest_api_key, $keyword){ // 상품검색명령

        $param = array(
            'apiCode'=>'ProductSearch',
            'key'=>$rest_api_key,
            'keyword'=>$keyword
        );

        $url = "http://openapi.11st.co.kr/openapi/OpenApiService.tmall" . "?" . http_build_query($param);

        $ch = curl_init();                                 //curl 초기화
        curl_setopt($ch, CURLOPT_URL, $url);               //URL 지정하기
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    //요청 결과를 문자열로 반환 
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);      //connection timeout 10초 
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);   //원격 서버의 인증서가 유효한지 검사 안함
        
        $response = curl_exec($ch);
        curl_close($ch);
        
        return $response;

    }

    echo get_search([rest api key 입력], "양말");

별다른 어려움 없이 사용하시리라 믿습니다. 제가 한 번 해 보니 잘 동작합니다.

 

 

 

 

 

 

'쇼핑몰연동 > 11번가' 카테고리의 다른 글

11번가 OPEN API 상품검색 node.js  (0) 2023.01.01
11번가 OPEN API CENTER - 서비스등록  (0) 2022.12.31
Posted by 창업닉군
,

php 정규식 문제점

PHP 2020. 8. 21. 19:42

다른 사이트 보면, preg_match 메소드를 쓰면, 한글이 잘 검색되는 것 처럼 나옵니다.

하지만 가끔 웹호스팅을 받다보면, 안되는 곳이 있습니다. (사실 preg_match를 써서 한글 정규식 검사가 제대로 된 경우를 만난적이 없습니다. 저는.)

그래서, mb_ereg_match를 쓰는데, 한글 검사가 잘됩니다.

하지만, 처음 쓸때 오류를 마구 만났습니다. 이유는 preg_match 슬래쉬 사이에 정규식패턴을 넣어줘야 하고, mb_ereg_match는 입력하면 안되기 때문입니다. 각각 아래와 같이 입력해야 합니다.

if( !mb_ereg_match( "^[가-힣]{2,16}$", $nickname ) ) return "한글 2~16자로 입력해 주세요";

if( !preg_match( "/^[a-zA-Z0-9]{2,8}$/", $id ) ) return "영어, 숫자 조합으로 2~8자로 입력해 주세요.";

사실, php 매뉴얼에 나와있지만 같겠지라고 생각하다 오류를 만날수 있습니다. (제가 그랬습니다. ㅠ,.ㅜ)

 

Posted by 창업닉군
,

Swoole 설치

PHP/swoole 2020. 6. 12. 10:00

실행환경

ubuntu 18.0.4

 

공식 사이트들

php.net

 

PHP: Hypertext Preprocessor

The PHP development team announces the immediate availability of PHP 7.2.0 Release Candidate 1. This release is the first Release Candidate for 7.2.0. All users of PHP are encouraged to test this version carefully, and report any bugs and incompatibilities

www.php.net

https://www.swoole.co.uk/

 

PHP Coroutine Async programming framework | Swoole PHP

Compared with other async programming frameworks or softwares such as Nginx, Tornado, Node.js, Swoole has the built-in PHP coroutine and async support, multiple threads I/O modules. Developers can use sync or async, coroutine API to write the applications

www.swoole.co.uk

 

선행작업

apache + php 설치 https://nicgoon.tistory.com/258

 

우분투( ubuntu ) apache + php 설치

작업환경 제 작업환경은 mac의 parallels를 설치, ubuntu 가상 pc를 생성해 작업하였습니다. OS : ubuntu 18.04 참고문서 https://webnautes.tistory.com/1185 Ubuntu 18.04에 LAMP ( Apache2, MySQL , PHP 7) 설..

nicgoon.tistory.com

설치 공식 문서 https://www.swoole.co.uk/docs/get-started/installation

 

Get started | Swoole PHP

 

www.swoole.co.uk

 

설치

php-pear 설치

$ sudo apt-get update

$ sudo apt-get install php-pear

phpize 설치

$ sudo apt install php-dev

swoole 설치

$ sudo pecl install swoole

 

php.ini 수정

설치가 완료되면, php.ini 파일에 extension이 추가되었음을 설정하라는 메시지가 나옵니다.

수정할 곳은 2군데 입니다. 일반 웹실행환경을 위한 apache2와 콘솔실행을 위한 cli입니다. swoole은 대체로 쉘 커맨드에서 실행하므로, cli도 반드시 수정해야 합니다.

웹을 위한 php.ini 경로 : /etc/php/7.2/apache2/php.ini
cli를 위한 php.ini 경로 : /etc/php/7.2/cli/php.ini

저는 7.2를 설치해 7.2라는 서브 경로를 포함하지만, 버전에 따라 서브 경로가 틀릴 수 있습니다.
각 파일들을 열어 가장 exptension들이 있는 가장 아랫줄에, extension=swoole.so를 포함시켜 줍니다.

아파치를 재 실행해 적용해 줍니다.

$ sudo service apache2 restart

Posted by 창업닉군
,

작업환경

제 작업환경은 mac의 parallels를 설치, ubuntu 가상 pc를 생성해 작업하였습니다.

OS : ubuntu 18.04

 

참고문서

https://webnautes.tistory.com/1185

 

Ubuntu 18.04에 LAMP ( Apache2, MySQL , PHP 7) 설치하는 방법

Apache2 웹서버, MySQL 데이터베이스 서버, PHP를 Ubuntu에 설치하는 과정을 소개합니다. LAMP는  운영 체제와 오픈 소스 소프트웨어 스택의 조합으로 Linux, Apache, MySQL, PHP의 첫글자만 가지고 만든 약어��

webnautes.tistory.com

 

apache 설치

기본 설치.

$ sudo apt-get update

$ sudo apt-get install apache2

설치 확인.

$ apache2 -v

브라우저 접속확인

홈디렉토리는 /var/www/html 입니다.

 

Mysql 설치

제 작업에는 mysql이 필요가 없었습니다. 하지만, 아파치 php를 설치하며, mysql을 설치하지 않으면 섭섭하므로, 설치만 했습니다.

$ sudo apt-get install mysql-server

 

PHP 설치

$ sudo apt-get install php php-mysql

홈디렉터리에 phpinfo.php 파일을 만들고 php 정보를 볼수 있는 내용을 채워 넣습니다.

$ sudo vi phpinfo.php

<?php phpinfo(); ?>

:wq

그리고 아래와 같이 php 가 표시되면 성공입니다.

 

php.ini 수정

저처럼 서버 관리자가 아니라면, php.ini 설정을 한 군데만 고치면, 될것 같습니다. 오류시 오류 로그 표시.

display_errors = Off 를 display_errors = On 으로 바꿔 주세요.

저장후 아파치 서버를 재시작해 주면 적용됩니다.

$ sudo service apache2 restart

 

 

 

 

 

 

'Ubuntu' 카테고리의 다른 글

Ubuntu 사용자 계정 관리 명령  (0) 2023.01.03
Ubuntu 사용자 계정 관련 파일  (1) 2023.01.03
Ubuntu 파일 사용 명령  (0) 2023.01.02
Ubuntu 디렉토리 사용명령  (0) 2023.01.02
ubuntu ftp 설치하기.  (0) 2020.06.12
Posted by 창업닉군
,

// 기본 클래스 형태.

class Account
{

    var $lv;
    var $name;

    // 생성자.
    public __construct( $lv, $name )
    {

        $this->lv = $lv;
        $this->name = $name;

    }

    // 레벨업.
    public lv_up()
    {

        $this->lv++;

    }

}

'프로그램 > 코드 기본형' 카테고리의 다른 글

mysql procedure 기본형  (0) 2020.06.06
mysql create 기본형  (0) 2020.06.06
Posted by 창업닉군
,

맥에서는 php를 사용하기 위한 apache 설정이 자동으로 다 되어 있어 활성화만 한다면, 바로 사용이 가능합니다.

먼저 apache 와 php 의 버전을 확인해 보면 다음과 같습니다.

$ apachectl -v

그 다음 php 버전을 확인해 보면 다음과 같습니다.

$ php -v

아파치를 실행해 주면 php는 자동으로 활성화가 됩니다.

$ sudo apachectl start

 

crul 을 통해 컴포저를 설치해 줍니다.

$ curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin/

 

손쉽게 사용하기 위해 symbolic link를 건다.

$ sudo ln -s /usr/local/bin/composer.phar /usr/local/bin/composer

 

자신이 사용할 php 폴더에 composer.json 객체를 만들고, 사용할 모듈을 적어 줍니다. name은 없어도 상관이 없습니다.

{
    "name": "lesstif/my-project", 
    "require": {
           "laravel/framework": "4.2.*",
           "kmd/logviewer": "1.2.*",
           "monolog/monolog": "1.11.*"
       }
   }

 

위와 같이 입력한 파일을 만들고 같은 폴더에서 아래와 같이 명령하면 해당 폴더 아래 vender폴더를 만들고 그곳에 설치 파일들을 설치하기 시작 합니다.

$ composer install

 

컴포저로 모듈을 설치한 후 일정 기간이 지난 후 최신 버전들로 업데이트 하려면, 해당 폴더에서 아래와 같이 명령어를 입력하면 됩니다.

composer update

 

php에서는 해당 폴더속의 모듈을 설치할 때 마다 일일이 가지고 올 필요가 없습니다. vendor 속 autoload.php 파일을 로드 하므로써 한 번에 끝이 나게 됩니다. 대체로 아래와 같이 한 줄 추가 하게됩니다.

require_once 'vendor/autoload.php';

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Posted by 창업닉군
,

페이스북 로그인을 사용할 일이 있어 제 티스토리를 둘러 봤는데, 없어서, 작업하며 남겨 둡니다.

 

[공식문서]

Manually Build a Login Flow : https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow .

 

[주요 사이트]

페이스북 개발자 센터 : https://developers.facebook.com/ .

 

 

1. 페이스북 개발자 센터 로그인 및 앱정보 확인.

먼저, 개발자 센터로가 로그인하고, 해당 앱을 선택합니다. (페이스북 앱이 아직 없다면, 생성해 주면됩니다.).

 

베이직 셋팅으로가 AppID와 App Secret을 확인하고 메모해 둡니다. 앱 시크릿은 show 버튼을 누르면 표시가 됩니다.

그리고, 개발 계정에서도 사용할 수 있도로 계발자를 몇 명 등록합니다.

 

그리고, 페이스북 로그인을 사용할 수 있도록 추가합니다.

 

그리고 플랫폼별 퀵스타트가 나오는데 우리는 웹에 해당 하지만, 매뉴얼로 직접 설치 할 것 이므로, 굳이 보시지 않으셔도 좋습니다.

 

중요한 것은 리디렉션 페이지를 지정하는 것 입니다. 페이스북 로그인 시 처음 아이디 페스워드를 입력하는 창을 띄울 때 리디렉션을 통해 띄웁니다. 그리고, 이 것이 성공하면 호출될 리디렉션 주소를 입력하면 됩니다.

 

2. 로그인 창 부르기.

공식문서 Manually Build a Login Flow를 보면 아래와 같이 입력하라고 되어 있습니다.

https://www.facebook.com/v3.3/dialog/oauth?
  client_id={app-id}
  &redirect_uri={redirect-uri}
  &state={state-param}

 

값을 만들어 웹브라우저에 바로 붙여 넣어도 되며, 지금은 php서버로 작업할 것이며, start.php 파일을 만들어 위 페이지로 리다이렉션 시키도록 하겠습니다. state값은 임의로 생성해 주면 되며, redirect-url 은 로그인 결과를 돌려 받을 url로 위에서 적어둔 주소와 일치해야 합니다. 몇 개를 추가할 수는 있지만, 리스트에 없는 값으로 redirect를 요청하면 오류가 납니다. app-id는 위에서 확인했을 것 입니다.

그럼 로그인 페이지를 요청하겠습니다. 로그인이 끝나고, 돌려받는 redirect-url은 http:// 부터 (또는 https://) 파일명까지 풀로 적어 줍니다. 아래 소스가 페이스북 로그인 창을 부르는 소스의 모두 입니다. (편의상 start.php 라 하겠습니다.)

<?php

// 페이스북 로그인을 위한 주소를 만들어 줍니다.
$facebook_call_dialogue = "https://www.facebook.com/v3.3/dialog/oauth?"
  . "client_id={app-id}"
  . "&redirect_uri={redirect-uri}"
  . "&state={state-param}"
  ;
  
  
  
// 지정한 주소로 리디렉션 시키기.
header( 'Location: ' . $facebook_call_dialogue );

 

정상 동작한다면 아래와 같은 페이지를 만나게 됩니다.

 

페이스북의 API는 에세스 토큰을 얻은 다음 유저의 정보를 검색 하거나, 해당 유저 명의로 글을 쓰거나 할 수 있습니다.  이 때 권한이 필요한 데, 유저에게 이 앱이 그렇게 할 수 있는 권한을 주겠니 라고 물어보며, 그 화면이 아래와 같이 뜹니다.

 

여기서 다음을 누르면 code와 state를 위에서 적었던 redirect-url 페이지로 돌려 줍니다. 여기서 받은 코드를 서버에서 에세스 코드로 변경하는데, 보안상 php 서버에서 facebook과의 통신으로 통해 교환하며, GET 방식으로 연결해 받아 옵니다. php에서는 fsocketopen을 이용해 받아 올 수 있습니다.

 

 

 

3. 리디렉션 처리 하기.

리디렉션 까지 무사히 마쳤다면, GET을 통해 서버로 code 값이 전해 졌을 것 입니다. 그럼 아래 코드를 통해 토큰으로 교환할 수 있습니다. 이 부분은 redirect.php 에서 처리를 하면됩니다.

    // 코드값을 가지고 옵니다.
    $code = @$_GET['code'];



    // 에세스 토큰 교환을 위한 api 주소를 가지고 옵니다.
    $exchange_host = "graph.facebook.com";
    $exchange_path = "/v3.3/oauth/access_token";

    // 보낼 주소를 만들어 주도록 합니다.
    $mainAddr =
      $exchange_path
      . "?client_id=" . {app-id}
      . "&redirect_uri=" . {redirect-uri}
      . "&client_secret=" . {app-secret}
      . "&code=" . $code
    ;


    $addr = "https://" . $exchange_host . $mainAddr;
    echo "<br><br>";
    echo $addr;
    echo "<br><br>";


    // 보낼값을 만들어 줄 변수들을 만들어 줍니다.
    $endline = "\r\n";
    $req = "";

    // 보낼 데이터를 만들어 주도록 합니다.
    $req = "GET $mainAddr HTTP/1.1" . $endline
    . "Host: " . $exchange_host . $endline
    . "Connection: Close" . $endline . $endline
    ;





    // 페이스북 서버와 연결을 시도합니다.
    $fsock = @fsockopen( "ssl://" . $exchange_host , 443 );

    if( @!$fsock )
    {
      // $error_result['method_error'] = "토큰을 교환하기 위한 페이스북 서버 접근에 실패하였습니다.";
      echo "토큰 교환을 위한 소켓을 여는 데 실패했습니다.";
      exit;
    }



    // 토큰 데이터를 확인합니다.
    $headPassed = false;
    $AccessTokenJson = "";

    // 데이터 보내기를 합니다.
    fwrite( $fsock, $req );

    while( !feof($fsock) ) {
      $runCount++;
      // 한 줄 라인을 가지고 옵니다.
      $line = fgets($fsock, 128);

      // 아직 헤더는 아니지만, 헤더의 끝을 만난 경우, 헤더가 끝났음을 마킹하고, 종료합니다.
      if( $line == "\r\n" && !$headPassed )
      {
        $headPassed = true;
        continue;
      }

      // 헤더가 아닌 경우만, 값을 출력하도록 합니다.
      if( $headPassed )
      {
        $AccessTokenJson .= $line;
      }

    }

    // 연결을 닫아 주도록 합니다.
    fclose( $fsock );


    print_r( $AccessTokenJson );

 

 

4. 로그인 유저의 정보 확인하기.

에세스 토큰을 교환하던 요령으로, 한번 더 http 요청을 하면됩니다.

    // json 문자열을 객체로 전환.
    $AccessTokenObj = json_decode( $AccessTokenJson );
    $token = $AccessTokenObj->access_token;




    // 접속한 유저의 정보를 가지고 옵니다.
    $me_host = "graph.facebook.com";
    $me_path = "/v3.3/me";


    $me_path =
      $me_path
      . "?access_token=" . $token;
      echo $me_path;
      echo "<br>"
      ;


    // 보낼값을 만들어 줄 변수들을 만들어 줍니다.
    $endline = "\r\n";
    $req = "";

    // 보낼 데이터를 만들어 주도록 합니다.
    $req = "GET $me_path HTTP/1.1" . $endline
    . "Host: " . $me_host . $endline
    . "Connection: Close" . $endline . $endline
    ;





    // 페이스북 서버와 연결을 시도합니다.
    $fsock = @fsockopen( "ssl://" . $me_host , 443 );

    if( @!$fsock )
    {
      // $error_result['method_error'] = "토큰을 교환하기 위한 페이스북 서버 접근에 실패하였습니다.";
      echo "프로필 확인을 위한 소켓을 여는 데 실패했습니다.";
      exit;
    }



    // 토큰 데이터를 확인합니다.
    $headPassed = false;
    $meJson = "";

    // 데이터 보내기를 합니다.
    fwrite( $fsock, $req );

    $runCount = 1;

    while( !feof($fsock) ) {
      $runCount++;
      // 한 줄 라인을 가지고 옵니다.
      $line = fgets($fsock, 128);

      // 아직 헤더는 아니지만, 헤더의 끝을 만난 경우, 헤더가 끝났음을 마킹하고, 종료합니다.
      if( $line == "\r\n" && !$headPassed )
      {
        $headPassed = true;
        continue;
      }

      // 헤더가 아닌 경우만, 값을 출력하도록 합니다.
      if( $headPassed )
      {
        $meJson .= $line;
      }

    }

    // 연결을 닫아 주도록 합니다.
    fclose( $fsock );



    // 페이스 북으로 부터 access 토큰 교환 값을 표시합니다.
    echo "<br><br>respone of logined user profile from facebook:<br>";


    // 에세스 토큰을 확인해 주도록 합니다.
    // $AccessTokenObj = @json_decode( $AccessTokenJson );
    // $AccessToken = @$AccessTokenObj->access_token;

    print_r( $meJson );

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Posted by 창업닉군
,

목적 자체는 Postfix를 설치해 메일을 보내는 것 입니다. 하지만, 메일이 잘 오고 가는지 테스트를 해야 하므로, apache + php 설치 후 SquirrelMail이라는 웹메일 프로그램을 설치해, 테스트를 할 예정입니다.

 

[공식문서]

Squirrel Mail : https://squirrelmail.org .
Apache : http://apache.org .
PHP : php.net .
Postfix : postfix.org .
Dovecot : https://www.dovecot.org .

 

[참고문서]

Postfix 설치 : https://www.tecmint.com/setup-postfix-mail-server-in-ubuntu-debian/ .

 

 

 

1. Apache2 and PHP5 설치.

먼저 adt-get update를 해 줍니다. 이 것은 다운로드 가능한 최신 목록을 가지고 오는 명령입니다. 제가 한 번 안하고 설치했다 고생한 경험이 있습니다. 꼭 해 주는 것이 좋습니다.

$ sudo apt-get update

 

그럼 아래의 명령을 이용해 apache2와 php5를 설치하도록 합니다.

$ sudo apt-get install apache2 php

 

다른 곳에서 접속하려면 80번 포트를 열어두어야 함을 잊지 말아야 합니다.

 

 

 

2. postfix mail 서버 설치.

아래와 같이 입력해 postifx를 설치하도록 합니다.

$ sudo apt-get install postfix

 

설치중 첫 항목에서는 인터넷 사이트용으로 설정하도록 선택합니다.

 

그 다음 항목에서 메일을 받기 원하는 주소를 입력해 줍니다. 우리는 도메인을 설정하지 않았으므로, testing 이라고 입력합니다. 블로그를 쓰며 하다보니 'ㅅ'이 들어 갔습니다.

 

그 다음 메일 서버를 다시 시작해 줍니다.

$ sudo service postfix restart

 

 

 

3. Dovecot

다음과 같이 Deovecot을 설치합니다.

$ sudo apt-get install dovecot-imapd dovecot-pop3d

 

dovecot을 재 시작합니다.

$ sudo service dovecot restart

 

 

 

4. Installing SquirrelMail

SquirrelMail을 아래와 같이 입력해 설치 합니다.

$ sudo atp-get install squirrelmail

 

SquireelMail을 설정합니다.

$ sudo squirrel-configuire

 

 

 

*다음에 계속 작성하겠습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Ubuntu > Ubuntu 옛글' 카테고리의 다른 글

MongoDB 설치 Ubuntu  (0) 2019.07.04
스팸메일로 처리 되지 않게 하기  (0) 2019.06.17
ubuntu sendmail 설치  (0) 2019.06.17
우분투 18.04 vsftp 설치  (0) 2019.06.04
Posted by 창업닉군
,