목차

개발 설정 on CentOS

CentOS/서버 설정

커널 업데이트

http://aeac.tistory.com/12

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum -y install yum-plugin-fastestmirror
yum --enablerepo=elrepo-kernel install kernel-ml

#after reboot
grub2-set-default 0

timezone

[ec2-user@ip-172-31-7-180 ~]$ date
Fri Aug  8 06:41:49 UTC 2014
 
[ec2-user@ip-172-31-7-180 ~]$ sudo date
Fri Aug  8 06:42:01 UTC 2014
 
[ec2-user@ip-172-31-7-180 ~]$ sudo cat /etc/localtime
TZif2UTCTZif2UTC
UTC0
 
[ec2-user@ip-172-31-7-180 ~]$ sudo rm /etc/localtime
 
[ec2-user@ip-172-31-7-180 ~]$ sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
 
[ec2-user@ip-172-31-7-180 ~]$ date
Fri Aug  8 15:48:27 KST 2014
 
[ec2-user@ip-172-31-7-180 ~]$ sudo date
Fri Aug  8 15:48:40 KST 2014

출처: https://ora-sysdba.tistory.com/entry/Cloud-Computing-Amazon-EC2-인스턴스의-TIMEZONE-변경 [Welcome To Ora-SYSDBA]

원격설정

VNC

https://d2fault.github.io/2018/08/02/20180802-install-vncserver-centos/ 포트설정 방화벽해제 (영구) 5901-5910

sudo yum install tigervnc-server
vncserver
vncserver -geometry 1920x1080
vncserver -kill :[port]

Teamviewer

https://community.teamviewer.com/t5/Knowledge-Base/How-to-install-TeamViewer-on-Red-Hat-and-CentOS/ta-p/30708

wget https://download.teamviewer.com/download/linux/teamviewer-host.x86_64.rpm
yum install epel-release               # must be installed first
yum install ./teamviewer-host*.rpm

selinux

끄는 법 /etc/sysconfig/selinux 에서 SELINUX = disabled
http://itzone.tistory.com/646

nginx 설정

Certbot cron

43 6 * * * certbot renew --post-hook "systemctl reload nginx" > /root/cert_renew.log 2>&1

Proxy

Resilio Sync

#/etc/conf.d/nginx/default.conf

location /btsync/ {
         rewrite ^/btsync/gui(.*) /btsync$1 last;
         proxy_pass http://127.0.0.1:8888/gui/;
         proxy_redirect /gui/ /btsync/;
         proxy_buffering off;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
}

location /gui/ {
        proxy_pass http://127.0.0.1:8888/gui/;
        proxy_buffering off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

setsebool httpd_can_network_connect 1 -P

ngnix rewriting

location  /foo {
  rewrite /foo/(.*) /$1  break;
  proxy_pass         http://localhost:3200;
  proxy_redirect     off;
  proxy_set_header   Host $host;
}

For Jupyter https://github.com/jupyter/notebook/issues/1311#issuecomment-403256189

# nginx config in server
location /jupyter/ {
        proxy_pass http://localhost:8888;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header Origin "";
}

location ~* /jupyter/(api/kernels/[^/]+/(channels|iopub|shell|stdin)|terminals/websocket)/? {
        proxy_pass http://localhost:8888;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Origin "";
}
#full nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;

## based on https://gist.github.com/cboettig/8643341bd3c93b62b5c2

events {
    worker_connections  1024;
}

http {

  include /etc/nginx/mime.types;
  default_type application/octet-stream;

  map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }

  upstream jupyter {
      server localhost:8888 fail_timeout=0;
  }


    server {
        listen 80;
        server_name hands.art.cfa.cmu.edu;
        rewrite        ^ https://$host$request_uri? permanent;
    }

    server {
        listen 443;

        client_max_body_size 50M;
        server_name hands.art.cfa.cmu.edu;

        ssl on;
        ssl_certificate /etc/letsencrypt/live/hands.art.cfa.cmu.edu/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/hands.art.cfa.cmu.edu/privkey.pem;

        ssl_ciphers "AES128+EECDH:AES128+EDH";
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
        add_header X-Content-Type-Options nosniff;
        ssl_stapling on; # Requires nginx >= 1.3.7
        ssl_stapling_verify on; # Requires nginx => 1.3.7
        resolver_timeout 5s;

        location / {
            proxy_pass http://jupyter;

            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 ~* /(api/kernels/[^/]+/(channels|iopub|shell|stdin)|terminals/websocket)/? {
            proxy_pass http://jupyter;

            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            # WebSocket support
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;

        }
    }
}
#jupyter settings
c.NotebookApp.allow_origin = '*'
c.NotebookApp.base_url = '/jupyter'
c.NotebookApp.open_browser = False
c.NotebookApp.password = 'sha1:REDACTED'
c.NotebookApp.port = 8888
c.NotebookApp.trust_xheaders = True

php setting

php conf 안에서
user, group listen –> 소켓으로

https 설정

https://certbot.eff.org/lets-encrypt/centosrhel7-nginx

Renewal

certbot renew --dry-run
certbot renew

Remote 환경 (Windows 등)

배경색

https://encycolorpedia.kr/263f3f
47, 79, 79

Python 개발환경

skmob bash

docker run -it --name skmob-dev -p 28888:8888 -v E:\Clouds_500G\Dev\traccar:/home/centos/src/projects dreamwayjgs/centos-skmob:latest /bin/bash

Python 3.6버전

yum install -y https://centos7.iuscommunity.org/ius-release.rpm
yum search python3

yum install -y python36u python36u-devel python36u-libs python36u-pip

Jupyter

#run
nohup jupyter notebook &
#kill
lsof nohup.out
kill -9 <PID>
nohup jupyter lab > my.log 2>&1 &
echo $! > save_pid.txt

kill -9 `cat save_pid.txt`
rm save_pid.txt
#!/usr/bin/env bash
# 파이썬 3.7 설치
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.7

python3.7 --version
# **/home/<사용자 이름="">/.bash_aliases**
alias python=python3.7
alias pip=pip3

sudo apt install python3-pip
sudo apt install python3.7-venv
python -m venv venv
source venv/bin/activate

우분투 미러

#!/bin/sh

SL=/etc/apt/sources.list

PARAM="r:hm:dna"

KAKAO=mirror.kakao.com
NEOWIZ=ftp.neowiz.com
HARU=ftp.harukasan.org

function  usage {
    echo "USAGE: $0 [OPTION] ";
    echo -e "\r\n-b : make backup file";
    echo "-r[sources.list] : specify source list file (default ${SL})"
    echo "-m[mirror-url] : speficy mirror site url"
    echo "-k : use kakao mirror (${KAKAO})"
    echo "-n : use neowiz mirror (${NEOWIZ})"
    echo "-a : use harukasan mirror (${HARU})"

    exit 0;
}

REPOS=${KAKAO}

while getopts $PARAM opt; do
    case $opt in
        r)
            echo "-r option was supplied. OPTARG: $OPTARG" >&2
            SL=$OPTARG;
            ;;
        m)
            echo "Using mirror repository(${OPTARG})." >&2
            REPOS=${OPTARG}
            ;;
        k)
            echo "Using Kakao repository(${KAKAO})." >&2
            REPOS=${KAKAO}
            ;;
        n)
            echo "Using neowiz repository(${NEOWIZ})." >&2
            REPOS=${NEOWIZ}
            ;;
        a)
            echo "Using harukasan repository(${HARU})." >&2
            REPOS=${HARU}
            ;;
        h)
            usage;
             ;;
    esac
done

echo "using repository(${REPOS})"

## change mirror
sed -i.bak -re "s/([a-z]{2}.)?archive.ubuntu.com|security.ubuntu.com/${REPOS}/g" ${SL}

## check
apt update

http://econym.org.uk/gmap/basic19.htm html, body 100%

I deleted a file called "mongodb-40017.sock" at /tmp folder then it worked as expected.
export PIPENV_VENV_IN_PROJECT=1