Tag Archives: server

Ubuntu – Crontab – Exec format error

우분투 로그인하니까 you’ve got mail..
또 무슨 오류가?

cat /var/mail/root

........
........
..........
run-parts: failed to exec /etc/cron.hourly/readweb: Exec format error
run-parts: /etc/cron.hourly/readweb exited with return code 1

써있는대로… 실행이 안되서 오류가 났다고 하는건데

readweb 스크립트는 curl을 이용해서 특정 웹페이지를 저장하는 역할을 한다

검색을 해 보니

 

http://askubuntu.com/questions/264607/bash-script-not-executing-from-crontab

원인은 cron에는 path를 잡아주지 않기 때문에 실행명령어를 full path로 적어주거나 path를 따로 잡아줘야함

해결책 :

/usr/bin/curl 처럼 full path로 쓰거나

PATH=/usr/bin

를 잡아줘야하는데…

 

그냥 명령어를 full path로 명시하는게 낫지 않을까

 

WIN2008-MSSQL2008 서버 원격접속 가능설정

주의 :  원격접속에 필요없는 설정을 추가했을 수 있음

 

서버 프로토콜 추가

시작 – sql server -> SQL Server Configuration Manager 실행

  • SQL Server Services 메뉴 -> SQL Server Browser 시작시 실행 설정
  • SQL Native Client 메뉴 -> Client Protocols -> TCP/IP, Named Pipes – Enabled
  • SQL Server Network Configuration -> Protocols for MSSQLSERVER  -> TCP/IP, Named Pipes – Enabled

 

방화벽 허용

TCP 1433, UDP 1434

 

사용자 추가

Microsoft SQL Server Management Studio 실행

Security – Logins 오른쪽클릭 -> New Login 해서 사용자 추가

 

 

Ubuntu GPT disk 등록하기

파티션 만들기
2T이상은 gpt로 만들어야된다. fdisk로 안된다는 얘기… 설치할 때 한번에 하는게 편하지만 하드를 중간에 추가할 경우에는 이 작업이 필요하다.

$ sudo fdisk -l
$ sudo parted /dev/sdb
(parted) mklabel gpt
(parted) unit TB
(parted) print
1번방법-
(parted) mkpart
name 알아서
filesystem 다시포멧할거니까그냥엔터 아니면 ext4
start 0
end 위에서 print할 때 봤던거 하드끝까지 3.0TB
2번방법-
(parted) mkpart primary 0 0
3번방법-
(parted) mkpart primary 0.00TB 3.00TB
위에1,2,3번방법 아무거나 맘에드는대로 해주면되고
(parted) quit

파일시스템만들기 – 포멧
mkfs –type ext4 /dev/sdXY

마운트하기
$ sudo mkdir /data
$ sudo mount /dev/sdb1 /data
이렇게 하면 부팅할 때 마다 다시 등록해줘야한다.

영구적으로 마운트하기위해서 fstab 등록하기

$ sudo blkid
uuid확인
붙여넣기를 해야되니 ssh로 접속하는게 좋다
/etc/fstab에 위의 정보들을 보고 따라 잘 등록

UUID=39489af1-0f3z-7777c-djen-69a03jf93afd0 /data ext4 errors=remount-ro 0 1
UUID는 blkid했을 때 나온 주소
/data는 파일 마운트 경로
파일시스템타입ext4

$ sudo mount -a
전체 마운트 재등록하라는 뜻. 설정이 제대로 됏다면 오류없이 완료.

끝. 재부팅해본다.
제대로 등록되지 않았다면 컴퓨터가 안 켜질거다. 그렇다면 재설치

GIT 서버 따로 쓰려면

GIT관리 웹서비스가 gitblit,  gitolite,  gitosis 등이 있는데…

gitblit이 그나마 좀 나은데

근데 다 아주 좋지는 않다.

요즘은 네이버에서 yobi라고 나왔는데 권한관리나 보안설정이 잘 되어있는지 모르겠다

이슈트래커는 별도로 쓰고 소스리포지터리는 별도로 생성하는게 나을 것 같다.

 

redmine을 쓴다면 프로젝트 생성부분에 git 리포지터리 생성 정도만 추가하면 되지 않을까?

git 서버는 별도로 생성하고

http://tutorial.polypia.net/index.php/Ubuntu:git_server

Linux SSH public-private key 인증으로 비밀번호 없이 사용하기

http://www.sdm-studio.it/setup-public-key-authentication-from-mac-to-ubuntu-server/

요기 참고했음

 

관리할 서버가 늘어나고 스크립트 사용시에 원격 서버에 비밀번호 없이 접속이 되야 편하기 때문에 설정하게 되었다.

 

1.  ssh키 생성하기

여기서 확인(http://memo.polypia.net/archives/2018)

 

 

2. 키를 타겟 서버로 카피하기

#클라이언트가 한개인경우
scp ~/.ssh/id_rsa.pub USERNAME@서버주소:.ssh/authorized_keys

#한 서버에 퍼블릭키를 여러개 등록할 경우 추가 방법
#그냥 잘라붙이기 하는거나 마찬가진데 명령어로 넣는 방법이다
cat ~/.ssh/id_rsa.pub | ssh USER@HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

##디렉토리가 없어서 카피가 실패할 경우.. 타겟서버에 디렉토리 만들기
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
exit

3. 접속하기 테스트

비밀번호를 안쓰고 SSH 접속이 되면 성공

ssh USERNAME@서버주소

 

4. 안되는 경우

이런 경우 서버의 .ssh 디렉토리 소유권과 권한을 재설정해본다.
chmod 700 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
ssh 서비스를 재시작
sudo service ssh restart

이렇게 해도 안되면 모르겠다.
gg
구글검색

 

CentOS의 경우 6.x 버전의 selinux버그로 인해 발생하는 문제

http://stackoverflow.com/questions/9741574/redhat-6-oracle-linux-6-is-not-allowing-key-authentication-via-ssh

cd ~
chmod g-w,u-rwx .
chmod 700 .ssh
cd .ssh
chmod 600 *
chmod 644 authorized_keys
chmod 644 known_hosts
chmod 644 config
restorecon -R -v ../.ssh

가장 쉬운 해결법인 복붙법. 권한문제는 아니다.

간혹가다가 rsa와 dsa방식중 한가지만 지원하는 서버도 잇다고 하니… 위의 방법이 안먹힌다면 해볼만하다.

 

5.  비밀번호 로그인 금지(키 로그인만 허용)

 

##우분투 배포판이 아니라면 경로가 다를 수 있음
$ sudo nano /etc/ssh/sshd_config

##이걸 찾아서 변경
#PasswordAuthentication yes
->>
PasswordAuthentication no

## 역시 명령이 다를 수 있음 tab자동완성을 이용하면 좀 달라서 알아서 찾아주기도 하고
## 아예 다른경우는 알아서
$ sudo service ssh restart

 

UBUNTU11 Subversion Virtual host 사용하는 경우 sites-available 설정

svn.도메인.com을 주소로 한다고 가정하고 설명한다.

우분투 기본설치 경로인

/etc/apache2/sites-available에서

 

$ sudo cp default svn

$ sudo gedit svn

편집 후

$ sudo a2ensite svn

$ sudo /etc/init.d/apache2 restart

완료… 간단하다. VirtualHost 사용해본분들은 쉽게 할 수 있을듯…

그냥 밑에 //////////////로 둘러싼 부분을 끼워넣으면 된다.

주석 #로 된 부분을 해제하면 svn.도메인.com/svn/OpenRepository로 OpenRepository에 접속이 된다.

 

<VirtualHost *:80>
ServerAdmin webmaster@localhost
////////////////////////////
ServerName svn.도메인.com
#<Location /svn/OpenRepository> (이 부분의 주석을 해제하면 svn.도메인.com/svn/OpenRepository로 접속이 된다)
#    DAV svn
#    SVNPath /home/svn/OpenRepository
#    AuthType Basic
#    AuthName “Welcome  Open Subversion Repository”
#</Location>
#<Location /svn/repository>
<Location /> ( svn.도메인.com/으로 접속이 된다는 소리… ‘/Secure’이라고 해놓으면 svn.도메인.com/Secure’으로 접속할 수 있게된다)

DAV svn
SVNPath /home/svn/repository
AuthType Basic
AuthName “Welcome Secure Subversion Repository”
AuthUserFile /etc/subversion/passwd
Require valid-user
</Location>
////////////////////////////////////////
#    DocumentRoot /home/itvader/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory “/usr/lib/cgi-bin”>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ “/usr/share/doc/”
<Directory “/usr/share/doc/”>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

[우분투 서버 설치-03]설정하기 apache2,samba,mysql,postgresql,vsftp,subversion

apache설정

virtualhost설정

cd /etc/apache2/sites-available

sudo cp default www.polypia.net(기본 파일을 복사해서 도메인 주소로)

sudo cp default memo.polypia.net (파일을 만들고)

sudo nano www(에디트)

————————————————-

<VirtualHost *.80>

ServerAdmin 2345jjkljlfkjkl어쩌고 이 밑에

ServerName www.polypia.net ###이건 서버 이름 도메인 주소를 써주면된다

ServerAlias polypia.net ####이건 서버의 별명

DocumentRoot /var/www ##이건 파일의 경로

대강 이 부분만 손보면 된다.

virtualhost를 사용하지 않을 생각이라면 default만 손보면 될까….

————————————————-

에디트 다 했으면

sudo a2ensite www.polypia.net

sudo a2ensite memo.polypia.net(a2ensite를 해야 아파치에서 일을 시작한다)

sudo /etc/init.d/apache2 restart(아파치 재시작 하면 적용됨)

/etc/apache2/httpd.conf 이 파일에는

ServerName localhost

를 추가해주자.  큰 문제가 생기는건 아니고 실행시킬 때 오류가 뜬다

http.conf에 추가하기 싫다면 conf-available에 넣어주고 a2enconf를 해주면 된다

 

samba설정

sudo adduser userid(삼바에서 사용할 우분투 계정을 만든다)

sudo nano /etc/sudoers(수도추가)

root All=(ALL)ALL

[userid] ALL=(ALL)ALL(이거 추가)

sudo smbpasswd -a userid (계정을 삼바에 셋팅)

sudo nano /etc/samba/smb.conf(설정파일 에디트)

적당한데다가 이런식으로 써넣는다.

————————————-

[공유명]

comment=코멘트겄지여

path=/home/너님의아이디/공유할폴더 (이런식으로 공유할경로를 넣어줌)

guest ok = yes(이렇게 하면 계정도 필요없음 계정을 만들었으면 no)

browseable=yes(파일을 볼 수 있을까? 예스)

writeable=yes(쓰는것도 예스)

————————————-

방화벽을 잘 막아놨다면 이 부분을 게스트 ok로 해놔도 되긴되는데..

막아놓는게 나을 것 같다.

sudo /etc/init.d/smbd restart

mysql설정

이건 그냥 됐던것같다. 기본 비밀번호설정은 설치시 자동으로 된다. 따로 하려묜

sudo mysql -u

postgresql설정

local에서라면 별 설정이  필요없다. pgadmin3라던가 깔아쓰면된다

$sudo nano /etc/postgresql/8.4/main/postgresql.conf

————————————

listen_addresses = ‘*’
password_encryption = on

————————————

/etc/postgresql/8.4/main/pg_hba.conf

—————————————-

# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all ip.ip.ip.ip/32 md5

—————————————-

$sudo -u postgres psql postgres

postgres=# ALTER USER postgres WITH ENCRYPTED PASSWORD ‘설정할패스워드’;

postgres=# q

사용자추가

http://www.postgresql.org/docs/8.4/interactive/app-createuser.html

 

DB추가

http://www.postgresql.org/docs/8.4/interactive/app-createdb.html

vsftp설정

/etc/vsftpd/vsftpd.conf

변경–
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO

local_enable=YES
local_umask=022

ftp는 간단하다 이정도만으로 접속은 된다. 상세 설정은 좀 성가시겠지만…

로그인은 우분투 계정으로

subversion설정

 

적당한 위치에 가서

 

$sudo svnadmin create /home/svn

 

$sudo chown www-data:www-data /home/svn -R

그 다음 블로그를 따라 설정..

http://lethean.pe.kr/2009/07/16/manage-subversion-repositories-in-ubuntu/

추가로subversion virtual host로 설정하기

버추어호스트는 윗쪽의 설정을 다 한 후에 해야된다.

http://itvader1.tistory.com/4

구글에서 한참 검색하니 나오는건 내 블로그 ㅋㅋ

 

 

 

[우분투 서버 설치-02]APM과 방화벽설치

이걸 소스코드로 설치하려면 라이브러리만 수백개다.

우분투는 그냥 패키지로 설치하면 편하다.

패키지는 우분투에서 설치하기 편하게 컴파일 해서 제공하는 패키지다.

 

패키지 is 패키지

 

sudo apt-get install 설치할패키지명

sudo apt-get install 패키지 패키지 패키지 (띄어쓰기로 여러개 입력가능)

설치된거 또 입력한다고 두번 깔리지는 않는다.

패키지명만 나열한다.

openssh-server

openssh-client

ssh-askpass-gnome

apache2

libapache2-mod-auth-mysql

mysql

mysql-client

mysql-server

php5

php5-common

libapache2-mod-php5

php5-mysql

(mono를 설치할 경우)

mono-apache-server

libapache2-mod-mono

(톱캣jsp용)

tomcat6

tomcat6-common

tomcat6-admin

libapache2-mod-jk

(ftp서버)

vsftp

(쌈바)

samba

smbfs

(php DB관리툴)

phpmyadmin

phppgadmin(postgresql용인데 phpmyadmin만큼 좋지는 않음)

(postgresql DB)

postgresql-8.4

(svn 서버)

subversion

이거말고는 패키지명을 까먹었는데….5개정도 되는거 있다.

 

설치끝…

이제 설정

/etc/mysql/my.cnf

/etc/apache2/apache2.conf(이 파일을 직접 편집하는 것은 권장하지 않는다)

/etc/apache2/sites-available(버추어호스트를 쓸거라면 이쪽으로….

이건 아는사람만 아는건데….

사실 설정파일 속에 설정을 어떻게 해야하는지 다 설명이 돼 있다.

잘 모르겠으면 구글검색하면 나오기도 하고…

설정까지 한 페이지에 하는것은 무리인 것 같다.

3편이후 추가해야할 포스트

apache설정

samba설정

mysql설정

postgresql설정

vsftp설정

subversion설정

사실 패키지로 설치하면 거의 자동으로 셋팅이 끝나서 손볼게 거의 없다.

 

설치할거 설치했으니 이제 보안설정

iptables를 직접 손대면 힘드니까 ufw라는 방화벽 어플을 사용한다.

 

sudo ufw enable

sudo ufw allow from 333.333.33.33 to port 22(원격으로 접속하고 있다면 본인의 ip 지정)

sudo ufw default deny

sudo ufw allow 80/tcp

뭐 이런식으로 치면 되는데 자세한 명령은 이쪽을 참고

http://www.ubuntu.or.kr/wiki/doku.php?id=program:ufw%EC%84%A4%EC%A0%95

 

네트워크 환경에 따라 다른 설정을 해 줘야된다.

http포트인 80/tcp는 개방되어야하고

ftp인 21은 사람에 따라 다르고

ssh포트인 22는 역시 환경에 따라 다르다.

samba인 겨우 137 138 udp 139 445 tcp가 열려있어야된다.

mysql 3306

postgresql 5432

db는 원격접속을 안할거라면 로컬로 지정해놓으면 된다.

돈이 많아서 db서버를 별도로 운영한다면 별도 지정해놓으면 되고….

내부네트워크에서만 원격이라면 내부네트워크 주소만 적어주면 된다.

방화벽은 조금 고민이 필요하다.

공통적으로 외부에 노출되는것은 80포트…

 

이정도쯤이다. 처음부터 깔끔하게 완성시킬 필요는 없다. 하나하나 안될때마다 고쳐가면 편하다.

 

이야 우분투라서 이정도지… centos정도였으면 몇년 걸렸을 것 같다.

설치순서 메뉴얼이 완성되면 스크립트로 만드는 것도 가능할 것 같다.