-

[링크 : https://gist.github.com/RedactedProfile/ac48c270d2bbe739f9f3]

[링크 : https://ckeditor.com/docs/ckeditor4/latest/examples/fileupload.html]

[링크 : https://hashcode.co.kr/questions/3187/nodejs-ckeditor로-이미지를-올리기]

[링크 : https://www.npmjs.com/package/ckeditor]


+

2019.03.08

cke4_node.zip


ckeditor 4.11 을 기준으로 만든거고, 5.x 대에도 가능한지는 아직 테스트 하지 못함

express -e

를 이용하여 ejs로 express-generator로 생성후 아래의 파일을 수정함


index.js

var express = require('express');
var path = require('path');
var uuid = require('uuidv4');
var router = express.Router();

var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();

/* GET home page. */
router.get('/', function (req, res, next) {
res.render('index', { title: 'Express' });
});

router.post('/uploader', multipartMiddleware, function (req, res) {
var fs = require('fs');

var orifilepath = req.files.upload.path;
var orifilename = req.files.upload.name;
var srvfilename = uuid() + path.extname(orifilename);
fs.readFile(orifilepath, function (err, data) {
var newPath = __dirname + '/../public/uploads/' + srvfilename;
fs.writeFile(newPath, data, function (err) {
if (err) console.log({ err: err });
else {
html = "{\"filename\" : \"" + orifilename + "\", \"uploaded\" : 1, \"url\": \"/uploads/" + srvfilename + "\"}"
console.log(html)
res.send(html);
}
});
});
});

module.exports = router;


index.ejs

4.11과 4.9 둘 다 작동되는 것 확인

<!DOCTYPE html>
<html>

<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
<!-- <script src="https://cdn.ckeditor.com/4.11.3/standard/ckeditor.js"></script> -->
<script src="https://cdn.ckeditor.com/4.9.0/standard/ckeditor.js"></script>
</head>

<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>

<form>
<textarea id="ckeditor" name="content"></textarea>
</form>

<script>
CKEDITOR.replace('ckeditor', {
uploadUrl: '/uploader'
});
</script>
</body>

</html>


+

ckeditor 5 기준. 4랑 비교해서 에디터 생성하는 방법을 제외하면 동일하게 작동한다.

index.ejs

<!DOCTYPE html>
<html>

<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
<script src="https://cdn.ckeditor.com/ckeditor5/12.0.0/classic/ckeditor.js"></script>
</head>

<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>

<form>
<textarea id="ckeditor" name="content"></textarea>
</form>

<script>
ClassicEditor
.create(document.querySelector('#ckeditor'), {
language: 'ko',
ckfinder: {
uploadUrl: '/uploader'
}
})
.catch(error => {
console.error(error);
});
</script>
</body>

</html>


[링크 : https://okky.kr/article/461219]

[링크 : https://www.cikorea.net/bbs/view/qna?idx=19725&view_category=&lists_style=]

[링크 : https://ckeditor.com/docs/ckeditor4/latest/guide/dev_file_upload.html]


[링크 : https://stackoverflow.com/questions/17699763/ckeditor-using-and-integration-in-node-js-web-page]

[링크 : https://stackoverflow.com/questions/21378630/node-js-sails-js-wysiwyg-editor-images]

[링크 : https://github.com/sca-/sails-ckeditor-sample]



'프로그램 사용 > ckeditor(웹에디터)' 카테고리의 다른 글

ckeditor full과 standard 그리고 옵션 설정  (0) 2019.04.03
ckeditor 모드별 모양  (0) 2019.03.08
ckeditor / fckeditor?  (0) 2014.07.16
ckeditor 사용하기  (0) 2013.02.22
fckeditor plugin for squirrelMail  (0) 2011.06.14
Posted by 구차니
프로그램 사용/nginx2019. 3. 7. 14:27

일단 프록시 설정이 먼가 잘못되었나 싶어서 고민했는데

알고보니.. 망할 포트를 잘못 설정해서 502 bad gateway 뿜뿜..

결론은.. 머.. 잘 돌아가는 것으로 보인다?


// 홈페이지 1

    server {

        listen       80;

        server_name domain.co.kr www.domain.co.kr;

        location / {

                proxy_pass http://localhost:20000/;

                proxy_set_header X-Real-IP $remote_addr;

                proxy_set_header Host $host;

                proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;

        }

    }


// 홈페이지 2, 특정 하위 주소에 다른 서비스를 연결함

    server {

        listen       80;

        server_name domain2.co.kr www.domain2.co.kr;

        location / {

                proxy_pass http://localhost:30000/;

                proxy_set_header X-Real-IP $remote_addr;

                proxy_set_header Host $host;

                proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;

        }


        location /sub1 {

                proxy_pass http://localhost:40000/;

                proxy_set_header X-Real-IP $remote_addr;

                proxy_set_header Host $host;

                proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;

        }

    }


// 다른 서비스로 연결되는 녀석을 서브 도메인으로 연결

    server {

        listen       80;

        server_name sub1.domain2.co.kr;

        location / {

                proxy_pass http://localhost:40000/;

                proxy_set_header X-Real-IP $remote_addr;

                proxy_set_header Host $host;

                proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;

        }

    } 


// 홈페이지 3, 서비스를 서브 도메인으로도 연결

    server {

        listen       80;

        server_name sub2.domain2.co.kr;

        location / {

                proxy_pass http://localhost:50000/;

                proxy_set_header X-Real-IP $remote_addr;

                proxy_set_header Host $host;

                proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;

        }

    }


'프로그램 사용 > nginx' 카테고리의 다른 글

nginx 리버스 프록시 와 ckeidtor upload 413 에러  (0) 2019.04.03
nginx 502 bad gateway와 audit  (0) 2019.03.20
nginx load balance  (0) 2019.03.05
nginx reverse proxy  (2) 2018.10.30
nginx fastcgi 캐싱  (0) 2015.09.10
Posted by 구차니
프로그램 사용/LVM2019. 3. 5. 13:07

LVM은 Logical Volume Manager의 약자이다.

꽤 오래전부터 기본으로 사용은 했는데 싫어서 매번 삭제하고 임의로 ext3나 ext4로 써왔는데

서버 밀면서 처음 써보다 보니 헤매고 있다.. -_ㅠ


아무튼 정리하자면

PV(Physical Volume)

VG(Volume Group)

LV(Logical Volume)


앞의 세개가 접두이고, 그 이후에 명령어들이 존재한다.

pvchange   pvck       pvcreate   pvdisplay  pvmove     pvremove   pvresize   pvs        pvscan 

lvchange     lvcreate     lvextend     lvmconf      lvmdiskscan  lvmetad      lvmsadc      lvreduce     lvrename     lvs

lvconvert    lvdisplay    lvm          lvmconfig    lvmdump      lvmpolld     lvmsar       lvremove     lvresize     lvscan 

vgcfgbackup    vgck           vgdisplay      vgimport       vgmknodes      vgrename       vgsplit

vgcfgrestore   vgconvert      vgexport       vgimportclone  vgreduce       vgs
vgchange       vgcreate       vgextend       vgmerge        vgremove       vgscan


PV는 /dev/sd? 에 매핑되는 녀석으로 물리적 하드에 대한 관리를 하게되고 VG는 PV를 기반으로 생성하게 된다. 

기존의 Volume Group에 추가하려면 vgextend

새로운 Volume Group으로 Physical Volume을 추가하려면 vgcreate로 하면 된다.

Use vgcreate(8) to create a new VG on the PV, or vgextend(8) to add the PV to existing VG. 


그리고 PV를 VG로 묶을때 설정에 따라 RAID 처럼 묶을수도 있고 JBOD으로 묶을수도 있다.


생성 순서로 보면

# pvcreate /dev/sd??

# vgcreate vgname /dev/sd??

# lvcreate -L 용량 vgname -n lvname


Centos7 기준

/dev/mapper/centos-[lvname]

/dev/centos/lvname

/dev/dm-0

/dev/dm-1


식으로 되어있는데

/dev/dm-? 이 실제 장치이고

그 외에는 전부 심볼릭링크로 /dev/dm-? 으로 연결되어 있다.


[링크 : https://jangpd007.tistory.com/235]

[링크 : https://sgbit.tistory.com/13]

[링크 : https://support.hpe.com/hpsc/doc/public/display?docId=emr_na-c01847647]

[링크 : https://closed0402.tistory.com/103]

[링크 : https://support.hpe.com/hpsc/doc/public/display?docId=emr_na-c01847647]


+

selinux가 또 태클을 거는데..

mount: /home/test does not contain SELinux labels.

       You just mounted an file system that supports labels which does not

       contain labels, onto an SELinux box. It is likely that confined

       applications will generate AVC messages and not be allowed access to

       this file system.  For more details see restorecon(8) and mount(8).


이것만 해서는 안되고.. 서버 리부팅 까지 해주니 마운트가 되네.. 머냐...

# restorecon -Rv /raid1

# fixfiles relabel 

[링크 : https://linuxbuff.wordpress.com/tag/redhat/]

'프로그램 사용 > LVM' 카테고리의 다른 글

lvm as ssd cache  (0) 2022.02.14
애증의.. LVM? centos 기본값 설치에서 변형했더니...  (0) 2019.03.05
lvm raid  (0) 2019.01.15
LVM - Logical Volumegroup Management  (0) 2009.01.22
Posted by 구차니
프로그램 사용/LVM2019. 3. 5. 11:33

어라.. RAID-6 볼륨이 원래 4.36TB 인데

lvm 으로 해서 4.74TB가 잡혀서 어디서 왔나 했더니..

SSD랑 HDD랑 같은 pool로 잡혀서 그런식으로 걸쳐 있는 듯?


pool 부터 다시 잡아야 하나.. 아니면 런타임에 pool을 변경이 가능하려나?


ssm 이라는 녀석 설치!

# yum install system-storage-manager 

[링크 : https://www.linuxsysadmin.biz/lvm-gui-centos-7/]


# ssm list

-------------------------------------------------------------

Device        Free       Used      Total  Pool    Mount point

-------------------------------------------------------------

/dev/sda                       465.25 GB          PARTITIONED

/dev/sda1                        1.00 GB          /boot

/dev/sda2  4.00 MB  464.24 GB  464.25 GB  centos

/dev/sdb                         4.36 TB

/dev/sdb1  0.00 KB    4.36 TB    4.36 TB  centos

-------------------------------------------------------------

------------------------------------------------

Pool    Type  Devices     Free     Used    Total

------------------------------------------------

centos  lvm   2        4.00 MB  4.82 TB  4.82 TB

------------------------------------------------

--------------------------------------------------------------------------------------

Volume             Pool    Volume size  FS     FS size       Free  Type    Mount point

--------------------------------------------------------------------------------------

/dev/centos/root   centos     50.00 GB  ext4  50.00 GB   43.00 GB  linear  /

/dev/centos/swap   centos     31.44 GB                             linear

/dev/centos/samba  centos      4.74 TB  ext4   4.74 TB    4.46 TB  linear  /home/samba

/dev/sda1                      1.00 GB  ext4   1.00 GB  787.87 MB  part    /boot

--------------------------------------------------------------------------------------


개념부터 봐야겠다..

[링크 : https://kit2013.tistory.com/199]



+

 # df -h

Filesystem                Size  Used Avail Use% Mounted on

/dev/mapper/centos-root    50G  4.3G   43G  10% /

devtmpfs                   32G     0   32G   0% /dev

tmpfs                      32G     0   32G   0% /dev/shm

tmpfs                      32G   11M   32G   1% /run

tmpfs                      32G     0   32G   0% /sys/fs/cgroup

/dev/sda1                 976M  150M  760M  17% /boot

/dev/mapper/centos-samba  4.8T   89M  4.5T   1% /home/samba

tmpfs                     6.3G     0  6.3G   0% /run/user/0

tmpfs                     6.3G  4.0K  6.3G   1% /run/user/42

tmpfs                     6.3G   44K  6.3G   1% /run/user/1000 

# lvdisplay

  --- Logical volume ---

  LV Path                /dev/centos/samba

  LV Name                samba

  VG Name                centos

  LV UUID                9Aa0oO-Ndwh-5IfX-O5vW-KZ8Z-tAFF-RBcKLq

  LV Write Access        read/write

  LV Creation host, time localhost, 2019-03-05 10:32:46 +0900

  LV Status              available

  # open                 1

  LV Size                <4.74 TiB

  Current LE             1242061

  Segments               2

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:2


  --- Logical volume ---

  LV Path                /dev/centos/swap

  LV Name                swap

  VG Name                centos

  LV UUID                uYmqZR-s3FZ-w56s-97cm-eaYn-Vj6Y-SEvcWS

  LV Write Access        read/write

  LV Creation host, time localhost, 2019-03-05 10:32:50 +0900

  LV Status              available

  # open                 2

  LV Size                <31.44 GiB

  Current LE             8048

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:1


  --- Logical volume ---

  LV Path                /dev/centos/root

  LV Name                root

  VG Name                centos

  LV UUID                8PH4I2-Amfo-YuDh-J9h5-Hwhq-jSjZ-MrEUNK

  LV Write Access        read/write

  LV Creation host, time localhost, 2019-03-05 10:32:50 +0900

  LV Status              available

  # open                 1

  LV Size                50.00 GiB

  Current LE             12800

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:0


# pvdisplay

  --- Physical volume ---

  PV Name               /dev/sda2

  VG Name               centos

  PV Size               <464.25 GiB / not usable 3.00 MiB

  Allocatable           yes

  PE Size               4.00 MiB

  Total PE              118847

  Free PE               1

  Allocated PE          118846

  PV UUID               bxRHju-AXnI-7xwe-MEo5-LNWq-A0tw-VngA83


  --- Physical volume ---

  PV Name               /dev/sdb1

  VG Name               centos

  PV Size               4.36 TiB / not usable 2.00 MiB

  Allocatable           yes (but full)

  PE Size               4.00 MiB

  Total PE              1144063

  Free PE               0

  Allocated PE          1144063

  PV UUID               Z2jJnF-h4Uu-T0gF-yKyb-jSat-wPMr-7j2RtC


'프로그램 사용 > LVM' 카테고리의 다른 글

lvm as ssd cache  (0) 2022.02.14
LVM 관리  (0) 2019.03.05
lvm raid  (0) 2019.01.15
LVM - Logical Volumegroup Management  (0) 2009.01.22
Posted by 구차니
프로그램 사용/nginx2019. 3. 5. 10:46

설정이 되어있는걸 보는데...

reverse proxy 용도가 아니라 load balance 용도로 설정을 해둔거였나...


[링크 : https://www.lesstif.com/pages/viewpage.action?pageId=35357063]

[링크 : http://nginx.org/en/docs/http/ngx_http_upstream_module.html]

Posted by 구차니
프로그램 사용/squid2019. 3. 1. 10:16

결과 코드들에 대해서 좀 더 자세히 나와있는데..

그래도 HIER_DIRECT를 어떻게 할 방법이 없나..


6.7 Squid result codes

The TCP_ codes refer to requests on the HTTP port (usually 3128). The UDP_ codes refer to requests on the ICP port (usually 3130). If ICP logging was disabled using the log_icp_queries option, no ICP replies will be logged.


The following result codes were taken from a Squid-2, compare with the log_tags struct in src/access_log.c:


TCP_HIT

A valid copy of the requested object was in the cache.


TCP_MISS

The requested object was not in the cache.


TCP_IMS_HIT

The client issued an IMS request for an object which was in the cache and fresh.


TCP_SWAPFAIL_MISS

The object was believed to be in the cache, but could not be accessed.


TCP_NEGATIVE_HIT

Request for a negatively cached object, e.g. "404 not found", for which the cache believes to know that it is inaccessible. Also refer to the explainations for negative_ttl in your squid.conf file.


TCP_MEM_HIT

A valid copy of the requested object was in the cache and it was in memory, thus avoiding disk accesses.


TCP_DENIED

Access was denied for this request.


TCP_OFFLINE_HIT

The requested object was retrieved from the cache during offline mode. The offline mode never validates any object, see offline_mode in squid.conf file. 

[링크 : http://www.comfsm.fm/computing/squid/FAQ-6.html#ss6.7]


6.10 Hierarchy Codes

The following hierarchy codes are used with Squid-2:


NONE

For TCP HIT, TCP failures, cachemgr requests and all UDP requests, there is no hierarchy information.


DIRECT

The object was fetched from the origin server. 

[링크 : http://www.comfsm.fm/computing/squid/FAQ-6.html#ss6.10]

'프로그램 사용 > squid' 카테고리의 다른 글

squid hierarchy  (0) 2019.03.14
squid url_rewrite_program  (0) 2019.03.14
squid hier/none direct 관련 설정  (0) 2019.02.27
squid용 인증서 관련 (인증서 변환하기)  (0) 2019.02.25
HSTS-HTTP Strict Transport Security / squid  (0) 2019.02.25
Posted by 구차니
프로그램 사용/docker2019. 2. 28. 15:51

현재 컨테이너의 상세 정보를 확인하는 용도

(컨테이너에 할당된 볼륨의 경로라던가)


[링크 : https://www.joinc.co.kr/w/man/12/docker/Guide/DataWithContainer]

[링크 : https://docs.docker.com/engine/reference/commandline/inspect/]

[링크 : http://pyrasis.com/book/DockerForTheReallyImpatient/Chapter20/14]

'프로그램 사용 > docker' 카테고리의 다른 글

docker cassandra selinux  (0) 2019.03.20
centos docker compose iptable error  (2) 2019.03.20
docker 복원하기  (2) 2019.02.27
docker 개념 다시 조사..  (0) 2019.02.01
docker 설명..  (0) 2019.02.01
Posted by 구차니
프로그램 사용/docker2019. 2. 27. 22:20

container의 내용을 저장하고 복구하는 방법


commit 으로 저장하고

save로 파일로 저장하고

load로 파일에서 불러와 복원한다


라는데 db도 되려나?


[링크 : https://blog.naver.com/chandong83/221006388637]

'프로그램 사용 > docker' 카테고리의 다른 글

centos docker compose iptable error  (2) 2019.03.20
docker inspect  (0) 2019.02.28
docker 개념 다시 조사..  (0) 2019.02.01
docker 설명..  (0) 2019.02.01
docker run = create + start  (0) 2019.02.01
Posted by 구차니
프로그램 사용/squid2019. 2. 27. 20:36

퇴근길에 검색하다가 우연히 발견한 문서

squid에서 HIER/NONE 이라고 뜨는 녀석은 캐싱이 안되는데

기본값으로 원래 서버로 요청을 돌려주도록 되어 있다고 한다.


parent가 누굴 지칭하는지 모르겠지만 global hit rate에는 영향을 못 미치면서 latency만 늘어난다라...


#  TAG: nonhierarchical_direct

# By default, Squid will send any non-hierarchical requests

# (matching hierarchy_stoplist or not cachable request type) direct

# to origin servers.

#

# If you set this to off, then Squid will prefer to send these

# requests to parents.

#

# Note that in most configurations, by turning this off you will only

# add latency to these request without any improvement in global hit

# ratio.

#

# If you are inside an firewall then see never_direct instead of

# this directive.

#

#Default:

# nonhierarchical_direct on 

[링크 : http://www.squid-cache.org/mail-archive/squid-users/200203/att-0514/squid.conf]


+

캐시 hierarchy 라는게 있어서 찾아보기..

[링크 : https://wiki.squid-cache.org/Features/CacheHierarchy]


+

헐?

[링크 : http://www.squid-cache.org/Doc/config/offline_mode/]

[링크 : https://stackoverflow.com/.../how-can-squid-be-configured-to-cache-all-downloaded-files]

'프로그램 사용 > squid' 카테고리의 다른 글

squid url_rewrite_program  (0) 2019.03.14
squid log code  (0) 2019.03.01
squid용 인증서 관련 (인증서 변환하기)  (0) 2019.02.25
HSTS-HTTP Strict Transport Security / squid  (0) 2019.02.25
squid as transparent proxy  (0) 2019.02.19
Posted by 구차니
프로그램 사용/apache2019. 2. 27. 12:54

virtualhost 라는 기능으로 구현이 가능한데..

웹 서버에서 하는건가? haproxy나 squid로 안되는걸려나? ㅠㅠ


[링크 : https://mynewparadigm.tistory.com/entry/1개의-ip로-2개의-도메인을-연결하는-방법]

[링크 : https://blog.readiz.com/29]

[링크 : https://hudi.kr/node-js-node-js-에서-vhost-사용/]


+

기본적으로 이 기능은 L4 에서 작동하는 것으로

apache / nginx / node.js 등에서 설정이 가능하다.

[링크 : https://stackoverflow.com/...-host-multiple-node-js-sites-on-the-same-ip-server-with-different-domain]

[링크 : https://www.joinc.co.kr/w/man/12/Nginx/virtualhost]

[링크 : https://gist.github.com/jakebellacera/590803]

[링크 : https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/]

'프로그램 사용 > apache' 카테고리의 다른 글

lets enceypt apache  (0) 2024.04.22
apache2 HSTS 활성화 하기  (0) 2024.04.18
mod_rewrite 테스트..  (4) 2017.04.12
mod_rewrite 로그설정  (0) 2017.04.12
라즈베리 파이 mod_rewrite 활성화  (0) 2017.04.11
Posted by 구차니