본문 바로가기
IT관련/단축URL

YOURLS 단축 URL 서버 구축하기

by RichNam 2022. 8. 19.
반응형

 

 

 

현재 제가 사용하는 단축 URL 서비스인 YOURS 를 서버에 구축하기 위한 방법에 대해 포스팅합니다.

 

저는 리눅스 전문가가 아닙니다.

 

다만, 소시적 리눅스란게 세상에 처음 나왔을 적, 잠깐 가지고 놀았던 과거가 있으며,

기본기만 가지고 있는 그런 일반적인 유저일 뿐입니다.

 

 

 

다만 고객에게 서비스 제공을 하기 위한 여러가지 자료들을 클라우드에 올려 둔 후, 해당 링크를 전달해 주어야 할 때에

좀던 짧은, 그리고 PC에서 타이핑하기 편한 일상적인 단어의 조합으로 해당 링크를 전달해 주고 싶어 국내 단축 URL 서비스 업체인 VO.LA 상용서비스를 이용한 적이 있습니다.

 

 

예를 든다면

아래와 같은 고객 서비스를 제공했었습니다.

 

예를 들어 http://vo.la/2720drv 를 입력하면 캐논 MB2720 드라이버를 제공하는 제 블로그로 들어와 설명을 읽고 드라이버를 다운 받아 설치하게끔 시스템을 구축했던 것이죠.

 

 

 

 

 

 

 

저는 아래의 표에서와 같이 라이트 요금제를 사용했었는데요. 월 22,000원은 좀 부담이 되더군요.

이 비용은 회사 비용 지출이 아닌 제 개인적인 비용지출을 했으니 말입니다.

 

URL을 일상적인 단어로 제공하기 위해 월 22,000원은 많이 비싸다는 느낌이 들었습니다.

1만원 정도라면 계속 이용하고 있을지도 모르겠네요. ㅎㅎ

 

 

 

 

 

vo.la 서비스가 결코 나쁘다거나 사용하면 안된다는 그런 의미가 아닙니다.

vo.la 는 훌륭한 단축 URl 서비스 제공업체입니다.

 

 

다만 제 개인이 지속적으로 월 22,000원을 부담하기는 부담스러워 직접 서버구축을 하고자 맘을 먹고 시작한게 계기가 되었습니다.

 

 

 

 

 

먼저, 자신의 서버가 있어야 합니다.

그 서버는 리눅스 베이스의 php 와 DB 가 운용되어야 함은 기본입니다.

 

 

 

 

 

여기서 우리가 서버관련 주지해야 할 부분은

 

1.웹호스팅을 이용하는 방법이 있겠습니다. 자신의 홈페이지가 운용이 되고 있다면 거기에 끼워 단축url을 사용할 수 있을겁니다. 월 2-3천원짜리 리눅스 호스팅도 있으니 잘 찾아 보는 방법도 좋다 봅니다.

 

2.회사내 NAS를 운용한다. 이것 또한 좋은 방법이라 생각됩니다.

 

3.오라클 클라우드의 무료서비스를 이용한다.

 

 

 

네, 맞습니다.

저는 오라클 클라우드를 이용하고 있습니다.

평생 무료이니까 더할 나위 없습니다. ^^

 

 

 

 

 

 

 

오라클 클라우드의 구축방법은 약간 전문적인 지식이 필요로 합니다만,

많은 부분이 한글로 서비스 되고 있으며 구글링을 하면 관련 자료를 쉽게 얻을 수 있으니

이 글을 보시는 분이라면 오라클 클라우드를 신청하여 사용하시길 적극 추천드립니다.

년 몇 십에서 몇 백을 버는 방법입니다. ^^

 

차후 시간되면 구축하는 방법에 대해서 포스팅 한번 하겠습니다.

 

 

 

 

 

자, 어찌 되었건 간에 본인의 리눅스 서버가 있다고 가정하고 시작합니다.

본인의 리눅스 서버에 ssh 을 통한 셀 접속을 합니다.

 

 

 

 

 

리눅스 서버에는

vi나ㅣ nano 같은 텍스트 편집기와 nginx 웹서버 그리고 MariaDB가 설치 되어 있다는 전제하에 설명을 합니다.

만약 그렇지 않다면 설치가 필요합니다.

 

 

 

웹서버를 시작하고 부팅시 시작하도록 설정합니다.

 

 

systemctl start nginx
systemctl enable nginx

 

 

 

MariaDB 도 서비스를 시작하고 부팅시 시작하도록 설정합니다.

 

 

systemctl start mariadb
systemctl enable mariadb

 

 

 

 

 

728x90

 

 

 

 

 

 

이후, MariaDB에 데이터베이스를 생성할 것입니다.

다음 스크립트를 실행하십시요.

 

 

mysql_secure_installation

 

 

 

다음 스크립트로 MariaDB에 로그인합니다.

 

 

mysql -u root -p

 

 

 

다음 스크립트를 실행하여 DB를 만들고 권한을 부여한 다음 DB접속을 끝냅니다.

 

 

CREATE DATABASE yourlsdb DEFAULT CHARACTER SET UTF8 COLLATE utf8_unicode_ci;
CREATE USER '사용할 ID'@'localhost' IDENTIFIED BY '사용할 비번';
GRANT ALL PRIVILEGES ON yourlsdb.* TO '사용할 ID'@'localhost' IDENTIFIED BY '사용할 비번' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

*사용할 ID와 비번 등은 본인이 정해서 입력해 주세요.

 

 

 

다음 단계는

YOURLS를 다운로드를 한 후, 설치를 할 것입니다.

웹서버 루트로 이동합니다.

 

 

cd /var/www/html

 

 

 

다음에  GitHub 리포지토리에 있는 최신 코드를 다운로드한 후 압축을 풀어야 합니다.

웹 루트에 폴더를 하나 만들어 설치를 할 수 있겠지만

저는 웹서버 루트에 설치를 했습니다.

 

먼저 서브폴더를 하나 만든 후,

해당 서브 폴더로 이동하여 GitHub 에서 최신판을 다운 받습니다.

 

 

git clone https://github.com/YOURLS/YOURLS.git .

 

 

그리고 mv 명령을 이용하여 모든 내용을 루트로 옮깁니다.

 

 

 

 

YOURLS 의 압축해제 후 생성된 usr 폴더내 config.php 파일을 편집할 차례입니다.

샘플 파일을 이름을 변경합니다.

 

 

cp user/config-sample.php user/config.php

 

 

 

나노 에디터로 config.php 를 불러 들입니다.

 

 

nano user/config.php

 

 

 

아래 내용을 참고하시어 편집 후 저장합니다.

 

 

<?php
/* This is a sample config file.
 * Edit this file with your own settings and save it as "config.php"
 *
 * IMPORTANT: edit and save this file as plain ASCII text, using a text editor, for instance TextEdit on Mac OS or
 * Notepad on Windows. Make sure there is no character before the opening <?php at the beginning of this file.
 */

/*
 ** MySQL settings - You can get this info from your web host
 */

/** DB정보 수정 */
define( 'YOURLS_DB_USER', 'root' );

define( 'YOURLS_DB_PASS', '여기에 DB 비밀번호 입력하세요' );

define( 'YOURLS_DB_NAME', 'yourls' );

define( 'YOURLS_DB_HOST', 'localhost' );

define( 'YOURLS_DB_PREFIX', 'yourls_' );

/*
 ** Site options
 */

/** YOURLS installation URL
 ** All lowercase, no trailing slash at the end.
 ** If you define it to "http://sho.rt", don't use "http://www.sho.rt" in your browser (and vice-versa)
 ** To use an IDN domain (eg http://héhé.com), write its ascii form here (eg http://xn--hh-bjab.com) */
define( 'YOURLS_SITE', 'http://여기에 단축URL을 사용할 도메인을 입력하세요' );

/** YOURLS language
 ** Change this setting to use a translation file for your language, instead of the default English.
 ** That translation file (a .mo file) must be installed in the user/language directory.
 ** See http://yourls.org/translations for more information */
define( 'YOURLS_LANG', '' );

/** Allow multiple short URLs for a same long URL
 ** Set to true to have only one pair of shortURL/longURL (default YOURLS behavior)
 ** Set to false to allow multiple short URLs pointing to the same long URL (bit.ly behavior) */
define( 'YOURLS_UNIQUE_URLS', true );

/** Private means the Admin area will be protected with login/pass as defined below.
 ** Set to false for public usage (eg on a restricted intranet or for test setups)
 ** Read http://yourls.org/privatepublic for more details if you're unsure */
define( 'YOURLS_PRIVATE', true );

/** A random secret hash used to encrypt cookies. You don't have to remember it, make it long and complicated
 ** Hint: copy from http://yourls.org/cookie */
define( 'YOURLS_COOKIEKEY', '쿠키를 암호화 하기 위한 문자들을 입력하세요. 위 사이트에서 확인가능합니다.' );

/** Username(s) and password(s) allowed to access the site. Passwords either in plain text or as encrypted hashes
 ** YOURLS will auto encrypt plain text passwords in this file
 ** Read http://yourls.org/userpassword for more information */
$yourls_user_passwords = [
	'서비스 관리할 ID를 입력하세요' => '사용할 비밀번호 입력하세요' /* Password encrypted by YOURLS */ ,
	// 'username2' => 'password2',
	// You can have one or more 'login'=>'password' lines
];

/** URL shortening method: either 36 or 62
 ** 36: generates all lowercase keywords (ie: 13jkm)
 ** 62: generates mixed case keywords (ie: 13jKm or 13JKm) 
 ** For more information, see https://yourls.org/urlconvert */
define( 'YOURLS_URL_CONVERT', 36 );

/** Debug mode to output some internal information
 ** Default is false for live site. Enable when coding or before submitting a new issue */
define( 'YOURLS_DEBUG', false );

/**
* Reserved keywords (so that generated URLs won't match them)
* Define here negative, unwanted or potentially misleading keywords.
*/
$yourls_reserved_URL = [
	'porn', 'faggot', 'sex', 'nigger', 'fuck', 'cunt', 'dick',
];

/*
 ** Personal settings would go after here.
 */

 

 

 

다음으로 폴더의 권한을 변경합니다.

 

 

chown -R www-data:www-data /var/www/html
chmod -R 775 /var/www/html

 

 

 

만약 리눅스 서버에 방화벽이 서비스되고 있다면 방화벽을 업데이트 합니다.

 

 

ufw allow http
ufw allow https

*https 를 사용하지 않는다면 해당 부분은 빼도 됩니다.

 

 

 

다음으로 웹서버 nginx 를 구성하고 서버 블록을 설정해야 합니다.

.conf 파일을 생성합니다.

 

 

nano /etc/nginx/sites-available/yourls.conf

 

 

다음 내용을 .conf 파일에 붙여 넣습니다.

 

 

server {


listen 80;
listen [::]:80;

server_name 여기에 서버 URL을 입력합니다. 예:dok.do;

root /var/www/html;

location / {
try_files $uri $uri/ /yourls-loader.php$is_args$args;
}

location ~ \.php$ {
include fastcgi.conf;

fastcgi_index index.php;

fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

}

 

 

 

지금까지의 작업이 정상적으로 진행되었는지 확인을 하겠습니다.

 

 

 

nginx -t

 

 

아래와 같이 결과가 나타나야 정상입니다.

 

 

 

 

 

다음을 실행하여 .conf 를 활성화 시킵니다.

 

 

ln -s /etc/nginx/sites-available/yourls.conf /etc/nginx/sites-enabled/

 

 

 

그런 다음 변경 사항을 적용하려면 Nginx를 다시 시작하십시오.

 

 

systemctl restart nginx

 

 

 

여기까지 무사히 마쳤다면

https 접속이 아닌 http접속이 가능한 단축 URL 서비스를 이용하실 수 있습니다.

 

 

 

단축 URL주소로 사용할 도메인 다음에 /admin 으로 접속한 후 서비스를 사용하면 됩니다.

 

 

 

 

 

 

이상, 차후 제가 참고하기 위해 정리해 둡니다.

어제 제가 사용하는 오라클 클라우드가 시스템 재시작이 된 후

단축 URL 서비스가 재실행 되지 않아 하루종일 고생해서 재설정 한 다음

바로 이렇게 정리 본을 남겨 둡니다.

 

 

 

필요하신 분꼐 도움되셨다면 좋겠습니다. ^^

 

반응형