반응형

네이티브 앱

통화, 카메라, 진동, GPS 등 모바일기기에서 지원하는 고유기능들을 사용가능하며, OS에서 제공되는 모든API에 액세스할 수 있습니다.

OS제조사에서 제공하는 개발언어와 툴을 사용하며 UI 등 앱제작에 필요한 다양한 요소가 패키지화 되어있고, 편리한 개발툴 제공 및 라이브러리나 함수들이 내장되어있어 개발이 편리합니다.

네이티브 앱은 성능과 디바이스의 액세스 가용성이 높아 고성능의 어플리케이션 개발시에 유리합니다.

인터넷이 사용 가능하지 않은 환경에서도 일부 기능을 작동할 수 있습니다.

하지만 모바일 OS에서 제공하는 언어, 툴 등이 달라 해당언어와 툴에 전문적인 지식이 필요하며, 높은 비용과 많은 시간이 걸리는 단점이 있습니다.

배포는 앱스토어, 플레이스토어 등에서 다운로드받거나 패키지로 직접 설치할수 있습니다.


OS의 종류로는 ios, android, 블랙베리 os, window 등이 있습니다.


각 스토어, 패키지, 언어, 툴 등은 다음과 같습니다.


 

 스토어

 패키지 

 언어 

 툴 

 ios

 App Store

 .app

 Object-C, C, C++

 Xcode

 android

 Play Store

 .apk

 JAVA, C, C++

 android SDK

 블랙베리 os

 Blackberry App world

 .cod

 JAVA

 BB JACA EELIPSE 플러그인

 window

 Window Phone MarketPlace

 .xap

 C#, VB.NET

 비쥬얼 스튜디오, window 개발툴




모바일 웹 앱

모바일 웹의 특징을 가지면서도 네이티브앱의 특징도 가지고 있는 웹을 기반으로한 앱입니다.

통화, 카메라, 진동, GPS 등 모바일기기에서 지원하는 고유기능들을 사용이 불가능합니다.

실행 속도는 빠르지만 인터넷 접속 속도에 영향을 받으며, 인터넷 사용이 안되는 환경에서 사용할 수 없습니다.

웹 방식은 네이티브앱과 하이브리앱보다는 간단하며 비용이 적게 들지만 웹기반이라 기능상으로 많은 제한이 있는 단점이 있습니다.

 



하이브리드 앱

하이브리드 방식은 위 두방식을 합친 것으로, 여러 OS를 한 번에 지원해야 할 경우 선호되는 방식입니다

모바일 기기에서 지원하는 고유정보를 이용가능하며, 배포 또한 앱스토어나 마켓에서 다운로드받아 설치 가능합니다.

네이티브앱 안에 웹뷰 기능을 통해 웹을 얹어서 화면을 구성하며 , 현재 개발툴로 하이브리드 앱 프레임워크 Ionic, Famo.us 등을 사용하여 더 편하게 앱을 만들수도 있습니다.

중요한 화면은 웹으로 구성되기 때문에 개발기간이 상대적으로 적게 걸리고, 개발 비용 또한 상대적으로 적은 편입니다.



반응형

'IT' 카테고리의 다른 글

IT 계층구조  (0) 2018.01.25
css - 긴글 자동 줄바꿈  (0) 2018.01.12
JSP / 자바스크립트 / 자바 데이터 및 함수호출  (0) 2017.11.10
[JAVA/JS/JSP] 문자와 숫자 길이 구하기 - length  (0) 2017.11.08
ERD 표기방법  (0) 2017.09.29
반응형

가로수길을 둘러보고, 좀 쉬려고 카페를 가려고 찾아보는데 

여자친구가  mula 뮬라라는 카페를 가자해서 가게됬습니다. 

무려 루프탑 카페입니다.







골목에서 딱 정면에서 찍은 샷입니다.

지도보고 찾아가는데 골목으로 들어가는 길을 못찾아서 한바퀴 돌았습니다.


생각보다 보이진 않지만 찾기 쉬운곳에 있습니다.

가로수길 골목으로 들어가다보면 작은표지판? 간판이 보이는데 이걸안찍었네요! 이런..








엄청 입구가 깔끔하게 잘되있습니다. 

mula라는 간판이 엄청 깔끔하게 이쁘네요.

루프탑 옥상도 살짝 보입니다.







주말이라 사람은 엄청 많았습니다.

들어가자마자 바로 앞쪽에 카운터와 메뉴판이 있습니다.

주변이 엄청 깨끗하고 깔끔합니다.







메뉴판에 메뉴가 엄청많습니다.

저희는 수제연유라떼와 녹차라떼 2잔을 주문했습니다.

주문줄을 서면서 둘러봤는데 


주변 테이블마다 티라미슈가 있어서 먹어보고 싶었지만 

배가 너무 부른관계로.. 따로 주문하진 않았습니다.

티라미슈 맛집인거 같습니다.







주문을 하고 둘러보는데 

운동복?과 운동과 관련된 용품들이 진열되있었습니다.

남자꺼는 없어서 구경은 안했습니다. 

파는지도 모르겠습니다.







2층 루프탑이 메인이라 올라갔는데 자리는 없었습니다....

테이블은 많지는 않습니다.


이쁠것 같았지만 자리도 없고 기다리기도 애매해서 밖에는 나가지 않았습니다.

의자가 2개있는데 대기용일지도 모르겠습니다.







내려가면서 1층을 전체가 보일만큼 찍었습니다.

테이블이 많아보이는 것처럼 많습니다.


테이블이 꽤 있긴한데 자리도 없고

시끄러운편이여서 밖으로 나갔습니다. 


밖은 그나마 선선해서 괜찮았는데 

더우면 안쪽이 더 좋을거 같습니다. 


해도 떠있어서 눈부시고 테이블은 낮아서 조금 불편했습니다.

그래도 좋았습니다.







음료가 나와서 받는데 금색쟁반 이쁘긴한데 꽤 무겁습니다.

서빙을 오래해서 쟁반은 자신있었는데 무거워서 두손으로 들고왔습니다.







한장찍긴 아쉬워서 한장 더 찍었습니다.

음료는 엄청 달달하고 맛있어서 제가 거의 다먹었습니다.


전체적으로 깔끔하면서 분위기는 좋습니다. 

루프탑에 앉으면 더욱 좋을거 같지만 자리잡기는 쉽지 않을거 같습니다.


밤엔 찾기 어려울수도 있을거 같습니다.

영업시간은 10:00 ~ 22:00 라고하니 참고하시면 좋을 것 같습니다.

가로수길 걸으면서 구경하다가 쉬기 딱좋은 mula 카페 후기였습니다.





반응형
반응형


SELECT문


조건식

SELECT [* | DISTINCT] 컬럼

FROM TABLE명

[ WHERE 조건 ]

[ GROUP BY 컬럼 ]

[ HAVING 검색조건 ]

[ ORDER BY 컬럼 [ ASC | DESC ] 


데이터 처리순서

1. FROM

2. ON

3. JOIN

4. WHERE

5. GROUP BY

6. WITH CUBE 또는 WITH ROLLUP

7. HAVING

8. SELECT

9. DISTINCT

10. ORDER BY

11. TOP


*기본

SELECT * FROM TABLE명;  // TABLE명에 있는 모든 컬럼의 데이터를 찾는다.

SELECT 컬럼1, 컬럼2, 컬럼3 FROM TABLE명 // TABLE의 컬럼1, 컬럼2, 컬럼3의 데이터를 찾음

SELECT 컬럼1 AS 별칭 FROM TABLE명 // 컬럼1 AS 별칭 데이터를 뽑을때 컬럼1의 컬럼명이 별칭으로 바뀜


*집계 함수(숫자 데이터)

SUM() // 컬럼 데이터의 합

AVG() // 컬럼 데이터의 평균

COUNT() // 컬럼의 데이터 갯수

MAX() // 컬럼 데이터의 MAX값

NIN() // 컬럼 데이터의 MIN값


EX) SELECT SUM(컬럼1) FROM TABLE명 // 컬럼1의 모든데이터의 합을 가져옴.


*수치함수(숫자 데이터)

ROUND(데이터, 반올림위치) //반올림 및 자릿수

ABS() // 절대값

SIGN() // 부호

SQRT() // 제곱근

POWER(데이터, n) // n승


*문자열 함수(문자 데이터)

Ascii() // 문자열의 제일 왼쪽 문자의 아스키 코드 값을 반환(Integer형)

Char() // 정수 아스키 코드를 문자로 반환(Char형)

Charindex(찾을문자, 데이터, 찾을시작위치) // 문자열에서 지정한 식의 위치를 반환

Left() // 문자열에서 왼쪽에서부터 지정한 수만큼의 문자를 반환

Len() // 문자열의 길이 반환

Lower() // 대문자를 소문자로 반환

Ltrim() // 문자열의 왼쪽 공백 제거

Nchar()  // 지정한 정수 코드의 유니코드 문자 반환

Replace(데이터, 바꾸고싶은문자, 바꿀문자) -  문자열에서 바꾸고 싶은 문자 다른 문자로 변환

Replicate() // 문자식을 지정한 횟수만큼 반복

Reverse() // 문자열을 역순으로 출력

Right(데이터, 지정수) // 문자열의 오른쪽에서 부터 지정한 수 만큼 반환(Left() 와 비슷 )

Rtrim() // 문자열의 오른쪽 공백 제거

Space() // 지정한 수만큼의 공백 문자 반환

Substring(데이터,가져올자릿수, 길이) // 문자,이진,텍스트 또는 이미지 식의 일부를 반환

Unicode() // 식에 있는 첫번째 문자의 유니코드 정수 값을 반환

Upper() // 소문자를 대문자로 반환

Isnumeric() // 해당 문자열이 숫자형이면 1 아니면 0을 반환

Isdate() // 해당 문자열이 Datetime이면 1 아니면 0


WHERE 조건

SELECT * FROM TABLE명 WHERE 컬럼1=1; // 모든 컬럼의 데이터에서 컬럼1의 데이터가 1인 모든 컬럼의 데이터 값을 찾음


조건 함수

IS NULL // 데이터가 NULL인 값 가져오기 

BETWEEN A AND B // A와 B사이에 있는걸 가져옴

LIKE a% // a로 시작되는

LIKE %a% // a를 포함하는

LIKE a% // a로 끝나는

LIKE a_ // a로 시작하는 2자리

LIKE a___ // a로 시작하는 4자리

LIKE __a // a로 끝나는 3자리  

컬럼 IN (a, b) // 컬럼이 a이거나 b인 데이터 가져오기


SELECT DISTINCT 컬럼 FROM TABLE명 // 중복되지 않는 데이터만 가져옴

SELECT TOP n * FROM TABLE명 // 상위 n개의 데이터만 가져오기


ORDER BY 컬럼1 ASC  // 컬럼1 기준으로 오름차순

ORDER BY 컬럼1 DESC // 컬럼1 기준으로 내림차순



※HAVING이나 빠진부분은 추후 업데이트하겠습니다.


반응형
반응형

형변환 + 데이터 포맷


import { DatePipe } from '@angular/common';


var datePipe = new DatePipe("en-US");

var date2 = datePipe.transform(new Date(), 'yyyyMMddHHmm'); // 현재 시간 가져와서 date포맷

var result= Number.parseInt(date2); // date를 int로 형변환 


1. y represents year. 

2. M represents month. 

3. d represents day. 

4. E represents week day. 

5. h represents hour(12). 

6. H represents hour(24). 

7. m represents minute. 

8. s represents seconds. 

9. z represents timezone. 





Timer


import { Observable } from 'rxjs/Observable';


 this.data = new Observable(observer => {

  setTimeout(() => {

},1000); // 1초에 실행됨


setTimeout(() => {


observer.complete();


        },15000); // 15초에 실행됨.

       });





Date Number타입변환


*Date는 Number로 변환해서 시간연산가능


var nowTime = Number(new Date());

반응형
반응형

ERD표기 방법과 해석







은 하나의 로 구성되어 있다.




은 하나 이상의 로 구성되어 있다.




은 하나 이하의 로 구성되어 있다.




은 0 또는 하나 이상의 로 구성되어 있다.





ERD란



반응형
반응형

id, class, name으로 접근


$("#id") // id는 1개만가능

$(".class") // class는 중복가능

$("tag_name[name=name]") // 



값 가져오기 및 값변경하기


.val();  // 값을 가져올때나 변경할때

.text(); // text만 가져오거나 변경

.html(); // text+html태그 가져오거나 변경


.empty(); // 값 비우기 .val("");랑 비슷하다고 보면됩니다.

.remove(); // tag까지 제거



포커스


.focus(); // focus 줄때

.blur(); // focus 벗어날때



클릭


.click(); // click 이벤트



마우스이벤트


.mouseenter(); // 마우스on 이벤트

.mouseleave(); // 마우스out 이벤트

.hover(); // 마우스오버이벤트



애니메이션


.fadeIn() // 애니메이션 서서히 생기는 (값안에 시간 or slow fast입력시 속도조절가능)

.fadeOut() // 서서히 사라지는

.slideUp() // 위로 사라짐 시간조절 가능

.slideDown() // 아래로 나타남


animate({},시간값);

animate({},function(){}); // 애니메이션이 끝나고 함수안에 또 애니메이션을 넣을수있음



클래스 css


.addClass('추가할 클래스 이름')

.removeClass('제거할 클래스 이름');


.attr('속성','속성값'); // src="", alt="", title="" 값 변경


.css('css속성','값'); // float, display, width, height, color, background, margin, padding 등 여러 속성 제어가능 



태그


.hide(); // 숨기기

.show(); // 나타내기


대상1.append(대상2); // 대상1 태그안에 대상2 태그를 넣을수있음

대상2.appendTo(대상1); // 대상1 태그안에 대상2 태그를 넣을수있음


text창 활성화 비활성화

$("input").prop('disabled', true); // 비활성화

$("input").prop('disabled', false);  // 활성화

반응형

'IT > Jquery' 카테고리의 다른 글

Jquery 사용하기  (0) 2017.09.28
반응형

Jquery 사용하기


제이쿼리란?

jQuery는 HTML 속 클라이언트 사이드 스크립트 언어를 단순화 하도록 설계된 브라우저 호환성이 있는 JavaScript 라이브러리입니다. 존 레식에 의해, 2006년 뉴욕 시 바캠프(Barcamp NYC)에서 공식적으로 소개되었습니다. 현재 가장 인기있는 JavaScript 라이브러리이며 표준에 가까운 점유율을 자랑합니다.

기능적으로야 더 좋은 라이브러리들도 많지만, jQuery가 순식간에 업계를 장악한 특장점은 바로 무지하게 쉽고 간편하다는 점입니다. 

비프로그래머인 웹디자이너들도 어렵지않게 이해할 수 있을 만큼 쉬운 편이며, DOM구조와 CSS에 대한 지식만 있다면 애니메이션 같은 건 바로 이해가 가능할정도입니다.


제이쿼리 다운로드

제이쿼리를 사용하기 위해서는 js파일을 다운로드 받아서  직접 import해주거나 url로 import해주시면 됩니다.

https://jquery.com/download/ 

위에서 다운로드 받을 수 있습니다.


import하기

다운로드를 받으셨다면 프로젝트 폴더에 넣어주시고 경로에 맞게 작성해주시면 됩니다.


<script src="/js/jquery-1.12.4.js"></script>


다운로드 없이 사용하시려면 아래를 입력해주시면 됩니다.


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 

반응형

'IT > Jquery' 카테고리의 다른 글

Jquery 기본적인 명령어 및 이벤트  (0) 2017.09.29
반응형

Yasca

2007Michael이 개발하였으며, 소스코드에 대한 보안 취약점 점검과 품질향상을 위한 오픈소스이며 시큐어 코딩 점검 툴입니다.

yasca 지원언어 Java, C/C++, ASP, PHP 등 다양한 언어를 지원하고있습니다.

 

 

yasca 다운로드

https://sourceforge.net/projects/yasca/files/Yasca%202.x/Yasca%202.2/

URL에서 다운로드 받을 수 있으며, 저는 yasca-core-2.21.zip을 다운로드받았습니다.

 

원하는 경로에 압축을 풀고 실행 및 실행확인

원하는 경로에 압축을 풀어주시고 cmd창에서 해당경로로 이동합니다.

해당경로에서 yasca를 입력하시면 yasca와 관련된 정보들이 출력되면 성공한 것입니다.

 

yasca를 이용한 소스코드분석

yasca px jlint,Lint4j [검사 할 소스코드 경로]

yasca -px jlint,Lint4j D:\프로젝트경로

cmd창에서 위와 같이 입력해주시면 해당 소스를 점검해줍니다.

 

결과생성

위에까지 진행하셨다면 분석이 완료되면 cmd창에서 맨마지막줄에 아래와 같이 경로와 완료된 html파일명이 표시됩니다.

WARN Results have been written to C:\Users\Yasca\Yasca-Report-날짜.html

해당 폴더로가서 html파일을 실행해주시면 됩니다.

그러면 아래 사진과 같은 화면이 나옵니다.


 맨 우측은 해당하는 소스가 나오고 그 좌측에 네모버튼의 의미는 아래와 같고 누르시면 확인하실 수 있습니다.


회색 : 취약점 번호에 검토결과 취약점 아님라는 의미의 라인표시

- 붉은색 : 검사 소스코드에서 발견된 취약점 설명

- 파란색 : 취약점이 발견된 소스코드의 위치 확인 

반응형

'IT > 보안' 카테고리의 다른 글

SQL인젝션  (0) 2017.09.28
Naver lucy-xss-servlet-filter 적용하기  (0) 2017.09.27
XSS정의 / XSS공격 / XSS방어  (0) 2017.09.27
web 어플리케이션 공격기법의 종류  (0) 2017.09.27
반응형

SQL인젝션이란?

웹 애플리케이션 사용자의 입력 값에 필터링이 제대로 적용돼 있지 않을 때 발생합니다. 공격자는 사용자의 입력 값을 조작해 개발자가 의도치 않은 SQL문을 실행하게 만들어 데이터베이스를 공격하는 것을 SQL인젝션이라고 합니다.

 

SQL이란?

SQL은 데이터베이스(DB)를 만들고 유지하는 데 사용하는 프로그래밍 언어 중 하나입니다. DB를 구축하고 조작하기 위해 사용하는 일종의 명령어인 셈입니다. SQL을 이용하면 데이터를 정의, 조작, 제어할 수 있습니다.

 

SQL인젝션의 2가지공격인 에러 기반 공격과 블라인드 공격

에러 기반 공격은 해커가 검사하지 않은 입력값을 발견하고, 이를 악용할 때 발생하는 공격이다. 검사 입력값은 입력한 데이터 중에서 불필요한 부분을 제거하는데, 해커는 잘못된 정보를 입력하고 피드백을 기다리기만 하면 그 정보를 가로채는 방식입니다.

 

블라인드 공격은 에러 기반 공격과 달리 DB 서버 에러 메시지를 이용하지 않고 바로 DB를 공격한다. 에러 메시지가 정보가 아무런 도움이 되지 않을 때 사용한다. 대표적인 기술로는 시간 지연 공격이 있다. 간단하게 몇 초 정도의 time for delay 를 이용해 원하는 시간 만큼 데이터베이스가 움직여 준다면 취약하다고 볼 수 있습니다.

이 공격은 DB 취약점을 노리고 공격하는 기법보다 성공하기 어렵긴 하지만, 꾸준히 발생하는 공격 중 하나입니다.

 

SQL 인젝션 공격

로그인 폼에 아이디와 비밀번호를 입력하면 입력한 값이 서버로 넘어가고, 데이터베이스를 조회하여 정보가 있다면 로그인에 성공하게 됩니다. 이때 데이터베이스에 값을 조회하기 위해 사용되는 SQL문이 아래와 같을때

 

SELECT user FROM user_info WHERE id='입력한 아이디' AND pw='입력한 비밀번호';

 

보통 사용자라면 아이디와 비밀번호를 입력하고 거기에 해당하는 정보가 DB에 있다면 로그인이 될 것이고 아니면 아이디나 비밀번호가 틀렸다는 메시지를 받을 것입니다.

하지만 여기서 SQL인젝션 공격을 한다면 아래와 같이

 

SELECT user FROM user_info WHERE id='입력한 아이디' AND pw=' ' OR '1' = '1';

 

비밀번호 입력란에 ' OR '1' = '1 입력해서 pw의 값을 무효화 시켜 로그인이 성공하게 만들어 버립니다.

로그인 폼도 결국엔 서버에 요청을 해서 받는 것입니다. http헤더를 보면 응답 헤더에 서버의 종류와 버전이 나온다. Apache서버는 mysql서버,iisms-sql같은 방식으로 데이터베이스의 종류를 추측할 수 있습니다. DB엔진을 알아내서 해당 시스템에 맞는 명령어를 이용해 데이터를 뽑아내거나 할수 있습니다.

 

방어법

아마도 XSS와 상당부분 겹치겠지만 기본적으로 유저에게 받은 값을 직접 SQL로 넘기면 안 됩니다. 요즘에 쓰이는 거의 모든 데이터베이스 엔진은 유저 입력이 의도치 않은 동작을 하는 걸 방지하는 escape 함수와 prepared statement를 제공하는데 이것을 사용합니다. (prepared statement 자체 내에 escape가 내장돼서 한 겹 감싸진 형태)

또한 DB에 유저별로 접근 권한과 사용 가능한 명령어를 설정하면 최악의 경우에 SQL injection에 성공하였다고 하더라도 그나마 피해를 최소화 할 수 있습니다. 혹자는 SQL injection은 데이터베이스 스키마를 알아야 가능한 공격기법이라고 하지만 그 스키마 자체를 SQL injection으로 알아낼 수가 있습니다. 그리고 데이터베이스를 변조하려는 게 아니라 파괴하려는 거라면 와일드카드를 사용해서 그냥 싹 다 지워버리는 공격이 가능합니다.

DB엔진별로 문법이 다 다르기 때문에 개발자가 그걸 다 고려해서 코딩하는 방법은 매우 비추천 됩니다. 엔진에서 제공하는 prepared statement를 사용하는 게 최선. escape_string같은 함수를 사용하면 몇몇 군데에서 빼먹거나 하는 실수로 보안 구멍이 생길 수 있다. 그리고 prepared statement는 사용 전에 일부 컴파일 되서 DB쿼리를 가속시켜주므로 적극적으로 사용하자. 다만 컴파일하는 시간이 있다 보니 변수만 다른 같은 쿼리를 반복적으로 하는 작업에서야 유의미한 속도 향상이 있습니다.

추천되는 방어법은 클라이언트측 자바스크립트로 폼 입력값을 한 번 검증하고(이때의 폼 검증은 사용자에게 인젝션관련 특수문자 사용을 불가능하다고 알리는 용도로 방어방법과는 관련이 없다는 걸 유의), 서버측은 클라이언트측 필터가 없다고 가정하고(공격자가 자바스크립트를 꺼버리거나 폼 페이지를 다운받아 마개조하면 그만) 한번 더 입력 값을 필터링합니다. 이때 정규표현식으로 필터링하는게 가장 강력하고 좋습니다. 그 다음 SQL 쿼리로 넘길 때 해당 파라미터를 prepared statement로 입력한다. 다음, 쿼리의 출력값을 한번 더 필터링하고(XSS 공격 방어의 목적이 강하다) 유저에게 전송합니다. 이렇게 하면 해당 폼에 대해서는 SQL injection공격이 완전히 차단됩니다. 물론 이것이 공격 기법의 전부가 아니므로(스푸핑이나 맨 인 미들 공격, 키 로거 등등) 정보 유출에 민감한 사이트를 운영할 생각이라면 보안 회사에 컨설팅을 꼭 받는게 좋을 것 같습니다.



-나무위키 SQL인젝션, google검색 참조

반응형

'IT > 보안' 카테고리의 다른 글

Yasca 설치 및 사용법  (0) 2017.09.28
Naver lucy-xss-servlet-filter 적용하기  (0) 2017.09.27
XSS정의 / XSS공격 / XSS방어  (0) 2017.09.27
web 어플리케이션 공격기법의 종류  (0) 2017.09.27
반응형

아파치 설치


1.Apache 24 설치 

OS환경과 bit에 맞는걸로 설치하시면 됩니다.

https://www.apachelounge.com/download/



2.C++ Redistributable Visual Studio 2015 설치

아파치에서 C++ Redistributable Visual Studio 2015 설치가 없으면 VCRUNTIME140.dll 에러가 날수도 있어서 필요하다고 합니다.

비트에 맞게 설치해주세요.

https://www.microsoft.com/ko-kr/download/details.aspx?id=53840


3. 다운로드한 Apache24 폴더만 원하는 곳(D:Apache24)에 풀어줍니다.


4. D:Apache24\conf 폴더에 httpd.conf 파일 수정

  - ServerRoot 경로 변경

   ServerRoot "c:/Apache24" 로 기본설정되있는데 3번에서 설정해준 경로로 맞춰줍니다.


  - 포트 변경

    Listen 80 으로 기본설정되있는데 포트가 겹치거나 바꾸고싶다면 

    Listen 원하는port로 변경해줍니다.


  - 웹문서 저장위치 변경

    c:/Apache24/로 되있는거를 내환경에 맞게 변경해줍니다. (D:/Apache24/) 


  - ServerName 변경

    #ServerName www.example.com:80 을 찾아서 #을 제거하고 (#은 주석을 의미합니다.)

    ServerName localhost:80 (포트가 다르다면 해당포트를 입력해주세요.)


5.내 컴퓨터에 환경변수에서 Path 등록

환경변수에가서 D:\Apache24\bin 을 등록해줍니다.


6. cmd 관리자권한으로 실행


설치

httpd -k install -n testPhp

시작

httpd -k start -n testPhp

제거

httpd.exe -k uninstall -n testPhp


7. it work! 가뜨면 성공한 겁니다.





php설치


1.php zip파일 다운


2.php.ini 환경설정파일 수정


; extension_dir = "./" 이렇게 되있는부분을 (php는 ;가 주석을 의미합니다.)

extension_dir = "D:\PHP\ext\"


경로에 맞춰 수정하고 저장합니다.


3. Apache24와 php연동

아파치 Apache24/conf 폴더의 httpd.conf를 수정해야합니다.


<IfModule dir_module>

    DirectoryIndex index.php index.html

</IfModule>


위에부분에 index.php를 추가한것입니다.


그리고 맨아래부분에


<IfModule ssl_module>

SSLRandomSeed startup builtin

SSLRandomSeed connect builtin

</IfModule>


PHPIniDir "C:/Windows"

LoadModule php7_module "D:/PHP/php7apache2_4.dll"

AddType application/x-httpd-php .html .php


를 추가해줍니다.

아래부분의 경로부분은 맞춰줍니다.

PHPIniDir 경우는 php.ini 파일의 위치를 적어주면 됩니다.


4. apache24\htdocs 폴더로 접속해서 메모장으로 phpinfo.php를 생성


안에

<?php

phpinfo();

?>

를 입력해줍니다. ( phpinfo() 함수는 php정보를 출력해줍니다. )


5. 웹브라우저 주소창에 http://localhost/phpinfo.php 입력


php 7.0의 정보가나오면 성공!


mysql 연동


1.설치 후 폴더확인

저같은 경우는

D:\Program Files\MySQL\MySQL Server 5.6

이폴더에 가시면 my.ini가 있습니다.


2.my.ini수정

# basedir = ....

# datadir = ....

# port = ....

이부분에서 #(주석처리)를 지워주고 아래처럼 경로를 입력해줍니다. (\말고 /입력)


basedir = D:/Program Files/MySQL/MySQL Server 5.6

datadir = D:/Program Files/MySQL/MySQL Server 5.6/data

port = 3306

으로 수정해줍니다.


3.php.ini에서 아래 주석을 풀어줍니다. (;가 주석)

extension=php_mysqli.dll

extension=php_pdo_mysql.dll


4.mysqltest.php 생성


<?php

echo "MySql 연결 테스트<br>";

$db = mysqli_connect("localhost", "root", "비밀번호", "db명");

if($db){echo "연결되었습니다.<br>";}

else{echo "연결에 실패하셨습니다.<br>";}

$result = mysqli_query($db, 'SELECT VERSION() as VERSION');

$data = mysqli_fetch_assoc($result);

echo $data['VERSION'];

?>


작성후 확인하시면 됩니다. 성공하면 성공이라고 뜹니다!

반응형

+ Recent posts