Yourls
가끔씩 어떤 사이트의 URL 주소를 복사해서 누군가에게 공유를 해야하는 상황이 있을 때 해당 사이트의 URL을 복사하고 붙여넣었을 때 아래 처럼 길게 나와서 흠칫 하는 경우가 종종 있다.
https://cafe.naver.com/ArticleList.nhn?search.clubid=30219408&search.menuid=23&search.boardtype=I&search.totalCount=201&search.cafeId=30219408&search.page=2
저런 긴 URL을 단축해주는 서비스가 Yourls이다. 이와 비슷한 유명 서비스로는 bit.ly가 있다.
bit.ly라는 좋은 서비스가 있음에도 왜 Yourls를 써야하는가?
Yourls는 오픈 소스로 배포되어 있어 도커를 통해 해당 서비스를 자체 호스팅할 수 있다.
또한, 단축된 URL의 통계를 수집할 수 있다는 점에서 써볼만 하다는 생각이 든다.
1. 사용할 도커 이미지
해당 도커 이미지에는 Apache와 PHP가 설치되고 MySQL은 별도의 스택으로 묶어서 실행되도록 docker-compose를 이용해보도록 하자.
환경 변수
Yourls 서비스를 올릴 때 참고할 만한 환경변수는 아래와 같다.
옵션 | 설명 |
---|---|
-e YOURLS_DB_HOST=... |
기본 값은 연결된 mysql 컨테이너의 IP 및 포트 |
-e YOURLS_DB_USER=... |
기본값은 "루트" |
-e YOURLS_DB_PASS=... |
기본 값 MYSQL_ROOT_PASSWORD 은 연결된 mysql 컨테이너의 환경 변수 값 |
-e YOURLS_DB_NAME=... |
기본 값은 "yourls" |
-e YOURLS_COOKIEKEY=... |
기본 값은 고유한 임의의 SHA1 |
-e YOURLS_SITE=... |
사용자의 인스턴스 URL |
-e YOURLS_USER=... |
yourls 인스턴스 사용자 이름 |
-e YOURLS_PASS=... |
yourls 인스턴스 사용자 비밀번호 |
2. 컨테이너 생성
서버로 접근해 docker 설정 파일을 생성할 폴더를 생성하고 yaml 파일을 작성해보도록 하자.
$ mkdir -p /docker/yourls
$ cd /docker/yourls
$ vim ./docker-compose.yaml
docker-compose.yaml
version: "3"
services:
yourls:
depends_on:
- "mysql"
image: yourls
restart: always
ports:
- "80:80"
environment:
- YOURLS_DB_HOST=mysql
- YOURLS_DB_PASS=secret
- YOURLS_SITE=http://15.164.222.216
- YOURLS_USER=jaehyo
- YOURLS_PASS=secret
container_name: yourls
mysql:
image: mysql:5.7
platform: linux/amd64 # m1 Mac 인 경우 해당 옵션 사용
restart: always
volumes:
- "my-data:/var/lib/mysql"
environment:
- MYSQL_ROOT_PASSWORD=secret
- MYSQL_DATABASE=yourls
volumes:
my-data: {}
3. 접속
컨테이너가 정상적으로 생성되었다면 위에서 http://<IP주소>/admin/install
으로 접근해주도록 하자.
아래처럼 로그인을 하면 관리페이지가 나온다.
Username / Password는 위에 yourls 컨테이너 환경변수에서 지정한 값을 넣어주면 된다.
사용법은 URL 부분에 단축시킬 URL을 넣고 Shorten The URL을 클릭해주면 끝이다.