OS: Ubuntu 16.04 Server
모델: IPTIME A2000UA
칩셋: iptime홈피 제품명 검색 다운로드. readme파일에 rtl8812au 칩셋확인
무선랜 드라이버를 설치할 것이고, 커널버전업후에도 수동 재컴파일 하지 않도록
dkms (Dynamic Kernel Module Support)방법으로 설치할 것이다.
설치: "4"번으로 설치함. (설치하실 분들은 바로 4번으로 가서 설치)
1. 우분투 공식 드라이버(4.3.8): 실패 (인식은 되나 iw list 에서 안나옴)
2. iptime홈피 드라이버(4.3.20): 동작 (컴파일오류로 1줄주석처리, dkms모듈미적용으로 커널버전업시 재컴파일해야함)
3. github.com 드라이버(4.3.14): 동작 (컴파일 잘됨. dkms설치-1줄이 홈피설명과 다름)
4. github.com 드라이버(4.3.20): 사용 (컴파일 잘됨. dkms설치-1줄이 홈피설명과 다름)
1. 우분투 공식 드라이버(4.3.8)
apt-get install rtl8812au-dkms 설치
랜카드 인식됨.
iwconfig 정보나옴
iw list 에서 아무런 메세지가 안나옴.
2. iptime홈피 드라이버(4.3.20)
iptime source안에 /driver/디렉토리
make 하면 오류남.
해당 소스파일 열어보면, 그냥 컴파일된 날짜와 시간 정보임.
해당 오류라인. 주석처리하고 다시
make clean
make
make install 하면 아래와 같이 설치함.
install -p -m 644 8812au.ko /lib/modules/4.4.0-87-generic/kernel/drivers/net/wireless/
/sbin/depmod -a 4.4.0-87-generic
iw list 동작함.
단점: dkms.conf 파일이 없어서, 커널버전업되면, 다시 컴파일해서 설치를 해야함.
모듈정보확인: modinfo 8812au
모듈삭제: rmmod 8812au
갱신: depmod -a
3. github.com 드라이버(4.3.14, 4.3.20)
https://github.com/diederikdehaas/rtl8812AU 설명
기본은 4.3.14 버전으로 되어 있음.
4.3.14 버전도 설치하면 잘 동작함.
https://github.com/diederikdehaas/rtl8812AU/archive/driver-4.3.14.zip 다운로드
왼쪽중단의 Branch를 눌러서 4.3.20으로 변경 가능.
https://github.com/diederikdehaas/rtl8812AU/tree/driver-4.3.20 설명
https://github.com/diederikdehaas/rtl8812AU/archive/driver-4.3.20.zip 다운로드
4. 본버전 다운로드
apt install dkms (커널업글에 따른 모듈 재설치를 자동화)
wget https://github.com/diederikdehaas/rtl8812AU/archive/driver-4.3.20.zip
unzip driver-4.3.20.zip
cd rtl8812AU-driver-4.3.20
dkms으로 설치하기. 설명은 아래 홈피에 나옴. 1줄만 다르게.
#출처: https://github.com/diederikdehaas/rtl8812AU/tree/driver-4.3.20
DRV_NAME=rtl8812AU
DRV_VERSION=4.3.20
mkdir /usr/src/${DRV_NAME}-${DRV_VERSION}
#안 먹힘. 현재 소스에서 .git 정보만 빼고, /usr/src/rtl8812AU-4.3.20으로 복사하려는 것임
#git archive driver-${DRV_VERSION} | tar -x -C /usr/src/${DRV_NAME}-${DRV_VERSION}
#아래 명령으로 대체함.
# git로 다운로드 했을때에는
git archive HEAD | tar -x -C /usr/src/${DRV_NAME}-${DRV_VERSION}
# zip파일을 다운로드 했을때에 그냥 복사하기
cp -r * /usr/src/${DRV_NAME}-${DRV_VERSION}
dkms add -m ${DRV_NAME} -v ${DRV_VERSION}
dkms build -m ${DRV_NAME} -v ${DRV_VERSION}
dkms install -m ${DRV_NAME} -v ${DRV_VERSION}
# dkms로 설치를 했기 때문에 커널 버전업(4.4.0-87 --> 4.4.0-89)을 해도 모듈재설치가 자동으로 되었다.
# 커널4.4.0-87 에서 설치함.
modinfo 8812au
filename: /lib/modules/4.4.0-87-generic/updates/dkms/8812au.ko
version: v4.3.20_16317.20160108
# 커널4.4.0-89 업글후에도 모듈이 자동재설치가 잘 되어 있다.
modinfo 8812au
filename: /lib/modules/4.4.0-89-generic/updates/dkms/8812au.ko
version: v4.3.20_16317.20160108
# 삭제를 할려면
# DRV_NAME=rtl8812AU
# DRV_VERSION=4.3.20
# dkms remove ${DRV_NAME}/${DRV_VERSION} --all
----실제삭제시 메세지----
# DRV_NAME=rtl8812AU
# DRV_VERSION=4.3.20
# dkms remove ${DRV_NAME}/${DRV_VERSION} --all
-------- Uninstall Beginning --------
Module: rtl8812AU
Version: 4.3.20
Kernel: 4.4.0-87-generic (x86_64)
-------------------------------------
Status: Before uninstall, this module version was ACTIVE on this kernel.
8812au.ko:
- Uninstallation
- Deleting from: /lib/modules/4.4.0-87-generic/updates/dkms/
- Original module
- No original module was found for this module on this kernel.
- Use the dkms install command to reinstall any previous module version.
depmod......
DKMS: uninstall completed.
------------------------------
Deleting module version: 4.3.20
completely from the DKMS tree.
------------------------------
Done.
'Ubuntu' 카테고리의 다른 글
LVM (0) | 2022.05.28 |
---|---|
dkms module fail status remove build install (0) | 2017.09.15 |
freetds : SQLSTATE[01002] Adaptive Server connection failed (severity 9) (0) | 2017.08.03 |
ubuntu geoip php 설치 (0) | 2015.09.10 |
ubuntu 14.04 apt-get kernel upgrade (0) | 2015.09.07 |
4줄요약:
서버 환경: Ubuntu 14.04, freetds 0.91, PHP5, MSSQL
오류 발생: 가끔 SQLSTATE[01002] Adaptive Server connection failed (severity 9)
원인 찾기: 오류시에 log 남겨서, 오류 발생 확률(0.5%) 및 오류메세지 확인.
문제 해결: freetds 버전업 (ubuntu PPA 버전 사용)
1. 오류 발생:
일상적인 오류 였으면, 쉽게 발견되었을 건인데.
나중에 통계 내어 보니. 0.5% 확률로 발생하는 오류여서, 늦게 발견이 되었다.
오류메세지
"SQLSTATE[01002] Adaptive Server connection failed (severity 9)"
2. 오류 기록:
일시적인 것인지? 아니면 주기적인 것인지? 일단 log 를 남기기로 하였다.
<?php
$directoryName = '웹디렉토리가 아닌 디렉토리';
$fileName = $directoryName . 'log.txt';
if (is_writable($directoryName)) {
#echo '디렉토리 쓰기 가능';
$url = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
if (filter_var($url, FILTER_VALIDATE_URL)) {
#echo "좋은 URL";
$fileContent = date("Ymd_His") . ' ' . $url . ' ' . $e->getMessage() . "\n";
file_put_contents($fileName, $fileContent, FILE_APPEND | LOCK_EX);
} else {
echo "나쁜 URL";
}
} else {
echo '디렉토리 쓰기 불가';
}
?>
오류 발생시에는
/웹디렉토리가 아닌 디렉토리/log.txt 파일에 아래와 같이 기록이 남게 함.
20170701_205408 오류발생한URL 오류메세지
3. 오류 통계
오류가 매일 조금이지만 로그에 남았다.
오류 로그에 남은 URL을 웹로그 파일에서 카운트해 보니.
대략 0.5% 확률로 오류가 꾸준히 발생하고 있었다.
4. 오류 상세내역
/etc/freetds/freetds.conf 설정파일에서
디버깅 로그를 활성화.
dump file = /tmp/freetds.log
아래의 오류를 확인함.
dblib.c:7981:20017: "Unexpected EOF from the server"
dblib.c:8002:"Unexpected EOF from the server", client returns 2 (INT_CANCEL)
5. 오류 해결 찾기
구글링 해본 대략적인 해결 방안은
MS에서 새로 나온 PHP-MSSQL드라이버를 쓰기
PHP5 mssql 옵션 변경
freetds 최신버전업 등의 글이 보였다.
freetds changelog 에 나온 mssql 관련 내용을 보고.
--------------------------------------------------
Author: Frediano Ziglio <freddy77@gmail.com>
Date: Tue May 2 23:26:24 2017 +0100
Fix very big login packet using MSSQL
If login packet is really big to split into multiple TDS packets
and is encrypted MSSQL only encrypt the first TDS packet, the others
are not encrypted.
--------------------------------------------------
freetds 버전업을 해보기로 함.
6. freetds 버전업 결정
ubuntu 14.04 : freetds 0.91-5
ubuntu 16.04 : freetds 0.91-6
2017년 5월 2일 이후 버전으로 설치를 해야하는데.
ftp://ftp.freetds.org/pub/freetds/stable/ 에서 날짜를 보니
freetds-1.00.38 이후 버전을 설치를 해야함.
소스설치 보다는 Ubuntu PPA버전으로 설치를 해보기로 함.
7. freetds PPA 설치
-----Ubuntu 14.04, 16.04-----
add-apt-repository ppa:jamiewillis/freetds #저장소추가
apt-get update
apt-get remove freetds-bin #기존 0.91버전 삭제
apt-get install freetds # PPA freetds 1.0.44설치
apt-get -o Dpkg::Options::="--force-overwrite" install freetds #Man페이지 강제덮어쓰기
/etc/freetds.conf 에 설정추가
client charset = UTF-8
dump file = /tmp/freetds.log
connect timeout = 5
service apache2 restart
웹페이지 접속 및
/tmp/freetds.log 에서 버전 확인
8. 확인
몇일이 지났는데, 0.5% 확률로 발생하던 오류가 1건도 나지 않았다.
Ubuntu 14.04 또는 16.04에서 기본 freetds 0.91버전을 MSSQL과 사용하는 분들은
1.00.38이후의 freetds 버전으로 업그레이드 하는 것이 좋을 것 같다.
'Ubuntu' 카테고리의 다른 글
LVM (0) | 2022.05.28 |
---|---|
dkms module fail status remove build install (0) | 2017.09.15 |
IPTIME A2000UA Ubuntu 16.04 Linux dkms (0) | 2017.08.04 |
ubuntu geoip php 설치 (0) | 2015.09.10 |
ubuntu 14.04 apt-get kernel upgrade (0) | 2015.09.07 |
o 샘플코드
<?php
$ip=$_SERVER['REMOTE_ADDR'];
echo $ip;
$country = geoip_country_code_by_name($ip);
if ($country) {
echo 'This host is located in: ' . $country;
}
o getip php 설치하기 (ubuntu )
# apt-get install php5-geoip
# service apache2 reload
'Ubuntu' 카테고리의 다른 글
LVM (0) | 2022.05.28 |
---|---|
dkms module fail status remove build install (0) | 2017.09.15 |
IPTIME A2000UA Ubuntu 16.04 Linux dkms (0) | 2017.08.04 |
freetds : SQLSTATE[01002] Adaptive Server connection failed (severity 9) (0) | 2017.08.03 |
ubuntu 14.04 apt-get kernel upgrade (0) | 2015.09.07 |