'Server/Ubuntu'에 해당하는 글 21건

현재 버전 : Ubuntu 12.04.5

 

APACHE / PHP 를 큰 문제없이 업그레이드 하고 나서, 하는 김에 OS 업그레이드까지 기분좋게 감행했다.
ssh 접속할 때마다 뜨던 이 문구를 더 이상 안뜨게 해주고 싶었다.

 

New release '14.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

 

14.04 LTS 버전에 뭐가 바뀌었나 쭉 봤더니, 커널 3.13 으로 버전 업... 그 외에는 그냥... 머 좋아졌겠지???
큰 고민 없이 do-release-upgrade!

 

마찬가지로 큰 문제 없이 enter 몇 번으로 업그레이드를 마치고 재부팅까지 했다.
LTS(Long Term Support) 는 장기 지원 버전으로 2년 마다 출시되며 서버 용은 약 5년 정도의 지원 기간을 가진다.

 

# /etc/init.d/apache2 start
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
Action 'start' failed.
The Apache error log may have more information.

 

SSL 패스워드 입력하지 않아서 멈춘 apache 프로세스 죽이고 다시 실행.

 

# ps ax | grep apache
  993 ?        S      0:00 /bin/sh /etc/rc2.d/S91apache2 start
 1023 ?        S      0:00 /bin/sh /usr/sbin/apache2ctl start
 1026 ?        S      0:00 /usr/sbin/apache2 -k start
 1027 ?        S      0:00 /bin/bash /usr/share/apache2/ask-for-passphrase www.oops4u.com:443 RSA
 1242 pts/0    S+     0:00 grep --color=auto apache
# kill 993 1023 1026 1027
# /etc/init.d/apache2 start

 

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

Apache 2.2 -> 2.4 업그레이드

 

PHP 5.6 버전으로 올리면서 의도치 않게 Apache 도 버전이 upgrade 되었다.
v2.2 와 v2.4 사이에서 갈등하던 설정 파일들을 아파치 문서를 참조해서 문제를 해결해 본다.
https://httpd.apache.org/docs/2.4/upgrading.html

 

아래는 apache 구동시 발생한 오류들이다.

 

apache2: Syntax error on line 140 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/authz_default.load: Cannot load /usr/lib/apache2/modules/mod_authz_default.so into server: /usr/lib/apache2/modules/mod_authz_default.so: cannot open shared object file: No such file or directory
Action 'configtest' failed.

 

mod_authn_default, mod_authz_default, mod_mem_cache 는 v2.4 에서 제거된 모듈들인데,
v2.2 에서 사용하던 그대로 불러오다가 발생한 오류다. 모듈 제거로 해결.

 

$ sudo a2dismod authz_default

 

AH00526: Syntax error on line 19 of /etc/apache2/mods-enabled/alias.conf:
Invalid command 'Require', perhaps misspelled or defined by a module not included in the server configuration

 

AH00526: Syntax error on line 9 of /etc/apache2/mods-enabled/php5.conf:
Invalid command 'Require', perhaps misspelled or defined by a module not included in the server configuration

 

위 에러는 정상적으로 지시자들이 2.4 버전의 Require 로 바뀌어 있는데 왜 에러 났는지...
나중에 따로 처리하지 않았는데 해결됐음.

 

AH00526: Syntax error on line 43 of /etc/apache2/mods-enabled/ssl.conf:
SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?).

 

$ sudo a2enmod socache_shmcb

 

그렇게 Apache 는 정상적으로 구동되었으나.
가상 호스트가 모두 정상 작동을 하지 않았다.
apache.conf 에 보면 site-enable/*.conf 이지만 기존 버전에서는 conf 가 없었나? 아무튼...
기존 가상 호스트 파일들을 새로 올려준다.

 

$ sudo a2ensite default
$ sudo a2ensite default-ssl

 

그리고 가상 호스트의 설정도 apache 2.4 버전으로 살짝씩 손봐준다.

 

AH00526: Syntax error on line 21 of /etc/apache2/sites-enabled/default.conf:
Invalid command 'allow', perhaps misspelled or defined by a module not included in the server configuration

 

AH00526: Syntax error on line 36 of /etc/apache2/sites-enabled/default.conf:
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration

 

v2.2 의 접근 제어 지시어가 Order, Allow, Deny, Satisfy 였다면,
v2.4 에서는 추가된 모듈인 mod_authz_host 에 기반한 방식을 사용한다.
아래 처럼 바꿔준다.

 

#Order deny,allow
#Deny from all
Require all denied

 

#Order allow,deny
#Allow from all
Require all granted

 

AH00526: Syntax error on line 64 of /etc/apache2/sites-enabled/default.conf:
Either all Options must start with + or -, or no Option may.

 

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 처럼 옵션에 붙어있는 기호는 삭제한다.

 

 

Multiview

 

url 에 확장자를 사용하지 않았을 때 자동으로 파일과 매칭시켜주는 Option Multiview.
Apache 2.4 로 업그레이드 한 뒤에 Multiview 가 작동하지 않는다.

 

# cat apache-error.log
Negotiation: discovered file(s) matching request: /var/www/html/contents (None could be negotiated)

 

아래 방식으로 해결.

 

# vi /etc/apache2/mods-enabled/mime.conf
AddType application/x-httpd-php .php

# a2enmod negotiation
# /etc/init.d/apache2 restart

 

 

만약 망했다고 생각든다면 그냥 재설치 ㄱㄱ
환경 파일까지 모두 삭제하고 재설치 하려면 remove 대신 purge 를 사용하면 된다.

 

$ sudo apt-get purge apache2
$ sudo apt-get clean
$ sudo apt-get install apache2

 

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

PHP version upgrade

Server/Ubuntu 2015. 10. 22. 12:40

현재 서버 환경.
: Ubuntu 12.04.5 / Apache 2.2.22 / PHP 5.3.10

 

2년이 넘은 서버이기도 하고 웬만하면 그냥 쓰고 싶었지만, 최신 라이브러리에 대한 제한이 조금 답답했고.
결정적으로 AWS, Facebook, Twitter 등의 타 SDK 서비스를 원활하게 이용할 수 없는 점을 해결하기 위해 PHP 업그레이드를 결정했다.
어짜피 테스트 서버 이미지 떠서 리얼 서버 운용할 것이고, 앞으로의 유지보수를 위해서도 필요했다.

 

 

Upgrade PHP 5.3 to 5.6

 

우선 현재 apt-get 으로 최신 php 패키지를 설치할 수 없어서 PPA (Personal Package Archive) 를 이용했다.
PPA 를 이용하려면 software-properties-common 이 설치되어 있어야 한다. (apt-get install ~ )
https://launchpad.net/ubuntu/+ppas 사이트에서 다운받을 php 버전을 검색하고 다운받는다.

 

$ sudo add-apt-repository ppa:ondrej/php5-5.6
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get autoremove

 

PHP 5.6 설치

 

$ sudo apt-get install php5

...
Unpacking apache2-bin (from .../apache2-bin_2.4.16-4+deb.sury.org~precise+4_amd64.deb) ...
dpkg: error processing /var/cache/apt/archives/apache2-bin_2.4.16-4+deb.sury.org~precise+4_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man8/apache2.8.gz', which is also in package apache2.2-common 2.2.22-1ubuntu1.4
dpkg-deb (subprocess): subprocess data was killed by signal (Broken pipe)
dpkg-deb: error: subprocess <decompress> returned error exit status 2
Processing triggers for man-db ...
Errors were encountered while processing:
 /var/cache/apt/archives/apache2-bin_2.4.16-4+deb.sury.org~precise+4_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

 

unpack 에러... 해당 파일을 직접 어택하여 설치.

 

$ sudo dpkg -i --force-overwrite /var/cache/apt/archives/apache2-bin_2.4.16-4+deb.sury.org~precise+4_amd64.deb

 

일단 이쯤 되면 apache 2.4 가 깔린다는 것을 직감해야 함.
구글링에서는 apache 2.2 + php 5.6 의 패키지 조합은 아직 찾지 못했음. (소스 설치는 가능할 것이고...)
아무튼 당황하지 말고 마저 설치.

 

$ sudo apt-get -f install (or) apt-get install php5

 

설치 중에 몇가지 설정 파일들을 새로운 버전으로 변경할 것인지 기존 버전으로 유지할 것인지를 물어온다.

 

Configuration file `/etc/logrotate.d/apache2'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** apache2 (Y/I/N/O/D/Z) [default=N] ? Y
...
Configuration file `/etc/apache2/mods-available/ssl.conf'
...
Configuration file `/etc/apache2/mods-available/php5.conf'
...
Configuration file `/etc/apache2/apache2.conf'

 

기존 버전을 유지하면 당연히 오류가 발생할 것이다.
새로운 버전으로 변경하고도 오류가 발생하긴 했다. ㅋ

 

이리하여 php 5.6 으로 설치는 마쳤다.

 

$ php -v
PHP 5.6.14-1+deb.sury.org~precise+1 (cli)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

 

PHP 5.3 -> 5.6 으로 업그레이드 하면서 다행히 기존 php 코드에서 심각한 오류를 발생하지는 않았음.

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

Apache Tomcat 연동

Server/Ubuntu 2007. 11. 2. 19:54
Apache Tomcat 연동

1. Apache Tomcat 톰캣 연동 모듈 설치
$ sudo apt-get install libapache2-mod-jk

2. tomcat_home / java_home 경로 설정
$ sudo vi /etc/libapache2-mod-jk/workers.properties

workers.tomcat_home=/usr/share/tomcat5
workers.java_home=/usr/lib/jvm/java-6-sun

3. tomcat 디렉토리의 server.xml 파일에 listener 추가
$ sudo vi /etc/tomcat5/server.xml

<Listener ... >

<Listener className="org.apache.jk.config.ApacheConfig"
modJk="/usr/lib/apache2/modules/mod_jk.so"
workersConfig="/etc/libapache2-mod-jk/workers.properties" />

4. tomcat을 재시작하면 <tomcat_home>/conf/auto/mod_jk.conf 자동 생성 (재시작 할 때마다 파일 덮어씌움)
$ sudo /etc/init.d/tomcat5 restart

5. mod_jk.conf를 다른 경로에 복사하고 파일 끝에 JkMount 추가
$ sudo vi <tomcat_home>/conf/jk/mod_jk.conf
...
JkMount /*.jsp ajp13_worker
JkMount /servlet/* ajp13_worker
...

6. 아파치 설정파일 끝에 mod_jk.conf 추가
$ sudo vi /etc/apache2/apache2.conf

Include /usr/share/tomcat5/conf/jk/mod_jk.conf

7. 재부팅
$ sudo /etc/init.d/tomcat5 restart
$ sudo /etc/init.d/apache2 restart


80 port JSP Test

♣ 이제 80포트에서도 jsp를 돌릴 수 있다.

http://localhost/index.html <- Apache 홈 디렉토리의 index.html 파일 출력
http://localhost/index.jsp <- Tomcat 홈 디렉토리의 index.jsp 파일 출력

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

JSP 환경구축

Server/Ubuntu 2007. 10. 28. 14:21
JDK & Tomcat 설치

$ sudo apt-get install sun-java6-jdk
$ sudo apt-get install tomcat5 tomcat5-admin tomcat5-webapps

- 신기하게도 JAVA 환경변수는 알아서 잡아준 듯..


Tomcat 환경설정

/etc/default/tomcat5 에 JAVA_HOME 변수를 추가해야 한다. (주석처리 되어 있음)

$sudo vi /etc/default/tomcat5
JAVA_HOME=/usr/lib/jvm/java-6-sun

$ sudo /etc/init.d/tomcat5 restart

고양이가 잘 나오는지 테스트 해본다.
http://ip:8180


Tomcat 관리

Tomcat 의 메인 페이지에서 admin 과 manager 권한을 가지는 새 사용자를 생성하도록 한다.
우선 tomcat-users.xml 파일에 다음 행을 삽입한다.

# vi /usr/share/tomcat5/conf/tomcat-users.xml
<role rolename="manager"/>
<role rolename="admin/>
<user username="ggamzzak" password="1234" roles="admin, manager" />

manager 와 admin 의 권한을 생성하고, ggamzzak 이라는 사용자가 패스워드 1234 를 사용하여 admin, manager 권한을 얻도록 한다는 예이다.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret