어제 우분투 20.04 를 올린 후 발생한 문제들에 대해서 짚어보기로 한다.

 

1. mysql 8 로 업그레이드 되면서 일부 config 제거 (cache_* 등이 먹히지 않았다.)

2. mysql strict mode가 켜짐

3. mysql 8에서 password function 이 제거되었고 groups keyword를 사용할수 없음

-> PASSWORD 로 처리된 부분들을 아래와 같이 처리하면 된다.

password = CONCAT('*', UPPER(SHA1(UNHEX(SHA1(:password)))))

4. php7.4 에서 Object class를 쓸수없음. "new Object" 또는 "extends Object" 로 된 부분들을 모두 BaseObject 로 바꿔주어야 함

-> 아래 명령어로 일괄 치환이 가능하다.

find ./ -name "*.php" -exec sed -i 's/new Object/new BaseObject/g' {} \;
find ./ -name "*.php" -exec sed -i 's/extends Object/extends BaseObject/g' {} \;

5. 설치만 해두고 안쓰던 서비스들이 죄다 재설치되면서 살아나면서 사용중인 서비스들과 포트충돌이 일어난다. --;;

기존에 포트가 충돌되는 서비스들의 포트를 변경해주거나 미사용 서비스들을 제거하여 충돌을 풀어준다. 

 

리액트 빌드 후 아파치에 배포하고자 할 때. 

빌드 디렉토리를 DocumentRoot 로만 잡았더니, sub path 일때 오류가 발생했다.

virtualhost 를 아래와 같이 설정하면 된다.

 

<VirtualHost *:8080>
  ServerName example.com
  DocumentRoot /var/www/httpd/example.com

  <Directory "/var/www/httpd/example.com">
    ...

    RewriteEngine on
    # Don't rewrite files or directories
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    # Rewrite everything else to index.html to allow html5 state links
    RewriteRule ^ index.html [L]
  </Directory>
</VirtualHost>

 

 

아래 커맨드로 재시작을 할 수 있다.

재시작을 한 뒤에는 502 화면이 뜨며 잠시 접속이 안될 수 있으니 유의.

 

gitlab-ctl restart

 

해결방법 1.

 

Repair Permissions

After you have identified and fixed the underlying cause (see below), you'll want to repair the permissions:

cd /path/to/repo.git sudo chgrp -R groupname . sudo chmod -R g+rwX . find . -type d -exec chmod g+s '{}' +

Note if you want everyone to be able to modify the repository, you don't need the chgrp and you will want to change the chmod to sudo chmod -R a+rwX .

If you do not fix the underlying cause, the error will keep coming back and you'll have to keep re-running the above commands over and over again.

Underlying Causes

The error could be caused by one of the following:

  • The repository isn't configured to be a shared repository (see core.sharedRepository in git help config). If the output of:

    git config core.sharedRepository

    is not group or true or 1 or some mask, try running:

    git config core.sharedRepository group

    and then re-run the recursive chmod and chgrp (see "Repair Permissions" above).

  • The operating system doesn't interpret a setgid bit on directories as "all new files and subdirectories should inherit the group owner".

    When core.sharedRepository is true or group, Git relies on a feature of GNU operating systems (e.g., every Linux distribution) to ensure that newly created subdirectories are owned by the correct group (the group that all of the repository's users are in). This feature is documented in the GNU coreutils documentation:

    ... [If] a directory's set-group-ID bit is set, newly created subfiles inherit the same group as the directory, and newly created subdirectories inherit the set-group-ID bit of the parent directory. ... [This mechanism lets] users share files more easily, by lessening the need to use chmod or chown to share new files.

 

 

 

해결방법 2.

난 이게 더 심플한거 같기도.

 

For Ubuntu (or any Linux)

From project root,

 

cd .git/objects

ls -al

sudo chown -R yourname:yourgroup *

 

You can tell what yourname and yourgroup should be by looking at the permissions on the majority of the output from that ls -al command

Note: remember the star at the end of the sudo line

 

회사에서 22포트로 외부로 나가는게 불가능해서, 내 서버의 ssh 는 22002로 변경을 해둔 상태인데, b 서버에 접근할일이 생겼다. 근데 곧장 sftp 를 쓰고자 하는데 ...


그럼 패킷을 포워딩 하면 어떨까 해서 방법을 찾아보니 iptables 로 하는방법이 있긴 하지만 매우 복잡, 비권장이라는 것에 정보를 더 찾아보니 socat 이라는게 존재했다.


사용법은 매우 간단하다.


Redirect TCP port 443 in localhost to checkwebcam.com port 80.

socat TCP-LISTEN:443,fork TCP:checkwebcam.com:80

fork parameter is required so that socat fork a new process for every connection attempt. If fork is not specified, socat will exit once a redirected connection closes, times out, or who knows what kind of error occurs.

Redirect UDP port 13443 in localhost to checkwebcam.com port 80.

socat UDP-LISTEN:13443,fork UDP:checkwebcam.com:80


내 서버에 x번 포트로 TCP/UDP 로 들어왔을때 어디로 전달할껀지만 지정하면 된다.

그리고 커맨드를 입력하면 해당 세션에서만 작동하기 때문에, 뒤에 & > /dev/null 을 붙여 background 에서 실행하도록 해주자. 


처음에 , 하고 fork 사이에 빈칸을 두었더니 '주소는 무조건 2개여야 합니다' 라는 오류가 떴다.

그러니 빈칸은 fork 다음에 한칸만 ..... 콤마 뒤에 무조건 스페이스를 넣는 습관이 있는분은 주의하시길, (;;)



참조 : http://palimpsest.minivi.com/socat/portforwarding/index.html

리눅스는 이전에 명령들을 기억합니다.

shell > history

를 치면 이전에 입력했던 명령어들이 나타납니다.

실행했던 명령어 리스트중 어떤 명령어를 실행시키고 싶으면 다음과 같이 합니다.

shell > !번호

를 입력하면 그 번호의 명령어를 실행합니다.

SSL인증서를 적용한 이후 웹서버 시작시에 암호를 묻는 경우가 있다.

아래처럼 진행해서 nokey 처리를 하면 된다.

 

# openssl rsa -in 기존KEY -out 생성KEY

 

물론 기존 key 파일은 백업을 먼저 해두자.

The link above provides detailed explanation with screenshots. It also has some other simple methods that could be tried before doing this manually. Since it is not accessible from some regions let me describe the method that worked for me.

  1. Go to the OpenPGP Public Key Server. There you can enter your key into the Search String field, leaving everything else as is, then click "Search!".
    When searching for a key, always prepend 0x to it! This means that, for example, you have to search for 0x6AF0E1940624A220 instead of 6AF0E1940624A220.
  2. Click on the link provided in the pub section. This should take you to page containing the key. The page's heading should be similar to Public Key Server -- Get "0x6AF0E1940624A220"
  3. Copy everything from underneath the title (starting from -----BEGIN PGP PUBLIC KEY BLOCK-----) and save it in a file (e.g. key1).
  4. Once you have the file, run the following command

    sudo apt-key add key1
    

You will get an "OK" response.

And you are done. Repeat the procedure of other keys that might be missing.

 

 

에러메시지에 보면 마지막 PUBLIC KEY 하고 뒤에 키값이 나온다....

OpenPGP Public Key Server 링크 클릭 후 그 키 값 앞에 0x 를 붙여서 검색..

그리고 나온 링크를 클릭하면 key 값이 나오는데 그걸 복사해서 저장한다.

그리고 sudo apt-key add 키파일명 을 해주고 apt-get update 를 다시 실행.

+ Recent posts