아두이노 프로젝트를 위한 서버 구성으로 벌써 세 번째 포스팅이네요.. 오늘은 지난 두 포스팅을 이어 서버 구성 도구 A.M.P (Apache, MySQL, PHP)에서 마지막 PHP 설치 방법에 대해 알아보겠습니다.

 

아두이노(Arduino) 홈 IoT(사물인터넷)을 위한 서버(Sever) 구성

그동안 아두이노와 센서의 기본적인 동작법 및 프로그램 코딩은 어느 정도 익숙해졌을 겁니다. 이제 본격적인 프로젝트를 진행하기 전에 인터넷을 통해 데이터 및 신호를 주고받을 수 있어야 아두이노를 원하는 로..

it-g-house.tistory.com

 

아두이노(Arduino) 홈 IoT(사물인터넷)을 위한 서버(Sever) 구성 2: MySQL 설치방법

지난 포스팅에서 아두이노 서버 구성에 대해 알아보았고 필요한 도구(Tool)로 A.M.P (Apache, MySQL, PHP) 중 Apache(아파치)를 설치하는 방법에 대해 알아보았습니다. 이어서 MySQL 설치 방법을 알아보겠습니다...

it-g-house.tistory.com


  • PHP (Professional HyperText Preprocessor)

PHP는 다운로드 홈페이지 https://windows.php.net/download/ 에서 최신 버전으로 다운받으면 됩니다. 파일 항목에서 'VC15 x86 Thread Safe'가 64bit Apache(아파치)서버 환경에 해당됩니다. 'Non Thread Safe'는 IIS (Internet Information Sevices, 마이크로소프트 제공) 서버 환경에 해당하기 때문에 저는 Apache 서버와 호환을 위해 Thread Safe 파일을 다운로드하였습니다.

 

PHP (Professional HyperText Preprocessor) 다운로드 페이지

다운로드 완료 후 압축을 C드라이브에 풀어주고 Apache와 연동 및 정상적인 작동을 위해 역시나 메모장을 통해 몇 가지 수정을 해야 합니다. 폴더 안의 'php.ini-production' 파일을 메모장으로 열어줍니다. 

 

PHP 설치 과정에서 'php.ini-production' 파일 수정

2/3 지점쯤에 ;Paths and Directories; 내용 부분에서 ;extension_dir = "./"에서 ';'는 삭제하고 "./"안에 압축파일 푼 경로로 수정하면서 끝에 '/ext'를 붙여서 수정합니다. 저는 C드라이브에 압축을 풀어서 아래와 같이 수정하였습니다. 여기서 주의하실 점은 하위 폴더 구분을 '/'로 하셔야 합니다.

 

PHP 설치 과정에서 'php.ini-production' 파일 수정

 

수정 후 파일 이름을 'php.ini'로 다른 이름 저장합니다.

 


 

그다음 Apache와 연동을 하기 위해 Apache설치 하위 폴더 conf에서 'httpd.conf' 파일을 수정해야 합니다. 

 

Apache와 연동하기 위해 'httpd.conf' 파일 수정

httpd.conf 내용 중 <IfModule dir_module>에서 DirectoryIndex index.html를 다음과 같이 'index.php'를 삽입하여 수정하여 줍니다. 그리고 맨 마지막에 

 

PHPIniDir "C:/php8"
LoadModule php_module "C:/php8/php8apache2_4.dll"
AddType application/x-httpd-php .html .php
AddHandler application/x-httpd-php .php

 

라고 추가 입력하고 저장합니다.

 

Apache와 연동하기 위해 'httpd.conf' 파일 수정

 


 

 

 

  • Apache와 연동 확인하기

그럼 PHP가 Apache와 잘 연동되었는지 확인하기 위해 PHP 정보를 Apache에서 만들어준 웹서버에서 열리는지 확인할 겁니다. 먼저 빈 메모장 또는 텍스트 파일을 열어서 <? phpinfo(); ?>라고 한 줄 입력하고 'phpinfo.php' 파일명 또는 원하는 파일명에 확장자는. php로 저장을 합니다. 여기서 메모장으로 저장할 때 주의하실 점은 파일 형식을 모든 파일로 하지 않으면. txt 파일로 저장되기 때문에 웹브라우저에서 확인하려 해도 파일을 인식 못하는 상황이 발생합니다. 그렇기 때문에 꼭 확장자가 php가 되도록 저장해야 합니다.

 

 

PHP, Apache와 연동하기 확인하기 - phpinfo.php 파일 저장방법

 

저장할 위치는 앞서 Apache를 설치했던 폴더의 하위 폴더인 htdocs에 저장합니다. 저는 경로가 C:\httpd-2.4.41-win64-VS16\Apache24\htdocs에 저장하였습니다. 그리고 웹브라우저에서 'http://localhost/phpinfo.php'라고 입력하면 아래와 같이 PHP 정보를 확인할 수 있습니다.

 

PHP 정보 확인

 


여기까지 아두이노(Arduino) 프로젝트를 진행하기 위한 서버 구성 도구인 A.M.P (Apache, MySQL, PHP) 중 마지막인 PHP를 설치하는 방법을 알아보았습니다. Apache와 연동하는 부분이 있기 때문에 아무래도 PHP설치에 앞서 Apache를 설치할 때 설정을 잘해놔야 고생을 안 할 거 같습니다. (저는 꼼꼼하게 안 하고 휙~휙~ 넘어가서 엄청 헤맸네요 ㅠㅠ)



출처: https://it-g-house.tistory.com/entry/아두이노Arduino-홈-IoT사물인터넷을-위한-서버Sever-구성-3-PHP-설치-방법 [IT-G-House]

'ESP8266 > DB 연결' 카테고리의 다른 글

A.P.M 설치 mysql 설치  (0) 2022.03.25
A.P.M 설치 아파치 설치  (0) 2022.03.25
ESP8266 아두이노 마리아DB Insert 하기  (0) 2022.03.25

지난 포스팅에서 아두이노 서버 구성에 대해 알아보았고 필요한 도구(Tool)로 A.M.P (Apache, MySQL, PHP) 중 Apache(아파치)를 설치하는 방법에 대해 알아보았습니다. 이어서 MySQL 설치 방법을 알아보겠습니다. 앞 글은 아래 링크 참조 부탁드립니다 ^^

 

아두이노(Arduino) 홈 IoT(사물인터넷)을 위한 서버(Sever) 구성

그동안 아두이노와 센서의 기본적인 동작법 및 프로그램 코딩은 어느 정도 익숙해졌을 겁니다. 이제 본격적인 프로젝트를 진행하기 전에 인터넷을 통해 데이터 및 신호를 주고받을 수 있어야 아두이노를 원하는 로..

it-g-house.tistory.com


  • MySQL

MySQL은 가장 많이 사용되고 있는 데이터베이스(Database, DB) 시스템으로, 오픈소스로 제공되고 있는 관계형 데이터베이스(RDBMS: Relational Database Management System)입니다. '데이터베이스'는 여러사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합니다. (출처: 위키페디아) 단순 저장과 공유뿐만이아니라 데이터접근성, 보완성, 일관성 및 데이터 공간 효율화 등의 정보를 저장하고 다루는데 특화된 시스템이라고 할 수 있습니다. MySQL은 파이썬, C/C++, 자바, PHP 등 다양한 프로그래밍 언어를 지원하는데 그 중 PHP(Professional HyperText Preprocessor)가 HTML처리에 강점이 있고 많은 데이터베이스를 지원가능하기 때문에 DB서버(Sever)를 구성하는데 도구로 MySQL과 같이 많이 사용되고 있습니다. 

 

  • MySQL 설치방법

MySQL 홈페이지 다운로드 페이지 https://dev.mysql.com/downloads/에서 'MySQL Installer for Windows'를 선택합니다. 용량이 더 큰 Windows (x86, 32-bit), MSI Installer로 다운로드 합니다. 그럼 로그인 관련 문구가 나오는데 아래 No thanks, 를 클릭하면 다운로드가 시작됩니다.

 

MySQL 홈페이지 메인화면

MySQL 다운로드 페이지

MySQL 커뮤니티 다운로드 페이지

MySQL 커뮤니티 다운로드 페이지

다운로드한 install 파일을 실행하면 설치가 진행되는데 MySQL 서버와 관련된 Tool이 설치 가능하게 선택하여 진행합니다. 읽어보시고 각자 목적에 맞게 선택하여 진행하시면 될 듯합니다. 

 

MySQL Installer 실행 화면

MySQL 설치에 필요한 스프트웨어 설치

MySQL 설치 진행 전에 필요한 소프트웨어를 설치하라고 하는데 왠만한건 자동으로 설치 가능한데 manual이라고 표시된 소프트웨어는 직접 찾아 설치해 주어야 합니다. 근데 꼭 설치 안 해서 MySQL 설치 진행에는 큰 무리가 없는 듯합니다. 나중에 실행할 때 어떤 문제가 나올지 몰라 저는 필요한 항목을 직접 찾아 설치한 후에 계속 진행하였습니다. 사용자의 컴퓨터의 상황에 따라 항목이 다를 수 있어 추가적인 설치 방법은 skip 하겠습니다. Next를 누르면 본격적으로 MySQL 프로그램을 다운로드합니다. Execute를 누르고 모두 설치가 완료되면 Next를 누릅니다.

 

 

MySQL 설치

Standalone MySQL Sever 선택

MySQL Type and Networking 선택

웬만한 거 그냥 설정되어 있는 데로 Next를 해주면  Password 설정할 수 있습니다. 대소문자, 숫자, 특수문자를 잘 섞어주면 됩니다. 그리고 Next 누르면 SeverName을 설정할 수 있습니다. 전 생각하기 싫어서 'MySQL80' 그대로 갑니다 ㅎㅎ 

 

MySQL Password 설정

MySQL Apply Configuration 설치

이후에 또 왠만한건 그냥 설정된 대로 Next를 해주면 Server connection check를 합니다. User name은 'root'으로 그대로 두고 Password는 아까 설정한 Password를 입력해주시고 'Check'를 클릭하면 위에 상태창에 Connection succeeded라고 메시지가 나옵니다.

 

MySQL Server connection check

MySQL Product Configuration 완료

 

마지막으로 Product Configuration 설정이 완료되고 나고 Next를 누르면 마지막 Finish 창을 볼 수 있습니다. 그럼 설치가 완료 됩니다. 수고하셨습니다 ^^

 


여기까지 서버(Sever) 구성하는데 필요한 도구 A.M.P (Apache, MySQL, PHP) 중 MySQL 설치 방법을 알아보았습니다. 생각보다 하나하나 포스팅이 길어지네요... 다음 포스팅에선 이어서 PHP 설치와 사용방법에 대해 알아보겠습니다.

 



출처: https://it-g-house.tistory.com/entry/아두이노Arduino-홈-IoT사물인터넷을-위한-서버Sever-구성-2-MySQL-PHP-설치방법 [IT-G-House]

'ESP8266 > DB 연결' 카테고리의 다른 글

A.P.M 설치 PHP 설치  (0) 2022.03.25
A.P.M 설치 아파치 설치  (0) 2022.03.25
ESP8266 아두이노 마리아DB Insert 하기  (0) 2022.03.25

그동안 아두이노와 센서의 기본적인 동작법 및 프로그램 코딩은 어느 정도 익숙해졌을 겁니다. 이제 본격적인 프로젝트를 진행하기 전에 인터넷을 통해 데이터 및 신호를 주고받을 수 있어야 아두이노를 원하는 로직(Logic)에 맞게 동작시킬 수 있습니다. 우선 각 종 센서가 측정하는 데이터나 신호를 서버(Sever)로 송신하는 방법을 알아본 뒤 데이터를 분석하고, 적절한 명령신호를 다시 아두이노나 외부기기에 전달하는 방법을 알아보겠습니다.

 


  • 아두이노와 컴퓨터를 직접 연결하는 방법

앞서 USB 케이블을 통한 시리얼 통신(Serial communication)으로 PC에 바로 데이터를 전송하고 저장하는 방법을 알아보았습니다.  

 

아두이노(Arduino) 홈 IoT 입문 - 온습도 센서 데이터 출력/저장 방법

아두이노(Arduino)를 사용하여 온습도 센서(Temperature and Humidity sensor)를 작동하고 센싱한 값을 출력하는 것은 아두이노의 기본적인 사용법을 습득하는데 많은 도움이 됩니다. 저도 온습도 센서로 연습하면..

it-g-house.tistory.com

DHT11 온습도 센서(Temperature and Humidity sensor)로 측정된 온도와 습도 데이터를 PC로 시리얼 통신을 통해 송신하고, 컴퓨터에서 데이터를 받는데 'CoolTerm'이나 'PLX-DAQ' 프로그램을 사용하였습니다. 받은 데이터를 *. txt 파일로 저장하거나 엑셀로 연동하여 실시간 그래프를 그리거나 데이터 분석을 할 수 있었습니다.

 

아두이노(Arduino) 시리얼 통신(Serial communication)으로 PC에 데이터를 저장하는 구성

 

  • 인터넷을 이용한 데이터 송수신 방법

인터넷을 사용하여 웹을 통해 데이터를 송수신하려면 웹서버(Web sever)가 필요합니다. 파이썬(Phython)이나 C언어같은 프로그램 언어로 직접 서버를 만들 수 있으나 프로그램 언어가 능숙하지 않고 서버의 개념이 숙지되지 않은 경우 서버를 구성하는 일은 어렵습니다. 그렇다고 돈을 들여 프로그래머를 고용해서 서버를 만들정도로 고퀄이 필요한 것도 아니죠... 그래서 이렇게 직접 서버를 구성하기 힘든 개인이나 업체들을 위해 많은 기업들이 오픈소스 웹서버 프로그램을 제공하고 있습니다. 정말 고마운 일이죠~ 뮤뮤

 

아두이노(Arduino)로 인터넷(Internet)을 이용한 데이터를 송수신하기 위한 서버(Sever)구성

 

가장 많이 알려진 웹서버 프로그램은 Apache(아파치)입니다. 내컴퓨터에 웹서버를 구축하는 방법으로 Apache, MySQL, PHP 앞글자를 따서 A.M.P라고 많이 들어보셨을 겁니다. 여기서 Apache로 웹서버를 만들고 데이터를 수신할 수 있습니다. 그럼 받은 데이터를 어딘가 쌓아놓고 필요할 때 출력하거나 가공할 수 있어야 하는데.. 그 역할을 하는 게 데이터베이스 서버(DataBase server), DB서버라고 합니다. 역시나 많이 알려진 데이터베이스 프로그램이 MySQL입니다. DB는 크게 RDB, NoSQL 두 종류로 나뉘는데, RDB는 다시 RDBMS (Relational Database Management System: 관계형 데이터베이스)와 ORDBMS (Object-Relational Database Management System: 객체지향 데이터베이스)로 구분됩니다. RDB가 아닌 데이터 베이스가 NoSQL인데 RDB와는 달리 데이터 간 관계를 정의하지 않고 대용량의 데이터를 다루는데 유용해서 최근 빅데이터를 다루는데 적합하다고 합니다. (요즘 핫한 MongoDB가 NoSQL입니다.) 데이터베이스에 관해서는 추후 자세히 공부해 보도록 하겠습니다. 그리고 프로그램 언어 PHP (Professional HyperText Preprocessor)는 서버에서 해석되는 HTML에 내장되어 동작하는 스크립트 언어로 PHP 소프트웨어를 통해 코딩을 할 수 있습니다.

 

 

 


그럼 각각 프로그램을 설치하는 방법을 알아보겠습니다.

 

  • Apache(아파치) 설치방법

Apache는 홈페이지에서 다운로드할 수 있는데 메인 홈페이지가 아닌 https://www.apachelounge.com/download/에서 다운로드할 수 있습니다. 아래 공식 홈페이지에 들어가면 다운로드 받을 수 있는 파일들이 있긴 하지만 저는 쉽게 사용할 수 없는 파일 형태라서 apachelounge.com에서 다운로드하는 걸 추천드립니다.

 

Apache(아파치) 공식 홈페이지 메인 화면

Apache(아파치) 다운로드 페이지

Apache 2.4.41 Win 64 버전으로 다운로드하여서 C드라이버에 압축을 풀고 Apache24\conf 폴더 안에 'httpd.conf' 파일을 메모장으로 열어줍니다. Apache를 정상적으로 운영하기 위해 'httpd.conf' 파일을 SeverRoot, SeverName 등을 수정하는 과정이 필요합니다. (꼭 메모장이 아니더라도 수정할 수 있으면 됩니다.)

Apache(아파치) SeverRoot 설치폴더 확인

메모장에서 조금 아래 ServerRoot 부분에서 파일 압축을 푼 폴더가 "c:/Apache24"와 같은지를 확인합니다. 만약 다른 곳에 압축을 푸셨으면 폴더 경로를 수정해주시면 됩니다. 저도 아래와 같이 수정하였습니다. 여기서 주의할 점은 하위 폴더 표시를 '/'로 사용해야 합니다.

 

꽤나 더 아랫부분에 SeverName에 관한 내용이 있습니다. 여기서 '#SeverName www.example.com:80'을 '#'은 지우고 'ServerName loacalhost:80'로 수정합니다. (또는 'ServerName 127.0.0.1:80'이라고 바꿔줘도 됩니다.)

 

Apache(아파치) ServerName 변경

 

그리고 명령 프롬프트를 열어서 Apache24 폴더로 찾아가서 bin폴더에서 'httpd.exe -k install'이라고 명령어를 치면 Apache가 설치됩니다.

 

일단 설치가 진행되고 나면 윈도우 '서비스' 창에서 아래와 같이 Apache2.4가 설치된 것을 확인할 수 있습니다. 아직은 실행상태는 아닌데 다시 명령 프롬프트에서 'httpd.exe -k start'라고 입력해주시면 아래와 같이 '실행 중'이라고 표시되고 Apache가 실행된 상태입니다. (윈도우 검색창에서 '서비스'라고 입력하면 서비스 창을 실행할 수 있습니다.)

 

 

 

 

Apache를 멈추고 싶으면 'httpd.exe -k stop'을 입력하면 됩니다. 저는 명령 프롬프트가 아무래도 익숙하지 않아서 또 다른 방법을 사용하고 있습니다. 'bin'폴더 안에 'ApacheMonitor'를 실행하면 윈도우 실행창에 ApacheMonitor 아이콘이 생깁니다. 

 

ApacheMonitor

ApacheMonitor 실행

ApacheMonitor 실행

여기서 간단하게 Apache를 실행하고 정지할 수 있습니다. 아.. 진작에 이렇게 할걸...;; 죄송합니다... 그럼 Apache가 정상적으로 작동하는지 확인하기 위해 Apache를 Start 하고 웹브라우저에서 http://loacalhost라고 주소를 입력하면 아래와 같이 "It works!"라고 메시지가 나오면 정상적으로 작동하고 있는 겁니다. 와우~!! 혹시 앞에서 ServerName을 127.0.0.1:80라고 수정했으면 http://127.0.0.1라고 입력하면 됩니다.

 

Apache 정상 작동시 (http://localhost)

Apache 정상 작동시 (http://127.0.0.1)


여기까지 아두이노(Arduino)의 데이터를 웹서버를 통해 송수신하기 위한 서버(Server)의 구성과 함께 A.M.P (Apache, MySQL, PHP) 중 Apache를 실행하는 방법을 알아보았습니다. 이어서 MySQL 설치방법은 다음 포스팅으로 이어가겠습니다. 아래 링크 따라가시면 되요~ ^^

 

 

아두이노(Arduino) 홈 IoT(사물인터넷)을 위한 서버(Sever) 구성 2: MySQL 설치방법

지난 포스팅에서 아두이노 서버 구성에 대해 알아보았고 필요한 도구(Tool)로 A.M.P (Apache, MySQL, PHP) 중 Apache(아파치)를 설치하는 방법에 대해 알아보았습니다. 이어서 MySQL 설치 방법을 알아보겠습니다...

it-g-house.tistory.com

개념 정리가 조금 미흡할 수 있지만 나름 쉽게 이해하려고 한 부분을 전달하려고 노력하였습니다. 고수분들은 혹시 수정사항이나 좀 이상한 부분 있으면 언제든지 첨언 부탁드리며, 좋은 의견 댓글로 부탁드립니다.



출처: https://it-g-house.tistory.com/entry/아두이노Arduino-홈-IoT사물인터넷을-위한-서버Sever-구성 [IT-G-House]

'ESP8266 > DB 연결' 카테고리의 다른 글

A.P.M 설치 PHP 설치  (0) 2022.03.25
A.P.M 설치 mysql 설치  (0) 2022.03.25
ESP8266 아두이노 마리아DB Insert 하기  (0) 2022.03.25

아두이노 호환 보드의 MariaDB 사용 방법입니다.

마리아DB가 MySQL과 매우 유사하다보니 같은 Connector를 사용하더라도 접근 가능합니다.

 

초기 설정해야할 부분이 존재합니다.

 

Arduino ide의 메뉴 > Sketch >Include Library > Manage Libraries 를 클릭해주세요.

 

 

 

저는 이미 설치해서 Install 버튼이 보이지 않지만, 초기 설정시에 mysql을 검색하게되면 install 버튼이 보이니 클릭해주세요.

 

 

 

이제 코드를 보겠습니다.

 

/*
  MySQL Connector/Arduino Example : connect by wifi

  This example demonstrates how to connect to a MySQL server from an
  Arduino using an Arduino-compatible Wifi shield. Note that "compatible"
  means it must conform to the Ethernet class library or be a derivative
  thereof. See the documentation located in the /docs folder for more
  details.

  INSTRUCTIONS FOR USE

  1) Change the address of the server to the IP address of the MySQL server
  2) Change the user and password to a valid MySQL user and password
  3) Change the SSID and pass to match your WiFi network
  4) Connect a USB cable to your Arduino
  5) Select the correct board and port
  6) Compile and upload the sketch to your Arduino
  7) Once uploaded, open Serial Monitor (use 115200 speed) and observe

  If you do not see messages indicating you have a connection, refer to the
  manual for troubleshooting tips. The most common issues are the server is
  not accessible from the network or the user name and password is incorrect.

  Note: The MAC address can be anything so long as it is unique on your network.

  Created by: Dr. Charles A. Bell
*/
#include <ESP8266WiFi.h>  // Use this for WiFi instead of Ethernet.h
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>

byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress server_addr(172,30,1,30);  // IP of the MySQL *server* here
char user[] = "tester";              // MySQL user login username
char password[] = "1111";        // MySQL user login password

// WiFi card example
char ssid[] = "HOLLYSCOFFEE 2.4G";    // your SSID
char pass[] = "hollys2000";       // your SSID Password
char INSERT_SQL[] = "INSERT INTO arduino.info (number, tick) VALUES ('123','hello')";
WiFiClient client;            // Use this for WiFi instead of EthernetClient
MySQL_Connection conn((Client *)&client);

void setup() {
  Serial.begin(9600);
  while (!Serial); // wait for serial port to connect. Needed for Leonardo only

  // Begin WiFi section
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, pass);
  while( WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // print out info about the connection:
 
    Serial.println("Connected to network");
    Serial.print("My IP address is: ");
    Serial.println(WiFi.localIP());
  
  // End WiFi section

  Serial.println("Connecting...");
  if (conn.connect(server_addr, 3306, user, password)) {
    delay(1000);
    MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
    cur_mem->execute(INSERT_SQL);
    delete cur_mem;
  }
  else
    Serial.println("Connection failed.");
  conn.close();
}

void loop() {
}

 

변수만 변경해주면 바로 사용할 수 있습니다.

server_addr = 서버의 IP 주소

user[] = DB 계정 ID

password = DB 계정 Password

 

ssid = 와이파이 이름

pass = 와이파이 비밀번호

IINSERT_SQL = 보내고자하는 SQL문

 

conn.connect 의 매개변수는 (서버주소, 포트번호, 계정ID, 계정 비밀번호) 순서로 구성되어있습니다.

'ESP8266 > DB 연결' 카테고리의 다른 글

A.P.M 설치 PHP 설치  (0) 2022.03.25
A.P.M 설치 mysql 설치  (0) 2022.03.25
A.P.M 설치 아파치 설치  (0) 2022.03.25

+ Recent posts