7.1 apache 설치

명령어: sudo apt-get install apache2 –y

아파치가 정상적으로 설치되었는지 확인할려면 웹 브라주저에서 내 IP 인 127.0.0.1(컴퓨터 기준으로 자기자신을 가르킨다)을 입력해서 아래 화면과 같이 나오면 성공이다.

7.2mysql 설치

명령어: sudo apt get install –y mysql-server mysql-client

mysql의 루트 암호를 변경하기 위한 명령어다

명령어: sudo mysql –u root -p

새로운 암호를 입력하라는 말이 나오면 ‘password’를 입력한다 (여기에서 사용하는 모든 계정의 암호는 ‘password’이다)

mysql의 편집을 외부에서 할수 있게 하기 위해서 설정 파일을 수정하기 위한 과정이다.

명령어: sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf (vi를 입력해도 자동으로 vim에디터가 사용된다)

29번째 줄을 ‘#’을 붙여서 주석처리한다.

(vim에서 줄번호 보는 방법: ‘:’을 누르고 ‘set nu’입력)

(i를 입력해야 편집이 된다)

7.3 PHP

명령어: sudo apt-get install -y libapache2-mod-php7.0 php7.0

pi 계정으로 접근할수 있게 chown 명령어를 사용하여 /var/www/html 디렉토리의 권한을 변경한다.

명령어: sudo chown pi –R /var/www/html

PHP가 정상적으로 설치되었는지 확인하기 위해서 php 파일을 만들어 본다.

명령어 sudo vi /var/phpinfo.php

파일 내용:

<?php

phpinfo();

?>

입력후 :wq를 입력하여 저장

웹브라우저에서 127.0.0.1/phpinfo.php 입력하여 이동

7.4 phpmyadmin 설치

phpmyadmin은 mysql을 웹에서 쉽게 관리하기위해 만들어진 도구이다

sudo apt-get install phpmyadmin을 입력하여 설치한다

설치중에 위와 같은 창이 뜰 것이다. apache2를 선택하여 스패이스바를 누르면

위와 같이 선택이된다 그뒤 엔터를 눌러 확인을 누르면 된다.

예를 눌러 넘어간다

root의 암호를 지정해야 하는데 우리는 password 로 지정한다. 확인을 누른후 다시한번 암호를 확인하는 창이 나오는데 다시 password를 입력한다.

phpmyadmin에 접속하기 위해서 설정파일을 수정한다.

sudo vi /etc/apache2/apache2.conf

맨 아래 Include /etc/phpmyadmin/apache.conf를 입력한후 저장하여 나간다.

sudo service apache2 restart를 눌러서 apache를 재시작 한다.


6.1 SSH 방식으로 연결하기  

SSH는 Secure Shell의 약자로서, 보안성을 가지고 있는 텔넷이다. 여기서 텔넷은 보안성이 없는 CLI기반의 제어 프로토콜이다. 그렇기 때문에 텔넷은 사실상 퇴출되고, 보안성이 높은 SSH를 사용한다.  

6.1.1 SSH접속을 위한 클라이언트 설치  

보통 많이 쓰는 클라이언트 프로그램은 오픈소스에다가 무료인 putty(퍼티)를 사용한다.  

이것을 받아 설치하자.  

공식 사이트에서 다운로드: putty.org  

네이버 자료실에서 받기: (단축주소) bit.ly/putty_naver  

software.naver.com/software/summary.nhn?softwareId=MFS_116451  

셋중 어디로 들어가서 받든 상관없다.  

6.1.2 putty 실행  

시작메뉴에 들어가서 putty 폴더를 찾아본다.  

 

putty를 눌러보자.  

 

이렇게 설치된 프로그램이 나오는데, 여기서 그냥 putty만 실행하자.  

 

메인 화면이다.  

6.1.3 라즈베리파이에 접속하기  

먼저 라즈베리파이의 IP를 알아야 한다.  

라즈비안에서 터미널을 실행하고 ‘ifconfig’를 입력한다.  

 

그러면 아래와 같이 결과가 나오는데, 유선이면 eth0, 무선(와이파이)면 wlan0 항목을 본다. 여기서는 와이파이로 연결하였기 때문에 wlan0에서 찾겠다.  

 

wlan0의 아래에 있는 inet 바로옆에 있는 내용(xxx.xxx.xxx.xxx)이 ip주소다. 여기서는 192.168.0.4 이므로 라브베리파이의 ip주소는 192.168.0.4이다.  



putty에 다시 돌아와서 아까전에 알아낸 ip주소를 Host Name ( or IP address)아래 박스에 입력한다.  

 

추가로 바로 아래 ‘SSH’와 Port아래 박스(22)도 체크하면 좋다. 이것은 putty의 기본값이기 때문에 따로 바뀌어있을 이유는 없지만, 만약 바뀌어 있다면 변경해야 한다.  

그뒤 맨 아래 Open을 누르자  

처음 접속하는 것이라면 아래와 같이 보안관련 내용이 나올 것 이지만, 아직 우리는 내부 네트워크에서 사용하는 것 이기 때문에 그냥 ‘예’를 누르고 무시해도 된다.  

 

6.1.4SSH로 로그인 하기  

아래와 같은 로그인 화면이 나올 것 이다.  

 

계정명을 입력하라는 것 인데, 여기서는 pi를 입력하고(라즈베리파이의 기본계정) enter을 누른다.  

그럼 아래와 같은 password창이 나올 것 이다.  

 

우리는 password를 password로 지정했으니 password를 입력한다. (리눅스는 보안을 위해 입력되는 내용을 전혀 표시되지 않으니 표시되지 않더라도 잘못된 것이 아니며 정상이다)  

그럼 아래와 같이 로그인 성공메세지가 뜬다.  

 

이제 접속에 성공했으니 원격으로 리눅스의 쉘처럼 사용 할수 있다.  



6.2 VNC로 접속하기  

VNC란 Virtual Network Computing의 약자로써 원격으로 다른 컴퓨터를 제어하는 프로그램 이다. SSH는 프로토콜이지만 이것은 프로그램인 이유는, RealVNC라는 회사에서 만든 RFB프로토콜을 사용할수 있게 도와주는 프로그램이기 때문이다.  

이것을 사용하는 이유는 GUI기반에서만 동작하는 프로그램을 사용할 때 필요하기 때문이다. 예를 들면 웹 브라우저의 페이지가 안열리면 무엇이 문제인지 확인하기 위해 라즈베리파이의 로컬에서 확인할 필요가 있기 때문이다.  



이번에도 라즈비안의 기본 설치 프로그램이라 라즈베리파이에서 별도 작업을 할 필요는 없다.  

물론 라즈베리파이의 IP는 알아야 하기 때문에 6.1.3 절에서 라즈베리파이에서 사용중인 IP를 알아내는 것을 참조하자.  

6.2.1 VNC설치하기  

위의 putty와 다르게 VNC는 상용프로그램 이기 때문에 공식 홈페이지에서 받아야 한다.  

공식 다운로드 주소: realvnc.com/en/connect/download/viewer/에서 해당하는 운영체제의 버전을 받아 설치하면 된다.  

6.2.1.1 VNC 설치 프로그램 실행  

 

역시 한글은 지원하지 않는다. 영어로 설치하자.  

 

next  

 

계약 동의  

 

next  

 

next  

 

install  

 

finish  

이제 시작메뉴에 가서 프로그램을 실행한다.  

 

VNC Viewer를 실행한다.  

 

에러메세지를 보내는 것을 동의하냐는 내용이다. 그냥 자기 소관대로 페크하던 체크하지 않던지 하고 GOT IT을 누른다.  





메인화면이다.  

 

맨 위 네모상자에 라즈베리파이의 IP주소를 입력한다.  

 

그뒤 enter를 누른다  

 

접속중이라는 화면이 뜬다.  

만약 첫 접속이라면 아래와 같이 보안경고가 뜬다.  

 

continue를 누른다.  

 

접속 계정과 password를 입력해야 한다.  

우리의 라즈베리파이의 계정은 ‘pi’ 암호는 ‘password’ 이므로 아래와 같이 입력한다.  

 

그뒤 OK를 누르면  

아래와 같이 원격 접속이 완료된다.  

 

경고: 전공자들은 암에 걸릴수도 있습니다. 애초에 만든 사람부터 '진짜 이것까지 넣어야 하나' 라는 심정으로 만듬...

몇년전에 교내 프로젝트에서 라즈베리파이로 서버를 구축할때 작성했던 자료집인데 오래된 글을 올리면서 한글 파일로 작성했던 문서들도 올려야 겠다는 생각으로 올림.

일부 이미지는 수정되어야 하는것도 있지만 너무 직관적이라서 굳이 수정할 필요가 없기에 그냥 올림.

문단 번호는 안맞지만 문서 내용을 그대로 복붙한것이므로 무시 바람.

이 문서에서 사용된건 라즈베리파이 3B지만, 다른 버전도 이방법으로 문제없이 됨.

여기서는 비 전공자, 중,고등학생도 이해가 되기 쉽도록 설명하기 위해 GUI버전으로 설치함.

 

 

 

4.1 라즈비안 설치하기

먼저 라즈베리 파이에서 보조기억장치로 사용하는 것은 microSD카드이다. 그렇기 때문에 microSD카드에 운영체제를 넣어야 하는데, 라즈베리파이의 운영체제 설치방법은 이미 설치된 PC에서 바로 거의 완성된 이미지를 microSD카드에 넣는 방법이다.

4.1.1 microSD카드를 리더기에 넣는다.

microSD카드 리더기가 컴퓨터에 내장되어 있다면 바로 넣어도 되지만, 없다면 별도의 리더기를 사용해야 한다.

4.1.2 etcher을 설치하기

balena.io/etcher 에 가서 etcher을 설치한다.

 

raspberrypi.org/downloads/raspbian 에서 Raspbian Stretch with desktop을 받는다. download ZIP버전을 받으면 된다.

4.1.3 etcher 실행하기

 

기본적인 실행화면이다.

4.1.4 이미지 파일 선택하기

 

위의 ‘Select Image’를 눌러

 

이와같은 팝업이 뜨면 4.1.1.1에서 받은 이미지 파일을 선택한다.

4.1.5만약 설치해야 할 SD카드가 아니면 change를 눌러 바꾼다.

 

그뒤 flash를 누르면 자동으로 이미지가 삽입된다.

중간에 관리자 권한을 요구하는데 yes를 누르자.

4.1.6

 

이미지를 넣고있는 중이다.

4.1.7 성공한 화면이다.

 

4.2 라즈베리파이의 부팅

4.2.1 라즈베리파이를 부팅하기 전에 보조기억장치인 microSD카드를 넣어야 한다. 라즈베리파이의 아랫면에 아래와 같이 microSD카드를 넣는다.

 

4.2.2 라즈베리파이와 디스플레이, 키보드, 마우스 연결

라즈베리파이와 디스플레이는 HDMI, 키보드와 마우스는 USB규격으로 연결한다. 만약 없다면 구해서 해야한다.

 

4.2.3 라즈베리파이의 부팅

라즈베리파이의 전원 공급 장치에 와 라즈베리파이를 연결한다.

 

4.2.4 전원이 공급되면 라즈베리 파이가 부팅된다.

 

최초부팅시 이 화면이 보이면 성공한 것이다. 이 화면의 내용은 저장공간을 재배열 하고 있다는 내용인데, 우리는 무시하면 된다.

 

4.2.5 최초부팅과 설정하기

 

 

최초부팅시 위와같은 설정 시작 화면이 나타난다.

 

국가 설정을 먼저 한국으로 변경한다. 맨위 country에서 south korea를 설명하면 자동으로 아래 부분도 바뀐다. 그뒤 Next를 누르자

 

다음은 라즈베리 파이의 기본계정인 ‘pi’의 계정의 비밀번호를 설정하는 화면이다.

우리는 ‘pasword’를 입력하자.

 

그뒤 연결할 와이파이를 선택한다. 연결한 네트워크를 누르고 Next를 누르면 비밀번호를 입력하는 창이 나온다. 만약 와이파이가 아닌 유선을 이용하고 싶으면 skip을 누르면 된다.

 

소프트웨어 업데이트를 할것인지 묻는 창이다. 네트워크에 연결되어있으면 Next를 누른다. 그러면 자동으로 업데이트가 될 것이다.

 

설정을 마쳤다. restart를 눌러서 재시작 한다.

 

 

 

<!DOCTYPE html>

<html lang="kr" dir="ltr">

 

    <head>

        <title>OkCashbag 푸쉬 포인트 적립</title>

        <meta charset="utf-8">

        <meta name="viewport" content="width=device-width, initial-scale=1.0">

    </head>

 

    <body>

    

        <span style = " font-size:1.5em; line-height: 1.5em; color:#004AF3;">

            <h2 align ="center">OK cashbag주소와 개인키 일괄 변환기</br> 뽐뿌 Shampoo님의 URL을 복사해서 사용하세요!</h2 align ="center">

    </span>

 

    <?php

    $userID1 = $_GET["k1"];

    $userID2 = $_GET["k2"];

    $url1 = $_GET['j1'];

    $url2 = $_GET['j2'];

    $url3 = $_GET['j3'];

    $url4 = $_GET['j4'];

    $url5 = $_GET['j5'];

    $url6 = $_GET['j6'];

    $url7 = $_GET['j7'];

 

    

    echo "<br>";    

    echo "<br>";

    if(isset($url1)) {

    echo '<a href="'.$url1.$userID1.'">'.$url1.$userID1.'</a>'; }

    echo "<br>";

    if(isset($url2)) {

    echo '<a href="'.$url2.$userID1.'">'.$url2.$userID1.'</a>'; }

    echo "<br>";

    if(isset($url3)) {

    echo '<a href="'.$url3.$userID1.'">'.$url3.$userID1.'</a>'; }

    echo "<br>";

    if(isset($url4)) {

    echo '<a href="'.$url4.$userID1.'">'.$url4.$userID1.'</a>'; }

    echo "<br>";

    if(isset($url5)) {

    echo '<a href="'.$url5.$userID1.'">'.$url5.$userID1.'</a>'; }

    echo "<br>";

    if(isset($url6)) {

    echo '<a href="'.$url6.$userID1.'">'.$url6.$userID1.'</a>'; }

    echo "<br>";

    if(isset($url7)) {

    echo '<a href="'.$url7.$userID1.'">'.$url7.$userID1.'</a>'; }

    echo "<br>";

    echo "<br>";

    echo "<br>";

    echo "<br>";

    if(isset($url1)) {

    echo '<a href="'.$url1.$userID2.'">'.$url1.$userID2.'</a>';}

    echo "<br>";

    if(isset($url2)) {

    echo '<a href="'.$url2.$userID2.'">'.$url2.$userID2.'</a>';}

    echo "<br>";

    if(isset($url3)) {

    echo '<a href="'.$url3.$userID2.'">'.$url3.$userID2.'</a>';}

    echo "<br>";

    if(isset($url4)) {

    echo '<a href="'.$url4.$userID2.'">'.$url4.$userID2.'</a>';}

    echo "<br>";

    if(isset($url5)) {

    echo '<a href="'.$url5.$userID2.'">'.$url5.$userID2.'</a>';}

    echo "<br>";

    if(isset($url6)) {

    echo '<a href="'.$url6.$userID2.'">'.$url6.$userID2.'</a>';}

    echo "<br>";

    if(isset($url7)) {

    echo '<a href="'.$url7.$userID2.'">'.$url7.$userID2.'</a>';}

?>

        <form action="okpush.php" method="get">

        <label for="trs">변환</label>

        </br>

        <input type="text" name="j1" placeholder="주소1">

        </br>

            <input type="text" name="j2" placeholder="주소2">

        </br>

            <input type="text" name="j3" placeholder="주소3">

        </br>

            <input type="text" name="j4" placeholder="주소4">

        </br>

            <input type="text" name="j5" placeholder="주소5">

        </br>

            <input type="text" name="j6" placeholder="주소6">

        </br>

        <input type="text" name="j7" placeholder="주소7">

        </br>

        <?php

        echo '<input type="text" name="k1" placeholder="개인키1" value='.$userID1.'>';

        echo '</br>';

        echo '<input type="text" name="k2" placeholder="개인키2" value='.$userID2.'>';

        echo '</br>';

        ?>

            <input type="submit" value="변환">

    </form>

    </br>

      

    </body>

</html>

 

여기서 j1~j7까지는 공유받은 URL, k1,k2는 사용자키 이렇게 넣으면 된다.

하단 폼에 url, 키를 넣고 버튼을 누르면 GET방식으로 받아와서 그냥 그 URL 복사해서 카카오톡 같은걸로 자신에게 보내서 그 웹사이트에 접속 후 링크 누르면 됨.

UI... 이거는 포기했음;; 애초에 디자인은 내 전공이 아니고 하면 더 끔찍한게 나올것 같으니까

실제 작동되는 웹 사이트 : https://wdg.ne.kr/okpush.php

 

<?php

    $longurl = "https://". $_SERVER["HTTP_HOST"].$_SERVER['REQUEST_URI'];

    $url = urlencode($longurl);

    $name = mt_rand(10000999999);

    $key = 'API키';

    $qu = 'https://cutt.ly/api/api.php?key='.$key.'&short='.$url.'&name=w'.$name;

    $json = file_get_contents($qu);

    $arr =  json_decode($jsontrue);

    $arr2 = $arr["url"];

    $app = $arr2["shortLink"];

    echo '<a href="'.$app.'">'.$app. '</a>';

?>

 

여기는 느리다는 단점이 있네;;

그리고 동일 주소를 넣어도 계속 값을 다르게 줘야한다...

심지어 json 파싱까지 해야 함;;

bitly V4 API에서 단축주소 만들기
https://jdkblog.tistory.com/70 에서 코드 가져왔습니다...

<?php
$longUrl = "https://". $_SERVER["HTTP_HOST"].$_SERVER['REQUEST_URI'];
/// @brief  생성한 URL을 $data['long_url']에 담고 JSON 형태로 변환한다.
$data['long_url'] = $longUrl;
$payload = json_encode($data);
/// @brief BITLY API 접근 URL
$bitApi = "https://api-ssl.bitly.com/v4/bitlinks";
/// @brief 발급받은 BITLY API 토큰
$bitToken = "한글만 지우고 토큰 입력";
/// @brief CURL 사용
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, $bitApi);
curl_setopt($cURL, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($cURL, CURLOPT_POSTFIELDS, $payload);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($cURL, CURLOPT_HTTPHEADER, array(
  "Authorization:Bearer ".$bitToken        // Bearer { $token } (공백필수)
, "Content-Type:application/json"
, "Content-Length:".strlen($payload)
)
);

/// @brief 결과값 조회
$result = json_decode(curl_exec($cURL), TRUE);

echo "<pre>";
print_r($result);
echo "</pre>";

/// @brief 출력결과
if(isset($result['link']) == 1) {
echo $result['link'];
}

?>

아쉽게도 bitly가 신규 무료계정의 단축주소 생성개수한도를 줄여버렸다 ㅠㅠ

+ Recent posts