사용환경: Linux(Ubuntu, CentOS), Apache, Node.js, Express, socket.io, php, etc...

 

Node.js를 통해 express를 돌리던 와중 에러가 발생

"NodeJS address already in use"

 

port를 이미 사용하고 있다고 에러문구가 출력되었다.

 

■ Node.js를 사용하던 와중에 서버를 강제로 종료하거나 예기치 않게 종료되지 않는 경우가 생긴다고 한다.

 

 

■ 해결방법

1. 포트가 이미 사용되고 있는지 확인

lsof -i TCP:3000

를 통해서 현재 사용중인 3000포트를 확인.

 

사용 중인 모든 포트를 종료 시키기.

 

kill -9  'PID'

 

PID번호를 입력시켜 해당 PID를 모두 종료시킨다.

 

종료시키고 확인해보면 깔끔하게 다 종료된다.

 

 

그리고 다시 서버 시작

 

node index.js

 

 

 

 

NodeJS address already in use 문제 해결 - JooTC

NodeJS address already in use 문제 해결 방법 Error: listen EADDRINUSE: address already in use :::5000 현재 다른 프로세스에서 사용 중이라 해당 서비스를 시작할 수 없다는 에러입니다.

jootc.com

 

반응형

■ 환경 및 툴

→ Linux(Ubuntu), Apache, Nodejs, socket.io, javascript, html, css, vscode

 

■ 특이점 

→ 외부 접속을 허용하였는데, 해당 서버가 제대로 작동하지 않는 상황

Apache + Node.js + Express 를 통해 3000포트 접속을 허용하고 웹서버를 띄웠다.

 

이 때 외부 IP를 입력해서 들어간 경우에는 안되었고, vscode에서 웹브라우저를 띄웠을 때 및 localhost:3000 로 접속하였을 때는 동작하였다.

localhost를 통해 접속하였을 땐 동작 / 성공 CONSOLE

외부 아이피 주소 112.~ 로 접속하였을 때는 실패하였다. CORS 오류나면서.

 

아무래도 이전 포스팅과 연결되는 말인 것 같지만,

 

처음 이 현상을 발견하게 된 것이 VSCODE에서 뇌가 하얗게 되어 무지성으로 클릭하다가 우연찮게 발견하여 클릭하고 발견한 웹 브라우저 띄우기. 

cors 오류 반환.

예전에도 localhost 환경에서 axios를 사용할 때 해당하는 CORS 오류가 출력되었는데, 이 때 비슷한 에러가 출력되었던 것도 같다.

즉, 내부포트로 접속할 수 있는 환경에서 왜 굳이 외부포트로 접속하냐 이런 느낌.

실패 사진

 

 

 

 

[ Socket.io ] 웹소켓을 이용해 데이터 전달 방식의 사고 및 결정

지난 3주동안 업무 중에 웹소켓 구현에 대해 공부하고, 해당 내용을 구현할 방법을 구상하였다. ■ 서버를 통한 외부 접속 방식 - 데이터가 인터넷을 통해 서버로 송출, - 서버에서 (외부 접속을

code-hoon.tistory.com

 

반응형

 

지난 3주동안 업무 중에 웹소켓 구현에 대해 공부하고, 해당 내용을 구현할 방법을 구상하였다.

 

■ 서버를 통한 외부 접속 방식

 

  - 데이터가 인터넷을 통해 서버로 송출,
  - 서버에서 (외부 접속을 통해) 데이터를 수신하고, 로직을 처리.
  - 데이터베이스 저장(할 필요가 없는데도).
  - 서버에서 웹소켓을 통해 데이터 송출
  - 키오스크에서 데이터 수신

이렇게 진행하려고 하였다.

 

■ 에러 사항

1. 웹소켓에 대한 지식이 전무.

2. 실제 예제 연습 중에 윈도우에서는 처리가 되었지만, 리눅스 서버에서 예제를 똑같이 구현해도 같은 결과가 발생하지 않음

  → 리눅스(Ubuntu)에서 Apache 웹 서버를 띄운 상태에서의 추가적인 제약사항. (해결완료)
  → 외부접속을 통해 처리해야하는데 내부접속을 할 수 밖에 없었던 점. (해결못함) 

 

■ 방향의 전환

- 아마 소장님께서 지나가듯이 말씀하셨었다. 
'만약 구현이 제대로 안되는 것 같으면 그냥 윈도우에서 돌리면 어때?  어차피 윈도우 통해서 데이터 받아들이니까.'
이 말씀을 그때는 정신이 팔려서 잘 안들렸지만, 혼자 끙끙대면서 구현해보고, 구상하다보니 마침내 도달한 결론이 되었다...
머쓱.

그래서 기존에는 그림과 같이 카메라→NUC→서버→NUC→키오스크 였는데, 
카메라→NUC→키오스크로 변경하려고 한다. (실제로는 아직 안해봄)
구현 가능성이 넘쳐보이니 일단 시도하려고 한다.

 

 

1단계가 끝나면 그림2와 같이 2단계도 진행하고, 마지막 3단계도 준비되어 있다. 

#WEBSOCKET #SOCKET.IO 

반응형

사용환경 : Window10 (pro)

 

리눅스같은 os에서는 바로 실행하면 되지만 윈도우는 직접 그 디렉터리 내로 들어가 실행해야 한다.

/c/ProgramData/ComposerSetup/bin

특정한 조작없이 Composer의 기본 경로는 위와 같다. 

 

이제 이 위치에서 update를 해주면 된다.

$ composer self-update

Administrator의 권한이 필요하다고 나오는데, y 를 입력해주면 된다.

 

 

버전 롤백은

composer self-update --rollback 을 작성해준다.

 

 

 

How to update Composer in Windows 10

I am using Composer for my PHP project. I am new to Composer. Now when I update my dependencies using composer update command, it is saying that my Composer version is too old and ask me to update....

stackoverflow.com

 

반응형

 

 

str_replace() : 해당 문자열을 변경
substr_replace() : 해당 문자열부터 변경 혹은 특정 규칙을 적용

 

■ STR_REPLACE()

$letter = "ABCDEFGCDE";
$result = str_replace ( "CD", "ZZ", $letter ) ;
echo $result;  // 결과 :  ABZZEFGZZE

이렇게 "해당"문자열만을 변경할 수 있는 방법이 있고,

$letter = "ABCDEFGCDE";
$result = str_replace ( "CD", "ZZ", $letter, $count ) ;
echo $result;  // 결과 :  ABZZEFGZZE
echo $count;  // 결과 :  2

해당 문자열을 몇 번 교체했는지 알 수 있다.

 

■ SUBSTR_REPLACE()

 

$letter = "ABCDEFGCDE";
$result = substr_replace ( $letter, "ZZ", 3 ) ;
echo $result;  // 결과 :  ABCZZ

 

해당 인덱스부터 까지의 문자 모두 대체된 것을 확인할 수 있다.

 

이를 응용하여, 출력한 글자의 길이가 몇글자를 넘어가면 나머지를 "..."으로 대체하는 방법이 있다.

 

$letter = "ABCDEFGCDE";
$result = substr_replace ( $letter, "ZZ", 3, 0) ;
echo $result;  // 결과 :  ABCZZDEFGCDE

 

3번째 인덱스를 가진 문자열에 "ZZ"를 넣을 수 있다. 
뒤의 숫자는 ZZ를 넣으면서 대체할 문자열의 개수라고 생각하면 된다.
(0으로 설정했으니까 0개가 대체된다. 2개를 대체했다면, DE가 대체된다.

 

 

 

 

 

이상입니다.

반응형

Access to XMLHttpRequest at 'http://url/fileName' from origin 'http://url:port-number' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

xhr.js?b50d:210 POST http://url/fileName net::ERR_FAILED 200

Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'data') at eval (fileName.vue?1c92:239)

 

■ 에러 발생

Vue.js 3 에서 Axiospost 혹은 get을 사용해 php에 데이터를 요청해 결과 데이터를 불러오려는데 에러가 발생하였다.

이는 BackEnd (php) 에서 url요청 허용을 해놓지 않았기 때문에 발생한 에러이다.

그렇기 때문에 php파일에서 간단하게 추가해야한다.

 

<?php
header('Access-Control-Allow-Origin:*');
 

이렇게 작성하면 되는데, 만약 다른 상세한 설정(PUT, DELETE 등) 도 추가하려면 아래의 내용까지 추가해주면 된다.

header('Access-Control-Max-Age: 86400');
header('Access-Control-Allow-Headers:x-requested-with');
header('Access-Control-Allow-Methods:GET, POST, PUT, DELETE, OPTIONS');

 

이상입니다.

 

결과 console window
출력 내용

console.log('axios')
console.log(response) 

 

 

반응형

sudo service apache2 start / restart 에러

systemctl status apache2.service
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Wed 2021-10-27 14:16:45 KST; 16min ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 475439 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)

10월 27 14:16:45 server systemd[1]: Starting The Apache HTTP Server...
10월 27 14:16:45 server apachectl[475447]: apache2: Syntax error on line 231 of /etc/apache2/apache2.conf: Could not open configuration file /etc/phpmyadmin/apache.conf: No such file or directory
10월 27 14:16:45 server apachectl[475439]: Action 'start' failed.
10월 27 14:16:45 server apachectl[475439]: The Apache error log may have more information.
10월 27 14:16:45 server systemd[1]: apache2.service: Control process exited, code=exited, status=1/FAILURE
10월 27 14:16:45 server systemd[1]: apache2.service: Failed with result 'exit-code'.
10월 27 14:16:45 server systemd[1]: Failed to start The Apache HTTP Server.

환경: Linux Ubuntu 20.0.4LTS, PHP8, Apache 사용

사전 작업 : php7.4 -> php 8.0으로 업그레이드 (완료)

 

이에 해당하는 에러를 어떤 사람이 /etc/apache2/apache2.conf  파일의 수정을 통해 해결했다는 내용이 있었다.

 

이에 맞춰 apache2.conf 를 자세히 보던 와중 에러 문구가 눈에 띄었다.

phpmyadmin 부분에서 문제라는 것을 확인하였다. 

 

그래서 과감하게 (사실은 소심하게 주석까지 해주면서ㅋㅋ)  phpmyadmin을 사용하지 않으니 해당 부분을 주석처리하여 서버(server)를 구동할 때 해당 부분을 읽지 않게 하였더니 성공.

=> 하지만 이것은 phpmyadmin을 사용하시는 분들은 하면 안된다는 것을 확인해주세요.

 

아무래도 php 버전 업그레이드(7.4->8.0 upgrade)를 하면서
phpmyadmin 고유의 데이터베이스(database)를 놓고,

해당 부분을 추가적으로 손보지 않았기 때문에 이러한 에러가 발생한 것 같았다.

 

그리고 이제 다시 restart를 해보니 성공.

 

 

이상입니다.

 

apache2 error Could not open configuration file /etc/apache2/conf.d/: No such file or directory

I have just upgraded my Ubuntu 13.10 and apache2 is not working. When I try to start the apache2 server it is printing following errors: * Starting web server apache2 * The apache2 configtest fa...

askubuntu.com

 

How can I start apache2 from error code=exited status=1 | DigitalOcean

Im a web developer and im new in Ubuntu, I have days trying to install apache2 to work with php. But I always get this error starting Apache2: ``` Job for apache2.service failed because the control process exited with error code. See 'systemctl status

www.digitalocean.com

 

apache restart 오류 질문입니다

우분투 서버이구요 index죽이기 하려고 했는데 mod_write 가 설치 안되어있는 것같아 구글링해서 설치하던 중  service apache2 restart를 했는데 아래와 같이 나옵니다..   Job for apache2.service f

www.cikorea.net

 

How to Upgrade from PHP 7.x to PHP 8 on Ubuntu (Apache) - DevAnswers.co

How-to guide on upgrading PHP 7.x to PHP 8 on Ubuntu (Apache). Remove PHP 7.x and Install PHP 8 on Ubuntu (Apache)

devanswers.co

 

반응형
Error:  You are using an unsupported version of Node. Please update to at least Node v12.14
    at assertSupportedNodeVersion

Error:  You are using an unsupported version of Node. Please update to at least Node v12.14 at assertSupportedNodeVersion

그래서 업데이트를 진행하였는데 추가적인 에러가발생하여 node 자체를 지우고 재설치를 하게되었다.

 

 

1. node.js 제거 과정 (디렉터리와 bash 내용을 전부 삭제)

sudo rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node* /usr/local/lib/dtrace/node.d ~/.npm ~/.node-gyp /opt/local/bin/node /opt/local/include/node /opt/local/lib/node_modules 

sudo rm -rf /usr/local/lib/node* ; sudo rm -rf /usr/local/include/node* ; sudo rm -rf /usr/local/bin/node*

sudo apt-get purge nodejs npm

 

2. node.js 설치과정

sudo apt install nodejs

sudo apt install npm

// cache 제거. 안해주시면 에러 발생가능성이 있습니다.
sudo npm cache clean -f 

// 전역에서 사용가능하게 npm을 n이라는 이름으로 다운로드
sudo npm install -g n

// 안정화 버전을 설치
sudo n stable

 

3. 확인

node -v
v16.13.0

npm -v
8.1.0

 

 

자꾸 오류 나고 그래서 삭제만 8번 넘게 진행한 것 같네요.

억울하고 분통터져

원래 뭘 진행하려고 했는지도 머리속에서 증발하게 되었습니다. ㅎㅎ 
다시 무엇을 하려고했는지 떠나요~

 

 

참고

 

[Node] Node.js, NPM 최신버전으로 업그레이드하기

기존 node.js 가 설치 되어 있다고 가정하에 업그레이드를 진행합니다. Node.js Upgrade 1. 현재 Node.js 버전확인 $ node -v 2. cache 삭제 $ sudo npm cache clean -f 3. n 모듈 설치 $ sudo npm install -g n 4..

eomtttttt-develop.tistory.com

 

npm Error: Cannot find module 'semver'

I get the following error when I try to run npm command root@localhost:# npm --version internal/modules/cjs/loader.js:584 throw err; ^ Error: Cannot find module 'semver'...

superuser.com

 

 

Ubuntu – Npm can’t find module “semver” error in Ubuntu 19.04 – iTecTec

I am getting the following error whenever I try to run npm command. internal/modules/cjs/loader.js:626 throw err; ^ Error: Cannot find module 'semver' Require stack: - /usr/share/npm/lib/utils/unsupported.js - /usr/share/npm/bin/npm-cli.js at Function.Modu

itectec.com

기타 등등..

반응형

+ Recent posts