반응형

리눅스의 hosts 파일을 수정하는 곳

 

호스트파일은 OS 가 hostname 을 IP 주소에 mapping 시킬 때 사용하는 컴퓨터의 파일입니다.

 

일반적으로 우리가 알고있는 www.google.com 을 브라우저에 입력하면 구글 홈페이지로 접속되지만

 

이건 Domain Name Server 를 통해 접속한 것이고

 

실제로는 142.250.76.132 과 같은 IP 로 접속하게 됩니다.

 

확인하는 방법은 nslookup 을 통해서 확인할 수 있습니다.

 

 

 

그럼 hosts 파일은 어디에 있을까요?

 

리눅스 기준으로는 etc 폴더 밑에 hosts 파일이 있습니다.

 

편집은 간단하게 vi 편집기를 이용하면 되지요!

vi /etc/hosts

vi 편집기를 통해서 hosts 파일을 들어오면 아래와 같은 내용을 확인해볼 수 있습니다.

 

 

 

 

domain.com 은 제가 입력한 도메인 주소입니다.

 

입력하는 방식은 위와 같이 아주 간단합니다.

 

IP주소 + (공백) + 도메인이름

 

위와 같이 적용하면 끝!

 

 

hosts 파일을 변경하면 서버에서 해당 파일을 우선적으로 참고하여 DNS 를 IP 주소로 변경하여 접속하게 해줍니다.

 

그럼 좋은하루 되세요 :)

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

리눅스 find 하위 디렉토리 검색

 

리눅스는 파일 시스템을 사용하다보니 파일을 검색할 일이 많습니다.

 

매일 사용하는 명령어 이거나 가끔 사용하더라도 중요한 키워드는 잘 기억나기 마련인데

 

이상하게 find 명령어는 잘 기억이 안나더랍니다.

 

그래서 이번에 한번 정리하고 넘어가야 할 것 같아서 find 명령어를 정리하고 넘어가려고 합니다.

 

find 명령어는 일반적으로 파일을 찾는 용도로 사용을 하지요

 

파일을 찾는 이유가 무엇인가요?

 

이 파일이 어디있는지 모르니깐 검색하는 거겠죠?

 

그렇다면 당연 하위폴더까지 검색하는 것을 원할텐데 본론으로 들어가보겠습니다.

 

find . -name 찾을이름

 

일단 가장 간단하게 위와 같이 사용을 하면 가장 편합니다.

 

예시를 보여드릴께요

 

제가 사용하고 있는 서버의 아파치 폴더입니다.

 

/apache/httpd24 위치에서 모든 파일을 검색해보았습니다.

 

httpd 로 시작하는 파일을 검색해보도록 할께요

 

find . -name httpd*

 

 

 

해당 구문을 사용하니 하위 폴더에 있는 내용이 검색되지요?

 

* ( Asterisk ) 를 사용한 이유는 httpd 로 시작하는 모든 파일을 찾고 싶기 때문에 * ( Asterisk ) 를 사용했답니다.

 

httpd 만 사용했다면 정확하게 일치하는 파일만 검색이 되었을꺼에요

 

그럼 파일이 실제로 있는지 확인해보러가봐야겠죠

 

일반적으로 아파치에서 자주 사용하는 conf 폴더에 httpd.conf 파일이 잘 있나보겠습니다.

 

 

이렇게 httpd.conf 파일이 잘 검색된 것을 확인했습니다.

 

위와 같이 find 명령어로 쉽게 찾을 수 있는 방법을 알아보았습니다.

 

[root@si conf]# find --help
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

default path is the current directory; default expression is -print
expression may consist of: operators, options, tests, and actions:

operators (decreasing precedence; -and is implicit where no others are given):
      ( EXPR )   ! EXPR   -not EXPR   EXPR1 -a EXPR2   EXPR1 -and EXPR2
      EXPR1 -o EXPR2   EXPR1 -or EXPR2   EXPR1 , EXPR2

positional options (always true): -daystart -follow -regextype

normal options (always true, specified before other expressions):
      -depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf
      --version -xautofs -xdev -ignore_readdir_race -noignore_readdir_race

tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N
      -cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME
      -ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN
      -links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE
      -nouser -nogroup -path PATTERN -perm [-/]MODE -regex PATTERN
      -readable -writable -executable
      -wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N
      -used N -user NAME -xtype [bcdpfls]
      -context CONTEXT


actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print
      -fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit
      -exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;
      -execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;

Report (and track progress on fixing) bugs via the findutils bug-reporting
page at http://savannah.gnu.org/ or, if you have no web access, by sending
email to <bug-findutils@gnu.org>.

위와 같이 find --help 명령어를 실행하면 많은 옵션들이 있지만

가장 쉽고 자주 사용하는 하위폴더까지 파일 명칭을 찾는 명령어 하나만 외워두면

서버 운영하면서 아주 편하게 쓸 수 있답니다.

 

좋은 시간 되세요^^

 

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

windows 자격 증명 관리자 사용 ( 네트워크 드라이브 ID PW 접속정보 저장 )

 

 

네트워크 드라이브를 사용할 때 내 컴퓨터에 네트워크 위치를 등록해서 사용하는 경우가 종종있습니다.

 

 

네트워크 드라이브를 등록하는 방법은 간단합니다.

 

 

내 컴퓨터에서 네트워크 드라이브 연결을 클릭하여

 

 

원하는 NAS 서버 위치와 폴더를 입력해주면 됩니다.

 

 

여기에서 다른 자격 증명을 사용하여 연결을 클릭하면

 

 

다음부터 저장된 접속정보로 바로 네트워크 드라이브를 사용할 수 있게 됩니다.

 

 

그런데 재부팅 했을 때 아이디 패스워드가 저장되지 않고 계속해서 접속정보를 입력하라고 나온다면

 

 

개인 PC 인 경우에는 상관이 없겠지만 윈도우 서버 같은 경우에는 문제가 있을 수 있습니다.

 

 

접속정보가 정상적으로 등록되지 않았기 때문인데

 

 

이런경우 command 창에서 접속정보를 지우고 재등록하면 정상적으로 등록 시킬 수 있습니다.

 

 

명령 프롬프트창을 관리자 권한으로 열어서 다음과 같은 명령어를 실행시킵니다.

 

 

net use

 

 

 

 

특정 서버가 접속된 것을 알 수 있는데 여기서 위의 접속정보를 삭제하기 위해서는 아래의 명령을 사용한다.

 

\\127.0.0.1\Private_share /delete

 

 

위 명령을 사용하면 위의 저장된 정보가 사라지게 되는데

 

 

다시한번 접속정보를 입력후 재부팅을 해주면

 

 

설정을 변경하기 전까지는 특별한 인증없이 지정한 네트워크 드라이브에 접속할 수 있게 된다.

 

 

위의 방법을 사용했는데도 안되는 케이스가 있다면

 

 

자격 증명 관리자라는 곳에 들어가서 해당 서버의 Windows 자격 증명 추가를 클릭하여 등록할 수 있다.

 

 

자격증명은 windows 자격증명, 인증서 기반 자격 증명, 일반 자격 증명이 있는데

 

 

네트워크 드라이브를 자동으로 마운트 시켜주기 위함이라면

 

 

Windows 자격 증명 추가를 선택하여 해당 네트워크 드라이브의 접속정보와 id / pw 를 입력하면

 

 

정상적으로 mount 할 수 있게 된다.

 

 

 

이렇게까지 했는데도 재부팅했을 때 network drive 가 정상적으로 mount 되지 않는다???

 

 

그러면 또 다른 방법을 찾아봐야겠다

 

 

다른 좋은 방법이 있다면 댓글로 공유해주시면 감사드리겠습니다^^

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

CentOS 7 네트워크 설정

 

 

윈도우10을 사용하면서 Hyper-V 를 사용하여 Virtual 환경을 구성하였습니다.

 

 

리눅스 환경을 테스트 하기 위해서 CentOS 7 을 설치 하였는데

 

 

OS 설치는 금방 지나가지만 네트워크 설정을 해야 겠지요

 

 

네트워크 설정도 주요 항목만 잘 확인하면 정상적으로 설정될 수 있습니다.

 

 

1. 위치 이동

 

[root@localhost]# cd /etc/sysconfig/network-scripts
[root@localhost]# ls
ifcfg-eth0  ifdown-Team      ifdown-eth   ifdown-ipv6  ifdown-ppp     ifdown-tunnel  ifup-TeamPort  ifup-eth   ifup-ipv6  ifup-plusb  ifup-routes  ifup-wireless      network-functions-ipv6
ifcfg-lo    ifdown-TeamPort  ifdown-ib    ifdown-isdn  ifdown-routes  ifup           ifup-aliases   ifup-ib    ifup-isdn  ifup-post   ifup-sit     init.ipv6-global
ifdown      ifdown-bnep      ifdown-ippp  ifdown-post  ifdown-sit     ifup-Team      ifup-bnep      ifup-ippp  ifup-plip  ifup-ppp    ifup-tunnel  network-functions
[root@localhost]# vi ifcfg-eth0

 

ifcfg-eth0 파일은 환경마다 다를 수 있으니

ifcfg*** 으로 시작하는 파일을 확인해서 열어보시면 됩니다.

 

 

2. ifcfg-eth0 파일 수정

 

파일을 열어보면 아래의 내용이 조회됩니다.

 

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=89f4112e-abdd-asdf-as67-adfasd534g
DEVICE=eth0
ONBOOT=no
IPV6_PRIVACY=no

 

이제 수정해야 할 내용을 정리해보겠습니다.

 

 

BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.155
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=162.123.83.1
DNS2=162.123.83.2

 

BOOTPROTO 는 설정값을 none > static 으로 변경

ONBOOT 는 no > yes 로 변경

사용할 네트워크 정보는 IPADDR, NETMASK, GATEWAY, DNS1, DNS2 를 입력합니다.

 

 

입력 결과

 

 

 

 

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
#BOOTPROTO=none
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=89f4112e-abdd-asdf-as67-adfasd534g
DEVICE=eth0
#ONBOOT=no
ONBOOT=yes
IPADDR=192.168.1.155
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=162.123.83.1
DNS2=162.123.83.2
IPV6_PRIVACY=no

 

 

ESC 키를 누른 후 wq! 를 입력하여 저장 후 나가도록 합니다.

 

[root@localhost]# service network restart

 

위 명령어를 입력하서 network 서비스를 재시작하도록 합니다.

 

 

 

정상적으로 OK 사인을 받았다면 ping 을 통해서 정상적으로 네트워크가 연결되었는지 확인해보겠습니다.

 

 

저는 내부망에 있는 다른 서버를 접속해보도록 하겠습니다.

 

 

 

 

정상적으로 네트워크 접근이 잘 되셨는지요?^^

 

 

저같은 경우 처음에 네트워크가 잘 되지 않는 경우도 있어

 

 

Hyper-v 의 네트워크를 무선랜에서 유선랜으로 변경하여 되는 경우도 있었으니

 

 

다양한 방법으로 확인해보시기 바랍니다^^

 

 

 

 

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

초간단 윈도우10 서비스 삭제 방법

 

 


안녕하세요? 오늘은 윈도우10의 서비스를 삭제하는 방법을 공유하려고 합니다.


사실 윈도우 7, 8, 10 모두 서비스 종료하는 방법은 동일하니


한번 따라해보시고 필요없는 서비스는 지워두시는 것을 권장합니다.


저같은 경우 MySQL 이 두개 설치되었는데


PORT 번호가 겹쳐서 한개는 삭제해야 하는 상황이었습니다.


그렇다면 일단 어떤 서비스를 삭제해야 하는지 step by step 으로 확인해보겠습니다.



 

 

1. 삭제할 서비스 명 확인

 

 

어떤 서비스를 삭제할 지는 이미 머릿속으로 생각하고 있지만 어떤 서비스를 삭제할 것인지

 

명확하게 확인하는 것이 첫번째 입니다.

 

 

 

시작의 검색에서 services.msc 를 검색하여 아이콘을 클릭하면 서비스 관리자로 들어가게됩니다.

 

 

그렇다면 내가 삭제할 서비스인 MySQL 의 명칭을 찾아봅니다.

 

 

 

 

MySQL 의 서비스를 더블클릭하면 서비스 이름이라고 나오는 것을 확인해야합니다.

 

서비스 이름 : MySQL

 

 

 

2. 명령 프롬프트를 실행하여 서비스를 삭제

 

 

명령프롬프트를 열 때 주의해야 할 점은 관리자 권한으로 실행하셔야 합니다.

 

 

( 관리자 권한으로 실행하지 않으면 서비스를 삭제할 때 권한이 없어서 삭제할 수 없다는 메세지가 발생합니다. )

 

 

 

 

그 다음 서비스 삭제 명령어를 실행시켜 줍니다.

 

 

sc delete [삭제할 명령어]

 

sc delete MySQL

 

 

 

 

 

 

서비스를 잘 삭제했다는 메세지가 나옵니다.

 

 

3. 서비스 삭제 확인

 

 

 

 

서비스를 삭제 하고 나면

 

 

MySQL 서비스에 대한 상태를 쿼리할 수 없습니다.

로컬 컴퓨터에 대한 원격 연결이 끊어졌습니다.

 

 

라는 메세지가 발생하는데 무시하면 되고

 

 

F5 키를 눌러서 새로고침을 하면 언제 있었냐는 듯이 순식간에 삭제된 것을 확인할 수 있습니다.

 

 

 

중복된 MySQL 서버는 사라지고 원하는대로 한개의 서버만 남게 되었습니다.

 

 

문제 해결에 도움되셨길 바라며

 

 

정상적으로 진행되지 않는다면 문의해주세요^^

 

 

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

405 method not allowed 해결방법

 

 

Windows Server 2008 R2 Standard 서버를 사용하다가

 

 

서버 EOS 가 되면서 Windows Server 2016 Standard 버전을 사용하게 되었다.

 

 

내부 시스템을 전환하기 위해서 소스와 서버 환경을

 

 

순차적으로 옮기는 과정이 순조롭게 진행되는가 싶더만

 

 

최종과정에서 확인하려고 접속해보니 405 오류가 발생하는 것이다.

 

 

 

 

 

오류 메세지 보기

원격 서버에서 (405) 메서드를 사용할 수 없음 오류를 반환했습니다. 

응용 프로그램에 서버 오류가 있습니다. 

원격 서버에서 (405) 메서드를 사용할 수 없음 오류를 반환했습니다. 

설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오. 

예외 정보: System.Net.WebException: 원격 서버에서 (405) 메서드를 사용할 수 없음 오류를 반환했습니다. 

소스 오류 

현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 아래의 예외 스택 추적을 사용하여 예외의 원인 및 위치 정보를 확인할 수 있습니다. 

스택 추적: 

[WebException: 원격 서버에서 (405) 메서드를 사용할 수 없음 오류를 반환했습니다.] 
   System.Net.HttpWebRequest.GetResponse() +1399 
   System.ServiceModel.Channels.HttpChannelRequest.WaitForReply(TimeSpan timeout) +55 

[ProtocolException: 원격 서버가 필요하지 않은 응답을 반환했습니다. (405) Method Not Allowed.] 
   System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +153 
   System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +336 
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51 
   System.Web.UI.Control.OnLoad(EventArgs e) +95 
   System.Web.UI.Control.LoadRecursive() +59 
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +678 

버전 정보:Microsoft .NET Framework 버전:4.0.30319; ASP.NET 버전:4.7.3163.0 


[WebException]: 원격 서버에서 (405) 메서드를 사용할 수 없음 오류를 반환했습니다. 
   위치: System.Net.HttpWebRequest.GetResponse() 
   위치: System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) 
[ProtocolException]: 원격 서버가 필요하지 않은 응답을 반환했습니다. (405) Method Not Allowed. 

Server stack trace:  
   위치: System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory`1 factory, WebException responseException, ChannelBinding channelBinding) 
   위치: System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) 
   위치: System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout) 
   위치: System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout) 
   위치: System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
   위치: System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
   위치: System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 

Exception rethrown at [0]:  
   위치: System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 
   위치: System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 
   위치: System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) 
   위치: System.Web.UI.Control.OnLoad(EventArgs e) 
   위치: System.Web.UI.Control.LoadRecursive() 
   위치: System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
[HttpUnhandledException]: 'System.Web.HttpUnhandledException' 형식의 예외가 Throw되었습니다. 
   위치: System.Web.UI.Page.HandleError(Exception e) 
   위치: System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
   위치: System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
   위치: System.Web.UI.Page.ProcessRequest() 
   위치: System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) 
   위치: System.Web.UI.Page.ProcessRequest(HttpContext context) 
   위치: ASP.dashboard_aspx.ProcessRequest(HttpContext context) 
   위치: System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
   위치: System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) 
   위치: System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

자세한 오류 메시지를 표시하도록 ASP.NET이 를 사용하여 구성되었으므로 이 오류 페이지에는 중요한 정보가 포함될 수 있습니다.  
프로덕션 환경에서는  또는 를 사용하십시오.

 

 

 

 

 

구글링으로 찾아보니 대부분의 답변은

 

 

method 방식을 GET 을 사용하면 되는데 POST 를 사용하면 405 오류가 발생하더라

 

 

또는 Access-Control-Allow-Origin 을 헤더 정보에 넣어줘야 한다

 

 

등등 여러 답변이 있어서 대부분 적용해 보았지만 오류가 해결되지 않았다ㅠㅠ

 

 

#오류해결

 

소스나 web.config 파일에서 문제를 찾다가

 

 

설정쪽에 문제가 있진 않았을까 하고 구글 검색 방식을 바꿔보니

 

 

HTTP 활성화를 해줘야 한다는 것이다.

 

 

서버 역할에서 백날 빠진 게 있나 찾아봤었는데

 

 

다음단계인 기능에서 확인해볼 수 있는 내용이었다.

 

 

 

HTTP 활성화는 HTTP 를 통한 프로세스 활성화를 지원합니다.

HTTP 활성화를 사용하는 응용 프로그램은

네트워크에서 HTTP를 통해 도착하는 작업 항목에 대한 응답으로

동적으로 시작되고 중지될 수 있습니다.

 

 

라는 내용을 가지고 있는데

 

WCF 서비스에서 HTTP 활성화를 켜둬야 POST 나 GET method 를 사용할 수 있게 된다.

 

 

WCF 서비스는 Windows Communication Foundation 의 약자로

 

 

여러 응용프로그램을 커뮤니케이션(연결)해주는 서비스라고 생각하시면 됩니다.

 

 

.NET Framework 기능에서 HTTP 를 활성해주어야 정상적인 웹 동작을 할 수 있다는 것을 알게 되어서 기쁘네요^^

 

 

 

 

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

 

#파일이나 어셈블리 'Oracle.DataAccess'

 

 

 

IIS 에서 응용 프로그램을 추가 하고 서버에 접속하고 나니

 

아래와 같은 오류가 발생했습니다.

 

파일이나 어셈블리 'Oracle.DataAccess' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 프로그램을 잘못된 형식으로 로드하려고 했습니다.  

 

 

 

 

이하 오류 내용



'/test' 응용 프로그램에 서버 오류가 있습니다.

파일이나 어셈블리 'Oracle.DataAccess' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 프로그램을 잘못된 형식으로 로드하려고 했습니다. 
 설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오. 

예외 정보: System.BadImageFormatException: 파일이나 어셈블리 'Oracle.DataAccess' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 프로그램을 잘못된 형식으로 로드하려고 했습니다.

소스 오류: 


현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 아래의 예외 스택 추적을 사용하여 예외의 원인 및 위치 정보를 확인할 수 있습니다.  

어셈블리 로드 추적: 다음 정보는 'Oracle.DataAccess' 어셈블리를 로드할 수 없는 이유를 알아내는 데 도움이 됩니다.



경고: 어셈블리 바인딩 로깅이 꺼져 있습니다.
어셈블리 바인딩 오류 로깅 기능을 사용하려면 레지스트리 값 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)를 1로 설정하십시오.
참고: 어셈블리 바인딩 오류 로깅 기능을 사용하도록 설정하면 그렇지 않은 경우보다 성능이 약간 떨어집니다.
이 기능을 끄려면 레지스트리 값 [HKLM\Software\Microsoft\Fusion!EnableLog]를 제거하십시오.

  

스택 추적: 



[BadImageFormatException: 파일이나 어셈블리 'Oracle.DataAccess' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 프로그램을 잘못된 형식으로 로드하려고 했습니다.]
   System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
   System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +225
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +110
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +22
   System.Reflection.Assembly.Load(String assemblyString) +34
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +48

[ConfigurationErrorsException: 파일이나 어셈블리 'Oracle.DataAccess' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 프로그램을 잘못된 형식으로 로드하려고 했습니다.]
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +725
   System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +247
   System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +157
   System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +226
   System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +73
   System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +319
   System.Web.Compilation.BuildManager.ExecutePreAppStart() +170
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +820

[HttpException (0x80004005): 파일이나 어셈블리 'Oracle.DataAccess' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 프로그램을 잘못된 형식으로 로드하려고 했습니다.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +523
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +107
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +688

  


버전 정보: Microsoft .NET Framework 버전:4.0.30319; ASP.NET 버전:4.7.3163.0  

 

 


 

오류원인은 응용프로그램 풀에서 등록해 놓은 연결 프로그램이 32bit 프로그램을 사용하고 있는데

 

 

윈도우 서버 ( Windows Server Standard ) 2016 64비트 운영체제를 사용하고 있어서

 

 

default 로 세팅된 것이 64bit 로 설정되어 있어서 bit 수 오류가 발생하였다.

 

 

 

#해결방법

 

 

1. IIS 인터넷 정보 서비스 관리자

2. 응용 프로그램 풀

3. 응용 프로그램 선택

4. 고급설정

5. 32비트 응용 프로그램 사용 : False -> True 로 변경

 

 

32비트 응용 프로그램 사용은 64비트 운영 체제의 응용 프로그램 풀에 대해 True 로 설정하면

응용 프로그램 풀을 처리하는 작업자 프로세스가 WOW64 ( Windows on Windows64 ) 모드로 실행됩니다.

WOW64 모드의 프로세스는 32비트 응용 프로그램 모드만 로드하는 32비트 프로세스입니다.

 

 

다시 접속하니 한번에 해결!

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

Apache ErrorDocument 설정 따라하기



apache 서버를 운영 중 오류 발생 시


 - 404 not found error 

 - 500 Internal Server Error 


등의 에러메세지가 그대로 노출됩니다.



개발시 에러메세지가 노출되면

오류메세지를 바로 확인 가능하기 때문에

개발하는 입장에서는 수정개발이

용이한 장점이 있습니다.




하지만 시스템 운영시에는??



일반 사용자가 알 수 없는 에러메시지를 봐야 할 필요가 있을까요?


A : "페이지 개발이 덜 되었네~"

B : "누가 개발한건지 디테일이 부족하네"

C : "우리가 쓰는 시스템에 심각한 문제가 있는거 아니야?"

D : "다른 기능은 정상동작하고 있는게 맞을까??"


이런 생각을 할 수도 있습니다.




또한 오류발생 시 서버 경로도 노출되기 때문에

프로그램을 조금이라도 아는 사람이

의도치 않은 경로로 접속할수도 있습니다.




위의 상황을 사전방지하기 위해선

오류발생 시 개발자가 의도한 화면이 

보여지도록 처리해야 합니다.




그럼 아파치 서버 내 에러페이지 전환방법을 알아보겠습니다.







1. httpd.conf 파일


#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 402 http://www.example.com/subscription_info.html



아파치 서버 설치시 ErrorDocument 에 기본값이며,

3가지 방법으로 사용할 수 있는 것을 확인할 수 있습니다.

활성화 하는 방법은 vi 편집기를 이용하여 # 으로 된 주석을 풀거나

내려받아서 수정 후 다시 업로드 하면 되겠죠?






- 텍스트 표시

      : 입력된 text 를 표시해줍니다.


- 서버 내부 전환

      : 서버내 만들어 놓은 페이지로 전환합니다.


- 외부 경로 전환

      : 외부 페이지로 전환합니다.




텍스트 표시와 외부경로전환은 바로 입력하면 되는데 

서버내부전환은 어떻게 할까요?



2. DocumentRoot

서버내부전환은 root path 로 인식하는 DocumentRoot 를 확인합니다.


아파치 서버 설치 시 기본설정값은 아래위치입니다.



DocumentRoot "설치경로/htdocs"



ErrorDocument 404 "/errorpage/error404.html"
ErrorDocument 500 "/errorpage/error500.html"



위와 같이 작성하면 "설치경로/htdocs/errorpage/error404.html" 에 있는 페이지로 전환하게 되니

기본 root path 를 변경하시려면 DocumentRoot 의 경로를 변경해주시면 됩니다.


또한, 예제에서는 double quotation 이 빠진 상태로 나와있는데

RHEL 과 CentOS 에서는 double quotation 을 입력해야 정상적으로 작동을 합니다.



잘 안되거나 추가로 궁금한 부분이 있으면 밑에 댓글 달아주세요^^

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,

AIX core 갯수확인

IT/Server 2017. 6. 9. 10:00
반응형

AIX core 갯수확인


오라클 병렬 처리 할 때 몇개 프로세스까지 병렬로 실행할 수 있는가에 대해서 궁금했다.

병렬 프로세스의 기준은 해당 서버의 cpu 코어수를 기준으로 작업하면 된다.

현재 내 OS 의 코어갯수가 몇개인지 확인하는 방법은!


AIX 기준 아래명령을 실행하면 알 수 있다.


#lsdev -Cc processor
proc0  Available 00-00 Processor
proc4  Available 00-04 Processor
proc8  Available 00-08 Processor
proc12 Available 00-12 Processor



위와 같이 프로세스가 4개가 존재하는 것을 확인할 수 있다.


오라클 힌트를 줄 때 /*+ parallel (T1 4) */ 이런식으로 sql hint 를 주면 된다.


4 이상 주었을 때 의미는 없을 것으로 보인다.

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

[ LINUX / UNIX / AIX ] 직전 명령 확인


shell 프로그램을 작성 시 직전 명령이 정상적으로 실행되었는지 확인하는 명령어로 $? 가 있습니다.

 

예를 들어 파일을 복사했을 때 정상적으로 작동이 되었는지 확인하는 방법은??

1. 복사를 완료한 타겟 디렉토리에서 확인.

   - 복사를 완료한 폴더로 이동해서 눈으로 확인하면 됩니다.

     해당 폴더로 이동 후 ls -al 명령어를 이용하여 확인

2. $? 내장변수를 이용.​

cp ​/home/aa.txt /etc/target
echo $?

명령어를 이용했을 때 결과값이 0 이 나오면 정상적으로 명령어가 완료된것으로 봅니다.

 

 

$? : $? 의 값은 직전에 실행한 명령에 대한 값을 출력하는데 0값이 리턴 되면 직전의 명령이 정상적으로 실행된 것으로 볼 수 있습니다

  - 나머지 값이 리턴 되면 직전의 명령이 정상적으로 수행되지 못했음 을 뜻합니다.

 

응용하면 if문에도 적용할 수 있습니다.


cp $BACKUPDIR/$ID $WORKDIR/$ID

if [ $? -ne 0 ]

성공했을 경우의 로직입력 else

실패했을 경우의 로직입력 fi


간단하게 cp 명령어로 확인해보았지만 더 심오한 shell 프로그래밍을 할 때 유용하게 사용할 수 있습니다.^^




이상으로 LINUX / UNIX / AIX 직전 명령 확인을 살펴보았습니다.


읽어주셔서 감사합니다.


반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형