Window환경에서 Java Selenuim을 야무지게 돌리다가 CentOS7에 배포하자마자 오류가 뻥뻥 났다.
윈도우 리눅스,, 우리 모두 다 같이 좀 쉽게 가면 안되는걸까..?
그러면 CentOS7환경에서 천천히 Selenim 크롤링 환경을 셋팅해보자.
Chrome 설치
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
yum localinstall google-chrome-stable_current_x86_64.rpm
위의 명령어를 통해 chrome 설치에 필요한 최신 rpm 패키지를 다운로드한 후 yum localinstall로 설치를 실행한다.
의존성 패키지 설치 y/n 이 나온다면 y로 계속 진행하면 된다.
google-chrome --version
설치가 완료되면 버전을 확인해준다.
본인은 현재 기준 106 버전을 다운받았다.
Chrom Driver 설치
이제 웹 크롤링을 진행할 Chrome driver를 설치하자.
ChromeDriver - WebDriver for Chrome - Downloads (chromium.org)
해당 사이트를 들어가서 본인이 설치한 버전에 맞는 드라이버를 다운받으면 된다.
본인은 106버전으로 설치를 진행한다.
CentOS로 linux와 같은 환경이므로 chromedriver_linux를 다운받는데,
이때 우클릭을 하여 링크를 복사해준 후, linux에서 wget을 통해 설치를 진행해준다.
wget https://chromedriver.storage.googleapis.com/106.0.5249.61/chromedriver_linux64.zip
-- 설치
unzip chromedriver_linux64.zip
-- 압축해제
설치 후 압축을 풀어주면 chromedriver라는 단일 파일을 확인 할 수 있다.
해당 파일을 본인이 옮기고자 하는 위치로 옮겨준다.
본인은 /home/utils 라는 경로로 옮겼다.
mv -f ~/chromedriver /home/utils/chromedriver
이제 옮겼으면 해당 chromedriver에 대해 권한을 부여해야한다.
여기서 중요한게 권한을 주지 않으면 It must be an executable file 이라는 오류가 발생하며 실행을 시키지 못한다.
chown root:root /home/utils/chromedriver
chmod 0755 /home/utils/chromedriver
Selenium 셋팅
이제 본인이 작성한 크롤링 소스쪽에서 바라볼 chromedriver의 경로를 잡아주고,
options.addArguments("--headless");
options.addArguments("--no-sandbox");
라는 두개의 option을 추가해준다. 따로 탭을 띄우지 않고 크롤링을 진행할 수 있는 옵션인데,
해당 옵션을 추가안해주면 CentOS에서 DevToolsActivePort file doesn't exist error 에러가 발생할 수 있다.
Selenium 크롤링 Setting Source
Path path = Paths.get("/home","utils", "chromedriver");
System.setProperty("webdriver.chrome.driver", path.toString());
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("--no-sandbox");
options.addArguments("--start-maximized");
options.addArguments("--disable-popup-blocking");
options.addArguments("--disable-default-apps");
마지막으로 chrome driver 버전에 따라 selenium 버전도 맞춰줘야 한다.
해당 버전이 일치하지않으면, Selenium에서 아래와 같은 오류가 발생하게 된다.
Unable to find an exact match for CDP version 106, so returning the closest version found: 104
본인은 106버전 기준 4.5.0 버전을 사용하여 해결했다.
implementation group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '4.5.0'
이제 해당 Java로 개발한 소스를 CentOS7에 배포해준 후 크롤링을 진행하는데 오류가 발생하지 않았다.
끗!
'server > 💻Server' 카테고리의 다른 글
Nginx로 Rate limit 설정 (0) | 2023.01.04 |
---|---|
AWS[Linux] - Certbot으로 SSL 발급해서 https 적용하기 (0) | 2022.12.17 |
스케일 아웃(Scale Out)이란? (0) | 2021.04.14 |
댓글