서브도메인을 하기 위해 찾아보다가... 나중에 또 까먹을거같아서 대략적으로 정리

막상 찾아보니 어렵진 않다....



1. Ubuntu /etc/nginx/sites-available/default 파일 수정


$ sudo
nano /etc/nginx/sites-available/default
server{

listen 80;

listen [::]:80; #서버 기본세팅을 해주었기 때문에 (위쪽) 중복으로 ipv6, default_server와같은 세팅X


root /home/경로

index index.php index.html index.htm


#Make site accessible from http://localhost/

server_name sub.domain.com;

}



$ sudo service nginx restart


2. Creating or pointing domains/subdomains to the server's ip address.

Go to your domain register or to the DNS where your domain records are stored and point them to your server ip address (you can do this with a subdomain too). If you are trying this locally modify the "/etc/hosts" files and create a new record.

$ sudo nano /etc/hosts

And add something like.

127.0.0.1    example.com
127.0.0.1    example2.com
127.0.0.1    my.example.com



3. DigitalOcean(내가 쓰는 서버 호스팅) 에서 DNS 세팅 - CNAME 설정






참고 : http://albertogrespan.com/blog/running-multiple-domains-or-subdomains-in-nginx-with-server-blocks/

1. 서버구매


2. ID/PW 세팅.


 - 아이디 생성 및 관리자권한 부여 (http://jasontody.tistory.com/180)

 - $sudo adduser [userid]

 - $sudo visudo 

$sudo adduser [userid] $sudo visudo


/etc/sudoers 파일 내


# ...

# #User privilege specification

# root ALL=(ALL:ALL) ALL

# [userid] ALL=(ALL:ALL) ALL

저장 후

$sudo reboot

후에 로그인


3. Nginx / Php / Mysql(Mariadb) 설치(http://jasontody.tistory.com/41)

  * Ubuntu 16.04 에서는 php5가아닌 php7.0-fpm 으로 설치해야한다

$sudo apt-get install nginx

$sudo apt-get install php7.0-fpm // 설치시에 mycrypt 도 자동설치된다

$sudo apt-get install php7.0-gd php7.0-curl php7.0-mbstring // 많이쓰이는 모듈 설치

 타임존 세팅(권장사항, 이작업 하지 않을 시 시스템 타임존 설정으로 적용)

$sudo nano /etc/php/7.0/fpm/php.ini

$sudo nano /etc/php/7.0/cli/php.ini

date.timezone 값을 찾아서 주석을 제거하고 시간을 설정(출처 : https://blog.lael.be/post/2600)

k21

이 값을 찾아

k22

이렇게 변경, 저장 후 php 재시작

$sudo service php7.0-fpm restart

$sudo apt-get install mariadb-server

또는

$sudo apt-get install mariadb-server-10.1 mariadb-client-10.1

$sudo apt-get install php7.0-mysql // php5일경우 apt-get install php5-mysql 로 설치



4. Xe 다운 및 GD 라이브러리 설치

  1) git 설치(sudo apt-get install git)

$sudo apt-get install git

$git clone https://github.com/xpressengine/xe-core

 2)GD 라이브러리 설치(for Rewrite) / 링크(http://jasontody.tistory.com/41)

$sudo apt-get install php5-gd

$sudo /etc/init.d/nginx restart 또는 $sudo service nginx restart

$reboot


5. Xe Rewrite

 - http://jasontody.tistory.com/entry/Xpress-engine-nginx-rewrite-%EC%84%A4%EC%A0%95-%EC%A7%A7%EC%9D%80%EC%A3%BC%EC%86%8C-xpressengine-222222



Digital Ocean 이용중인데,  FTP 는 접속은 되나  맥에서 SSH 접속은 안되는 문제 발생


Ssh a@host 하면

connection Closed by 0.0.0.0(ip) 라는 메세지와 접속이 안됨


재부팅하니 해결은 됐으나 DigitalOcean에 해결법이 있어 메모



DigitalOcean - 계정 - Web Console 에서 해결


Log in to your droplet via the console and run these commands:
ssh-keygen -t dsa -N "" -f /etc/ssh/ssh_host_dsa_key
ssh-keygen -t rsa -N "" -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -N "" -f /etc/ssh/ssh_host_ecdsa_key
if that doesn't work (i.e. you still can't type /), try running this command instead:
dpkg-reconfigure openssh-server


출처 : https://www.digitalocean.com/community/questions/ssh_exchange_identification-connection-closed-by-remote-host



리눅스 운영체제는 유닉스 시스템을 기반으로 하고 있으며, 기본적으로 운영체제가 부팅될 때,

'로그인'이라는 과정을 진행하게 됩니다. 


로그인 과정은 user ID 즉, 계정 이름과 비밀번호를 요구합니다. 

오늘은 user ID를 생성하는 방법

계정에 sudo 권한을 부여하는 방법에 대해서 설명하겠습니다.




1. user ID 생성

1
$ sudo adduser [userid]            // 사용자 계정을 새로 만드는 명령어

[userid]는 생성하고자 하는 user id 값입니다.

가령, jeongmin 이라는 계정을 추가하고 싶다면

$ sudo adduser jeongmin

이렇게 사용하시면 됩니다.





2. 계정에 sudo 권한 부여하기

 우선, sudo 권한이 무엇인지 부터 알려드려야 겠네요.

리눅스 운영체제를 사용해보신 적 있다면 sudo apt-get install... 등 과 같이 sudo 명령어를

은근히 몇 번 써보셨을 겁니다. sudo 명령어는 사용자에게 루트 권한을 부여하는 것입니다.


리눅스 운영체제에서는 일부 중요한 데이터나 시스템을 변경하는 등의

책임이 큰 행동에 대해서는 루트 권한을 요구합니다. 

쉽게 생각해서 루트 권한을 뭐든지 할 수 있는 슈퍼 유저라고 생각하십시오.


그리고 일반 사용자가 잠시동안 루트 권한을 빌리는 방법이 바로 sudo 명령어를 사용하는 것입니다.

그런데 아무 사용자나 sudo 명령어를 쓸 수 있다면 굳이 sudo 명령어가 필요하겠습니까?

일반 사용자도 sudo 명령어를 쓸 수 있는 계정/ 쓸 수 없는 계정이 있습니다.


한 사용자 계정이 sudo 권한을 부여 받으려면 /etc/sudoers 파일 안에 등록이 되어야 합니다.

다음 명령어를 입력해봅시다.

1
$ sudo visudo                         // /etc/sudoers 에 접근


/etc/sudoers 파일 내에서

....

# User privilege specification

root ALL=(ALL:ALL) ALL

....

이 곳에 

[userid] ALL=(ALL:ALL) ALL                // [userid] 는 권한을 부여하고자 하는 계정 이름.

을 추가하시면 됩니다.



후 재시작 고고


출처 : http://thinkpro.tistory.com/16

$nano /etc/ssh/sshd_config


열 포트번호 추가


Port 7022  


$service ssh restart


$sudo apt-get install php5-gd

$sudo /etc/init.d/nginx restart

$reboot



리붓해줘야 적용이되더라.

$ who
userid1  pts/0              2010-03-17 15:12 (xxx.xxx.xxx.xxx)
userid2  pts/1              2010-03-17 15:15 (xxx.xxx.xxx.xxx)
여기서 첫번재 userid1 을 로그아웃 시키고 싶다면
$ skill -kill -t pts/0
$ who
userid2  pts/1              2010-03-17 15:15 (xxx.xxx.xxx.xxx)
 작성일 : 12-02-16
 조회 : 1,201  
1. FTP 환경설정파일 수정

~# vi /etc/vsftpd/vsftpd.conf

# 문서하단에 추가

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list


2. chroot_list 파일안에, root 추가 (이파일안에 등록된 USER는 상위디렉토리 접근제한을 받지 않는다.)

~# vi /etc/vsftpd/chroot_list

root


vsftp, ftp 사용자 폴더를 제외한 다른 폴더 접근제한

1)파일을 편집
/etc/vsftpd/vsftpd.conf

chroot_local_user=YES 추가

2)ftp demon restart
/etc/init.d/vsftpd restart


*다음의 파일에 등록된 사용자들은 FTP 접속이 불가능
/etc/vsftpd.ftpusers

/etc/vsftpd.user_list

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

1. ftpusers와 vsftpd.chroot_list 차이 

/etc/ftpusers 과 chroot_list_file=/etc/vsftpd.chroot_list 파일은 용도가 다릅니다. 

* /etc/ftpusers : 이건 접속을 제한하는 것입니다
. 즉, 여기에 등록된 ID는 ftp 접속 자체를 할 수 없습니다. 
* /etc/vsftpd.chroot_list : 여기에 써진 ID는 접속할 수 있습니다. 
다만, 자신의 홈디렉토리를 벗어날 수(상위디렉토리로 갈 수) 없습니다.
 
이를테면 홈이 /home/truefeel/ 일 때 /home/truefeel/ 를 벗어난 /etc, /home, /usr 등을 갈 수 없다는 것입니다. 
이해되시나요? 
보안상 홈보다 상위 디렉토리로 이동하는 것을 제한하는 경우가 많습니다. 

2. chroot_local_user 와 chroot_list_enable 설정을 함께 사용할 때 

제가 쓴 글을 다시 인용하여 설명하겠습니다. 

인용:

3) 사용자가 홈디렉토리를 못 벗어나게 하고 싶는데? 

 /etc/vsftpd.conf에 다음을 추가하면, 모든 사용자는 자신의 홈디렉토리만 접근할 수 있다. 

 chroot_local_user=YES 

 또한 특정 사용자로만 제한을 하고 싶다면 다음과 같이 한다. /etc/vsftpd.chroot_list에는 제한할 
 사용자 ID를 한줄에 하나씩 나열하면 된다. 

 chroot_list_enable=YES 
 chroot_list_file=/etc/vsftpd.chroot_list 

 주의할 것은 chroot_local_user=YES와 chroot_list_enable=YES를 함께 사용할 경우에는 
 /etc/vsftpd.chroot_list에 포함된 사용자 ID만 제한없이 홈디렉토리를 벗어날 수 있다. 
 즉, 반대로 작용한다. 



위의 내용을 설정부분만 뽑으면 이렇습니다. 

1) 조건 1 
코드:

chroot_local_user=NO 
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list 



이런 경우는 /etc/vsftpd/chroot_list 파일에 설정한 ID는 홈디렉토리를 벗어날 수(즉, 상위로 갈 수) 없습니다. 

2) 조건 2 
코드:

chroot_local_user=YES 
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list 



이런 경우는 
/etc/vsftpd/chroot_list 파일에 설정한 ID만 홈디렉토리를 벗어날 수(즉, 상위로 갈 수) 있습니다. 
즉, 조건1과는 반대로 되는 것입니다. 


3. 특정 IP를 막을 때 

레드햇의 자체 vsftpd rpm은 tcp wrapper를 통해 IP제한을 할 수 있습니다. 
님의 말씀대로 이걸 이용하거나 iptables를 통해서 막으면 되겠네요.


sudo 권한이 있어야한다.


사용자추가


$ adduser NewId


하면 알아서 비밀번호 설정 가능


그룹생성


$ groupadd NewGroup


새사용자 그룹지정


$ vi /etc/group


NewGroup:x:1002:

이있는데 뒤에다 사용자 아이디를 써준다

NewGroup:x:1002:NewId

그리고 저장.

NewGroupDir이란 디렉토리의 소유권을 NewGroup으로 줌


$chown -R root:NewGroup NewGroupDir/


그리고 폴더 접근권한을 설정한다


$chmod -R 700 NewGroupDir/



접근권한 참고

r : Read  = 4
w : Write = 2
x : eXcute = 1

-rwxrwxrwx   ( 777 )
-r--r--r--  ( 444 )
-rwx--x--x ( 711 )

2~4필드 : 소유주 ( User ) 권한
5~7필드 : 그룹 ( Group )  권한
8~10필드 : 나머지 ( Others ) 권한


 


이럴 때 nohup을 사용하면 사용자가 터미널을 종료해도 프로그램이 계속 살아있게 된다.

1.  Nohup
* 정의 : 리눅스, 유닉스에서 쉘스크립트파일(*.sh)을 데몬형태로 실행시키는 프로그램
* Nohup은 리눅스에서 쉘스크립트파일을 데몬형태로 실행시키는 명령어이다.

 - nohup으로 실행을 시키려면 실행파일 권한이 755이상으로 되어있어야 함
 - 명령어 뒤에 '&'를 추가하면 백그라운드로 실행됨 
 - nohup 을 통해 프로그램을 실행시키면 nohup.log 라는 로그 파일 생성
$nohup [실행파일]
$nohup [실행파일] &     // 백그라운드 실행
 

2.  로그 안남기기

$nohup [실행파일] 1>/dev/null 2>&1 &
 
 1. /dev/null  이 표현은 1의 결과를 /dev/null 이라는 파일 속에 넣는다.
    /dev/null로 보내버리면 모든 출력을 없애버린다.
 
 2. &1 이 표현은 2번 파일디스크립터를 1번에 지정된 형식과 동일하게 /dev/null로 지정한다.
     & 은 프로그램을 백그라운드에서 실행하도록 하는 표현이다.
 

3. nohup 종료하기

1. "ps -ef | grep 쉘스크립트파일명"  // 명령으로 데몬형식으로 실행
2. "kill -9 PID번호" // 명령으로 해당 프로세스 종료
 

 

+ Recent posts