스마트에디터를 연동했는데, /smarteditor28/SmartEditor2Skin.html 해당 파일 접근이 안된다고 나온다.

 

해당 폴더에 권한도 줘봤지만 무용지물

 

찾아보니 PHP-FPM 보안 문제라고 한다.

 

기본적으로 보안을 위해 PHP 확장자 파일만 열수있다.

 

그래서 보안을 허용하는 로직을 주석 해제 해야한다.

 

php 설정파일 접근

cd /etc/php/7.4/fpm/pool.d/www.conf

 

소스를 찾아 주석을 해체하거나 추가해 준다.

security.limit_extensions = .php .php3 .php4 .php5 .php7 .html .htm

 

마지막으로 재기동

service php7.4-fpm restart

신규 서버를 세팅하면서, NodeJs와 Mysql을 연동하는데 자꾸 커넥션이 안됐다.

처음에는 권한쪽을 모두 살펴봤는데, 아무 이상없다.

 

그렇게 몇시간 삽질하다가 passwd 플러그인 문제일수도 있다는 글을 보았다.

 

 

select host, user, plugin, authentication_string from mysql.user;

이렇게 쿼리를 날렸을때 해당 계정의 플러그인이 caching_sha2_password 이라면 안된다.

 

ALTER USER '계정ID'@'%' IDENTIFIED WITH mysql_native_password BY '패스워드';

위와 같이 mysql_native_password 로 변경해줘야한다.

 

바꾸니 잘된다;;;

 

 

직접 패치하다 보면, 중요 설정파일은 잘못 올릴 수도 있기 때문에 서버에서 따로 관리해야 합니다.

스크립트 파일로 한 번에 관리하면 쉽게 패치가 가능합니다.

 

dist.sh

echo "************************************"
echo "**start date: " `date +"%Y-%m-%d %H:%M:%S"`
echo "************************************"
echo "**sync source"

echo "git pull..."
cd test1
git pull origin main # Branch 지정

echo "reconfiguration files..."
cp -f /home/test/reconfig/* /home/server/test/config/  # 패치 후 기존 설정파일을 덮어씌운다. 
          
echo "copy source to wwwroot..."

echo "******************************************"
echo "**finished date: " `date +"%Y-%m-%d %H:%M:%S"`
echo "******************************************"

exit 0

 

 

스크립트 실행

sudo ./dist.sh

 

PM2 로그 경로 설정 명령어

sudo pm2 start --name test -o /data/test/test.log -e /data/test/test_error.log app.js

하지만 로그 경로가 바뀌거나 하면, 다시 명령어를 쳐야 하는 문제가 존재합니다.

 

아래와 같이 설정파일을 생성하면 쉽게 관리가 가능합니다.

ecosystem.config.js

module.exports = {
  apps : [{
    name: 'test',
    script: './test/app.js',
    instances: 1,
    exec_mode: "cluster",
    autorestart: true,
    watch: false,
    output:"/data/test/test-out.log",
    error:"/data/test/test-error.log",
    env_production: {
      NODE_ENV: "production",
    }
  }],

  config : {
	days_interval : 2,
        max_size : 10
  },

  deploy : {
    production : {
      user : 'SSH_USERNAME',
      host : 'SSH_HOSTMACHINE',
      ref  : 'origin/master',
      repo : 'GIT_REPOSITORY',
      path : 'DESTINATION_PATH',
      'pre-deploy-local': '',
      'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production',
      'pre-setup': ''
    }
  }
};

 

위와 같이 파일을 만들고 해당 경로에서 아래와 같이 PM2를 실행하면 됩니다.

sudo pm2 start --only test

 

비동기와 멀티스레드는 같은 뜻이 아닙니다.

해당 의미를 정확하게 이해해야 업무에 큰 도움이 됩니다. (제가 그랬어요..)

 

의미를 간단하게 정리하자면 아래와 같습니다.

동기=  순서 

스레드= 공간 or 일꾼

 

그럼 이제, 하나씩 살펴보겠습니다.

 

동기: 순차적으로 실행되는 것

비동기: 요청은 받은 뒤 먼저 작업이 끝난 순으로 실행되는 것

 

 

단일스레드: 프로세스가 단일로 동작하는 것

    대표적인예로 자바스크립트가 단일스레드 언어입니다.

멀티스레드: 프로세스가 다중으로 동작하는 것

 

경우의 수가 아래와 같이 총 4개가 있습니다.

  1. 단일 스레드 — 동기
  2. 멀티 스레드 — 동기
  3. 단일 스레드 — 비동기
  4. 멀티 스레드 — 비동기

 

이해하기 쉽게 식당으로 예시를 들어보겠습니다.

 

1. 단일 스레드 — 동기

  본점에서 음식을 주문 -> 조리 완료 -> 다음 주문받음

 

2. 멀티 스레드 — 동기

   본점,1호점,2호점 중 한곳에서 음식을 주문 -> 조리 완료 -> 다음 주문받음

 

3. 단일 스레드 — 비동기

   본점에서 음식을 주문 -> 조리 및 주문받기 -> 조리가 빠른 순서대로 제공

 

4. 멀티 스레드 — 비동기

    본점,1호점,2호점 중 한 곳에서 음식을 주문 -> 조리 및 주문받기 ->  조리가 빠른 순서대로 제공

 

요즘 웹사이트는 비동기로 만들어지는 추세입니다.

 

지금까지의 설명을 들어보면 멀티 스레드 — 비동기 가 제일 좋아 보이지만,

코드가 복잡해지고 공수도 많이 발생하게 됩니다.

 

고객의 니즈를 정확하게 파악하여 상황에 맞게 선택하시길 바랍니다.

'웹 (web)' 카테고리의 다른 글

스마트에디터 Access denied 오류 해결  (0) 2023.05.25
NodeJs, mysql과 연동시 에러  (0) 2023.02.22
서버 패치 스크립트로 쉽게 관리하기  (0) 2023.01.25
PM2 로그 설정 쉽게 하기  (0) 2023.01.25
그누보드 소개  (0) 2017.08.26


그누보드를 써본 사람은 제로보드보다 더 좋다고 얘기합니다.


제로보드는 디자인은 훌륭하지만 보안이 매우 취약합니다.


그리고 그누보드에는 여러가지 직관적이고 편리한 기능이 있습니다.


그누보드5 다운로드 --> https://sir.kr/g5_pds/3716



그누보드 5에서는 웹표준 코드를 사용하여 깔끔한 코드가 적용됩니다.



 유튜브 강좌등을 참고하면서 보면 그누보드5를 활용하여 간단한 커뮤니티사이트 만드는 방법을 배울 수 있습니다.


직접 처음부터 코드를 짜면서 구축하면 매우많은 도움이 됩니다.


하지만 매우많은 시간과 노가다가 필요하다는 단점이 있지요.


그누보드를 완벽한 공부의 목적으로 사용하는것은 비추합니다.


그렇다고 아예 몰라도 안됩니다!


그누보드에 있는 메뉴 , 기능만 사용할빠에는 네이버 카페를 사용하겠죠


자신이 직접 꾸밀 수있을정도의 실력이 필요합니다.


frs.dothome.co.kr 


그누보드를 이용하여 구축해봣습니다.


물론 소스를 몇가지 수정 했지만요.. 



그럴듯한 사이트같지 않나요?


ㅎㅎ









+ Recent posts