피드형 블로그
워드프레스와 비슷하게 php 기반의 웹 서비스이다. 하지만 워드프레스의 경우 커스텀 영역이 너무 넓어서 갈피를 잡기 어렵고 공부 범위도 매우 넓다.
m1k1o/blog 이미지의 경우 단순 피드형식의 블로그 서비스로 개인형 페이스북이라고 생각하면 될 것 같다.
폐쇄형 방식으로 별도의 어드민 페이지가 없어 config 파일에서 관리자가 수동으로 각각 설정해줘야 한다.(프로필 사진 / 배경사진 / 친구 계정 등등 ...)
타임라인 식으로 되어있고 아래와 같은 특징이 있다.
특징
- 다크 모드, 레거시 테마 지원
- 모든 사람, 본인 또는 친구만 게시물을 볼 수 있도록 설정 가능
- 필요할 때만 표시되도록 타임라인에서 게시물 숨기기 기능
- 버튼 사용하여 이미지 업로드 (모바일용)
- 드래그 앤 드롭 사용하여 이미지 업로드
위에 작성된 특징 외에도 수 많은 특징이 존재한다.
구축
서비스를 docker-compose를 사용하여 올릴 것이기 때문에 docker-compose.yaml을 작성하면 된다.
그 전에, 데이터를 저장할 디렉토리 먼저 생성하도록 하자
$ mkdir -p /data/feed-blog/data
$ mkdir -p /data/feed-blog/data/static/images
생성 후 기본적인 컨피그를 미리 넣어둬야 한다.
$ vim /data/blog/config.ini
아래 내용을 사용자의 환경에 맞게 수정해주도록 하자. 앞에 ;
붙은건 주석처리이다.
[database]
;db_connection = sqlite
;sqlite_db = data/sqlite.db
;[database]
db_connection = mysql
;mysql_socket = /tmp/mysql.sock
mysql_host = mysql
mysql_port = 3306
mysql_user = root
mysql_pass = secret
db_name = blog
;[database]
;db_connection = postgres
;postgres_socket = /tmp/postgres.sock
;postgres_host = localhost
;postgres_port = 5432
;postgres_user = root
;postgres_pass = root
;db_name = blog
[profile]
title = Blog
name = Max Musermann
pic_small = static/images/profile.jpg
pic_big = static/images/profile_big.jpg
;cover = static/images/cover.jpg
[language]
lang = en
[components]
highlight = true
[custom]
theme = theme02
;header = data/header.html
;styles[] = static/styles/custom1.css
;styles[] = static/styles/custom2.css
;scripts = static/styles/scripts.css
;footer = "Edit this if you really want to remove my backlink :("
[bbcode]
;bbtags[quote] = "<quote>{param}</quote>"
[admin]
force_login = true
nick = demo
pass = demo
[friends]
;friends[user] = pass
;friends[user] = pass
[directories]
images_path = data/i/
thumbnails_path = data/t/
logs_path = data/logs/
[proxy]
;proxy = hostname:port
;proxyauth = username:password
;proxytype = CURLPROXY_HTTP ; default, if not set
;proxytype = CURLPROXY_SOCKS4
;proxytype = CURLPROXY_SOCKS5
;URL_PREFIX type:
;proxy = http://your.page.com/proxy.cgi?
;proxyauth = username:password
;proxytype = URL_PREFIX
[system]
;timezone = Europe/Vienna
version = 1.42
debug = false
logs = false
나는 MySQL을 사용할 것이기 때문에 [database] 섹션에서 MySQL 설정 값들의 주석을 해제하였다.
데이터가 기본 웹 사용자인 "www-data"로 생성되기 때문에 권한 또한 변경해주어야 한다.
$ chown -R www-data:www-data /data/feed-blog/
이제 docker-compose.yaml을 아래와 같이 작성하도록 하자
version: "3"
services:
blog:
image: m1k1o/blog:latest
depends_on:
- "mysql"
restart: always
container_name: blog
volumes:
- "./data:/var/www/html/data"
- "./config.ini:/var/www/html/config.ini"
environment:
- TZ=Asia/Seoul
ports:
- "8088:80"
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=blog
volumes:
my-data: {}
접속
컨테이너가 정상적으로 생성되었다면 http://<IP주소>:8088
으로 접근해보도록 하자.
로그인은 앞서 config.ini 파일의 [admin] 섹션에 있는 정보로 로그인 해주면 된다.
로그인을 하면 아래처럼 포스팅읋 작성할 수 있게 된다.
포스팅을 작성해보자.
마무리
스터디에서 간단한 공지용 목적으로 배포하면 좋을 것 같다.