전체 글
새로운 커뮤니티 사이트를 찾으신다면?
그곳은 바로 타모임! ㅎㅎ 사실 제가 만든 사이트에요... 아직 유저가 없지만... 유저분들 니즈에 맞게 사이트를 꾸려갈 생각이에요 새로운 기능들도 앞으로 계속 업데이트될 예정입니다 소통할 수 있는 공간을 많이 마련했습니다 1:1 채팅도 가능해요! 저와 채팅도 가능합니다 ㅎㅎ 놀러와주시면 정말 고마울 것 같아용 http://tamoim.com
리눅스 crontab, crond 스케줄러로 톰캣 실행 시 JNI 라이브러리 경로 못 찾는 현상
환경 : 관리중인 시스템에서 tomcat이 비정상적으로 종료되는 경우 cron 스케줄러를 통해 포트 및 프로세스 확인 후 catalina.sh start 명령어 사용하도록 설정 문제 : 스케줄러를 통한 명령어로 톰캣 실행 시 자바 JNI라이브러리 경로 못 찾음 해결 : crontab 파일 상단에 명시적으로 시스템 환경변수와 똑같이 필요한 라이브러리 경로 추가 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ #위는 기본 변수 #사용자 설정 변수 추가 CUSTOM_PATH=/PATH/TO/YOUR_ITEM
PHP Laravel 에서 사이트맵을 생성하는 간단한 방법
저와 같이 라라벨로 웹사이트를 만드신 분들 반갑습니다 구글이나 빙 등, 검색 포털 사이트에 나의 웹사이트를 공개하려면 사이트맵을 반쯤 필수적으로 등록해야합니다 글을 등록할 때마다 직접 색인을 해주는 방법도 있지만 글 작성이 빈번하게 일어나는 경우에는 너무 번거롭겠죠? 뭐 직접 프로젝트를 성공적으로 완성하신 분들이라면 당연히 아시겠지만... 사이트맵을 만들어주는 생성 사이트도 여럿 있지만 또 서버의 프로젝트 폴더로 옮겨줘야하니 매우 귀찮은 작업을 그나마 쉽게할 수 있는 방법을 공유합니다. 1. spatie의 sitemap generator 패키지를 설치 composer require spatie/laravel-sitemap 그리도 동시에 config도 생성 해줍니다 php artisan vendor:pub..
Fail2ban으로 무차별 대입, SSH 접속 시도 방어하기
해킹 봇의 공격을 받고있던 건에 대하여 현재 운영중인 서버의 커뮤니티에는 에러 발생 시 DB에 로그를 남기도록 에러 핸들링을 해두었는데 그런데 위와같이 불순한 로그들이 존재하는 것이 아닌가.... 지금은 실제 서버에 올린 후 운영에 알맞도록 보수를 진행중인데 이런 접속 0인 사이트도 타겟이 될 줄은 몰랐다 그리고 서버에 접속해서 로그를 까보니 아주 맹렬한 기새로 cms를 탈취하기위한 노력을 보게되었습니다 근데 현재는 직접 관리하기 때문에 CMS가 없기에.... 그저 안쓰러운 아무튼 이런 상황을 그냥 둘 순 없기 때문에 fail2ban을 사용해서 불순한 ip들을 자동적으로 차단하도록 조치를 해봤습니다 간략히 설정하는 방법을 적어보자면 1. fail2ban을 설치 2. 우분투 기준 /etc/fail2ban ..
Nginx + 도커로 로드밸런싱을 운영에 적용해보자
Nginx와 도커로 실제 운영을 해보자 현재 저의 웹 사이트는 이렇게 구성되어있습니다 그리고보니 모양이 좀 그렇네요 사실 로드밸런서라는 것이 진정한 의미를 가지려면 두 대 이상의 서버 컴퓨터가 필요하지만 저의 경우는 학습 + 무중단 배포를 위해서 구성을 해보았습니다 사실 무중단 배포가 가장 큰 의미가 있는 것 같아요 한 쪽이 문제가 생기거나 중단이 되어도 서비스가 살아있다면 갑자기 연결이 중단되어 당황하는 유저가 없을 것입니다 두 개의 컨테이너를 생성 각 컨테이너는 마음에 드시는 포트 번호로 포트포워딩해서 생성해줍니다 예를 들어서 5000:80, 6000:80 이런식으로 만들어줍니다 Nginx 설정 우분투를 기준으로 설명을 하겠습니다 etc/nginx/sites-available 경로의 default 파..
WebSocket을 활용한 PHP 라라벨 실시간 채팅 - 2. 자바스크립트에서 웹소켓과 통신하기
생각보다 빠릿하게 동작하는 모습 감격 웹소켓 서버 연결을 위한 자바스크립트 코드 작성 우선 자바스크립트단에 웹소켓 객체부터 생성해줍니다 var socket = new WebSocket('wss://도메인 이름/websocket'); -- nginx로 웹소켓 서버를 연 경우 또는 var socket = new WebSocket('wss://도메인 이름:포트번호'); -- 테스트 환경 및 로컬 구동 그리고 연결이 완료된 경우 실행되는 onopen 함수도 작성해주면 테스트 시나 특정 이벤트를 연출하기 좋습니다 socket.onopen = function(e) { console.log("웹소켓 연결 성공"); }; 이번엔 웹소켓서버로부터 메시지를 받았을 때 실행된 함수를 작성해줍니다 socket.onmessag..