이 에러때문에 중요한 컴퓨터를 재설치 하는 문제가 있었다.

다른 컴퓨터에도 또 또 또!!!! 나타나서

이번엔 시간을 많이 들여 검색과 시도를 했다

 

결론은 다음과 같다.

 

sudo apt-get --purge --reinstall install gdm

chmod -R 760 /home/levan/

두개를 하면 된다.

'Linux > kernel' 카테고리의 다른 글

ubuntu 64bit 환경에서 32bit 크로스컴파일러 사용하기  (0) 2012.10.24
ubuntu 계정 추가  (0) 2012.09.18
Network 설정  (0) 2012.05.31
STB에서 top이 안먹힐때  (0) 2011.06.08
mysql 프로시저 Linux/C/C++ 2012. 11. 7. 20:38

http://blog.naver.com/PostView.nhn?blogId=cache798&logNo=130080151940&categoryNo=68&viewDate=&currentPage=1&listtype=0

ubuntu 11.4를 설치하고 Arm 컴파일러를 http://www.codesourcery.com/sgpp/lite/arm에서 다운받았다.

Makefile에서 컴파일러 PATH를 설정하고 u-boot 를 빌드하려고 했더니 그런 파일이 없다고 에러가 나왔다.

설치된 폴더에서 파일이 있는 폴더로 가서 컴파일러 테스트를 해보아도 

"-bash: ./arm-none-linux-gnueabi-gcc : 그런 파일이나 디렉터리가 없습니다"

라는 메세지만 나오네 ㅠㅠ; 

그렇다면 PATH설정이 잘못된건 아니고....

원인은 64bit 환경에서 32bit용 컴파일러를 실행시키려 했기 때문이었다.

해결방법은 ia32-libs 패키지를 설치해주면 된다.


sudo apt-get install ia32-libs


설치하면 결과는 잘된다. 

이 간단한걸 몰라서 3시간 동안 삽질했다. ㅠㅠ;

'Linux > kernel' 카테고리의 다른 글

could not update iceauthority file /home/user/.iceauthority  (0) 2012.11.11
ubuntu 계정 추가  (0) 2012.09.18
Network 설정  (0) 2012.05.31
STB에서 top이 안먹힐때  (0) 2011.06.08

1 alarm(TIMEOUT);
2 pause();
3 alarm(0);
..

위와 같이 alarm()을 사용해서 TIMEOUT을 구현하는 경우 race condition 문제가 발생할 가능성이 있다. 1번에서 알람이 설정되고 2번이 실행되기 전에 프로세스 스케줄링이 변경되서 다른 프로세스가 실행되는 경우(서버가 과부하인 상태이고 TIMEOUT이 짧을때), 2번이 실행되기 전에 alarm이 만료되어서 signal을 받을수 있다. 그렇게되면 pause()는 무한정 블럭되어버린다.

이 문제를 해결하는 방법은 몇가지가 있는데 내가 자주 사용하는 방법은 sigsetjmp/siglongjmp를 사용하는 방법이다.

/* SIGALARM handler */
void
sigalrm_handler(int signo)
{
     siglongjmp(jmpbuf, 1);
}

int
main(void)
{
...

       /* SIGALRM에서 사용할 시그널 점프 등록 */
       if(sigsetjmp(jmpbuf, 1) != 0) {
           goto timeout;
       }

       /* 알람 설정 후 신호대기 */
       alarm(TIMEOUT);
       pause();

timeout:
       alarm(0);

...
}

위 코드에서는 SIGALRM이 발생하면 시그널 핸들러를 실행하고 sigsetjmp 위치로 점프한다. 그리고 다시 timeout으로 goto하기 때문에 race condition 상황이 발생해도 pause()는 실행되지 않는다.

'Linux > C/C++' 카테고리의 다른 글

mysql 프로시저  (0) 2012.11.07
Thread와 Signal  (0) 2012.10.19
log file format 조건  (0) 2012.10.19
전처리기 #define do{ 문장1; 문장2; 문장3 }while(0) 사용...  (0) 2012.09.24
UCDParser result to analysis a indexing content  (0) 2012.08.29
Thread와 Signal Linux/C/C++ 2012. 10. 19. 17:59


특정 thread에만 alarm을 사용하고 싶습니다.  signal / 네트워크프로그래밍

2012/05/03 15:27

복사http://blog.naver.com/nds239/10137957769

전용뷰어

출처 : http://rootfriend.tistory.com/161


환경은 1 process, multi-thread라 가정합니다.

그리고 각각의 sub-thread들은 recv 대기중에 있으며 저는 원하는 시간에 이들을 깨우기 위해 alarm()시스템 콜을 사용하려고 합니다.
(time out에서 일반적으로 쓰는 방법, 즉 select 대기나 SO_RCVTIMEO등은 사용할 수 없다고 가정합니다.)

그러나 문제는 alarm이라는 system call이 per-thread가 아닌 per-process라는데 문제가 있습니다.

가령, multi-thread환경에서

alarm(5);
recv(...);
alarm(0);

과 같은 코드를 작성하면 불행하게도 recv에서 대기하고 있던 여러개의 thread가 동시에 wake-up하기 때문에 원하는 바대로 동작할 수 없습니다.

alarm이 아닌 pthread_kill을 사용하는 경우에

pthread_kill(pthread_self(), SIGALRM);
recv(...);

와 같은 Code에서 보듯이 recv에서 대기하는 것이 불가능하게 됩니다.

그래서 결국은 alarm()을 이용하여 SIGALRM을 발생시키면서도 모든 thread가 아닌 특정 thread에서만 SIGALRM을 받을 수 있는 제 3의 방법이 있어야 합니다.

이런 경우를 직접 Coding해 보신 분이 계신지 궁금합니다.

고수의 친절한 가르침을 기대합니다.

===================================================================================================================

일단 multi-thread에서 가장 다루기 힘든 부분 중 하나가 signal 처리입니다. 힘든 건 둘째치고, platform에 따라서 제대로 동작하지 않을 수도 있습니다. 따라서 가능하면 signal을 쓰지 않도록 노력해보기 바랍니다. 그래도 꼭 signal을 써야만 한다면...

pthread_sigmask()를 써서 thread당 독립적으로 동작하는 signal mask를 등록하면 됩니다. 즉 signal을 받고자 하는 thread를 제외한 나머지 thread들에서 해당 signal을 블럭시키면 됩니다. (race condition을 방지하기 위해) thread를 처음 만들 때 자식 thread는 부모 thread로부터 signal mask를 상속받기 때문에, 자식 thread를 여러개 만들기 전에 먼저 블럭시킨다음 thread들을 만들고 나서 원하는 thread에서 unblock시키는 방법을 쓰는 것이 좋습니다.

노파심에서 말하지만 single threaded program에서 같은 목적으로 쓰는 sigprocmask()는 multi threaded program에서 쓰면 안됩니다.

자세한 것은 Programming with POSIX Threads에 잘 나와 있으니 참고하기 바랍니다.

log file format 조건 Linux/C/C++ 2012. 10. 19. 17:40

이번에 어떤 작업을 하면서 
개인적으로 가지고 있던 로그 클래스를 엎었습니다.
지난번에 만들때는 잘 만들었다고 생각했는데 다시 보니 너무 조악하더군요.

다신 만든건 문제가 없는데, 만들다가 느낀게... 별로 대단한 것도 아닌데
프로그래머마다 각자 자기 맘대로 하나씩 가지고 있는 것 같은 느낌이 들더군요,

제대로된 로그 라이브러리가 있으면 그냥 익혀서 쓰면 되는데
또 만든다고 생각하니 시간 낭비 같기도 하고.


일단 개인적으로 필요로 하는 로그 요구 조건은
(1) c++ 클래스 형태로 만들어져 변수가 함수 밖에 보이지 않을 것
(2) win32 함수만 사용해서 다른 의존성 없을 것
     (MFC쓰면 버젼 의존성 발생해서 라이브러리로는 좋지 않음. 그런이유로 VC60 쓰는 회사가 꽤 많음)
(3) 오픈함수open /클로즈 함수 close /출력 함수 print 는 필수
(4) 오픈 함수에서 파일의 생성 유무를 선택할 수 있도록 파라메터 지원 
     (개발자는 필요하지만 사용자는 절대 필요없으므로. 더미 로그를 사용자 PC에 매일 수 메가씩 만든다고 생각라면 끔찍)
(5) 파일을 쓸 폴더가 존재하지 않을 경우 강제로 폴더 만들어 줄 것
(6) 지정한 파일명에 로그 생성 시각을 강제로 포함시켜서 생성할 것
    (같은 이름으로 로그 파일을 만들면 실환경에서 곤란한 상황 벌어짐)  => splitpath 함수 이용하면 구현 가능
(7) 파일에만 출력할 것이 아니라 DebugView.exe도 볼 수 있도록 OutputDebugString도 지원
(8) 출력함수print는 가변인수 지원. 
    (가변인수 지원안하면 알고리즘 코드외에 로그 문장 조합을 위한 불필요한 코드가 생김)
(9) 출력함수print는 매크로로 되어 있어서 __FUNCTION__과 __LINE__을 자동으로 추가해 줄 것
(10) 유니코드 지원

대충 이정도인데, 
로그 출력이 그냥 파일에 텍스트 뿌려대는 것 같지만 실제로 사용하려면 생각보다 까다로운 조건이 많이 붙네요.

네이버나 구글에서 다른 프로그래머가 만든 코드 찾아보면
(1)(3)(7)(8)(9)는 대부분 만족하는데
(2)(4)(5)(6)(10)은 크게 고려되지 않는 것 같네요.
실제 좀 복잡한 상용 제품에 쓸려면 더 복잡해야 할테고.

이번에 새로 구현한 함수 3개
    void OpenFile(LPCWSTR pwszPath, const EN_LVS_KIND enLvsKind);
    void Print(EN_LV_KIND enLvKind, LPWSTR pwszFunction, int nLine, LPWSTR pwszFormat, ...);
    void CloseFile(void);

요약>
좋은 로그 라이브러리 있으면 소개 좀... ^^;

— Summary —

Simple facts:

  • WordPress rewrite works well on hosting server but not works well on my home computer.
  • Ubuntu 12.04 LTS was released on 2012-04-26 and Apache httpd 2.4.2 was Released on 2012-04-17.
  • Check http://packages.ubuntu.com/precise/web/, you will see that Package: apache2 (2.2.22-1ubuntu1).
  • No available package for you to simply apt-get install yet.
  • To compile and install manually is fun and educational. To verify your knowledge on operation system. If you actually check source code and you will respect Open Source more.

What to achieve?

  • to compile and to install workable Apache httpd 2.4.2 to directory /usr/local/apache2.4.2
  • to have 2 Apache server, old one in version 2.2.22 listening to port 80, and new one in version 2.4.2 listening to port 8080

— Preparation —

Check list

  • to get source code of Apache at http://httpd.apache.org/docs/2.4
  • to get source code of Apr and Apr-Util at http://apr.apache.org
  • Put unpacked Apache source code under /home/mark/prja
  • Put unpacked Apr source code under /home/mark/prja/httpd-2.4.2/srclib/apr
  • Put unpacked Apr-Util source code under /home/mark/prja/httpd-2.4.2/srclib/apr-util

Check source code directory

mark@ubuntu:~$ pwd
/home/mark
mark@ubuntu:~$ cd prja
mark@ubuntu:~/prja$ ls
httpd-2.4.2
mark@ubuntu:~/prja$ cd httpd-2.4.2/
mark@ubuntu:~/prja/httpd-2.4.2$ ls
ABOUT_APACHE     buildmark.o    httpd           Makefile.in    README.platforms
acinclude.m4     CHANGES        httpd.dsp       Makefile.win   ROADMAP
Apache-apr2.dsw  config.layout  httpd.spec      modules        server
Apache.dsw       config.log     include         modules.c      srclib
apache_probes.d  config.nice    INSTALL         modules.lo     support
ap.d             config.status  InstallBin.dsp  modules.o      test
build            configure      LAYOUT          NOTICE         VERSIONING
BuildAll.dsp     configure.in   libhttpd.dsp    NWGNUmakefile
BuildBin.dsp     docs           LICENSE         os
buildconf        emacs-style    Makefile        README
mark@ubuntu:~/prja/httpd-2.4.2$ cd srclib
mark@ubuntu:~/prja/httpd-2.4.2/srclib$ ls
apr  apr-util  Makefile  Makefile.in
mark@ubuntu:~/prja/httpd-2.4.2/srclib$ cd ..
mark@ubuntu:~/prja/httpd-2.4.2$

— Step by Step —

1. Perform configure

mark@ubuntu:~/prja/httpd-2.4.2$ ./configure --prefix=/usr/local/apache2.4.2 --with-included-apr > ../prja-log1.txt
rm: cannot remove `conftest*': No such file or directory
rm: cannot remove `conftest*': No such file or directory
rm: cannot remove `libtoolT': No such file or directory
configure: WARNING: apr/apr-util is compiled without ldap support
configure: WARNING: apr/apr-util is compiled without ldap support
configure: WARNING: Your APR does not include SSL/EVP support.
mark@ubuntu:~/prja/httpd-2.4.2$

2. Perform make

mark@ubuntu:~/prja/httpd-2.4.2$ sudo make > ../prja-log2.txt
[sudo] password for mark: 
mark@ubuntu:~/prja/httpd-2.4.2$

Just in case, if you try more than one time, you might need to run “make clean” before “make” again.

3. Perform make install

mark@ubuntu:~/prja/httpd-2.4.2$ sudo make install> ../prja-log3.txt
libtool: install: warning: relinking `libaprutil-1.la'
mkdir /usr/local/apache2.4.2/modules
mkdir /usr/local/apache2.4.2/conf
mkdir /usr/local/apache2.4.2/conf/extra
mkdir /usr/local/apache2.4.2/conf/original
mkdir /usr/local/apache2.4.2/conf/original/extra
mkdir /usr/local/apache2.4.2/htdocs
mkdir /usr/local/apache2.4.2/error
mkdir /usr/local/apache2.4.2/icons
mkdir /usr/local/apache2.4.2/logs
mkdir /usr/local/apache2.4.2/cgi-bin
mkdir /usr/local/apache2.4.2/man
mkdir /usr/local/apache2.4.2/man/man1
mkdir /usr/local/apache2.4.2/man/man8
mkdir /usr/local/apache2.4.2/manual
mark@ubuntu:~/prja/httpd-2.4.2$

Several directories were created and we know where Apache was installed.

4. To start web server

mark@ubuntu:~/prja/httpd-2.4.2$ cd /usr/local/apache2.4.2
mark@ubuntu:/usr/local/apache2.4.2$ ls
bin    cgi-bin  error   icons    lib   man     modules
build  conf     htdocs  include  logs  manual
mark@ubuntu:/usr/local/apache2.4.2$ cd bin
mark@ubuntu:/usr/local/apache2.4.2/bin$ ls
ab            apu-1-config  dbmmanage    fcgistarter   htdigest  httxt2dbm
apachectl     apxs          envvars      htcacheclean  htpasswd  logresolve
apr-1-config  checkgid      envvars-std  htdbm         httpd     rotatelogs
mark@ubuntu:/usr/local/apache2.4.2/bin$ ./apachectl -v
Server version: Apache/2.4.2 (Unix)
Server built:   Jun 25 2012 10:27:49
mark@ubuntu:/usr/local/apache2.4.2/bin$

Now, this new Apache 2.4.2 is ready to tune up.
You might want to try to start it, to expect error message and to study it accordingly.

mark@ubuntu:/usr/local/apache2.4.2/bin$ ./apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
mark@ubuntu:/usr/local/apache2.4.2/bin$

Permission problem. So we should add sudo and try it again.

mark@ubuntu:/usr/local/apache2.4.2/bin$ sudo ./apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
(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
mark@ubuntu:/usr/local/apache2.4.2/bin$

Now, we have option, either to stop current running Apache or to let new Apache listen to alternative port. Stick to our plan, carry out the second solution.

Change directory to locate configuration file and make a backup first

mark@ubuntu:/usr/local/apache2.4.2/bin$ cd ..
mark@ubuntu:/usr/local/apache2.4.2$ ls
bin    cgi-bin  error   icons    lib   man     modules
build  conf     htdocs  include  logs  manual
mark@ubuntu:/usr/local/apache2.4.2$ cd conf
mark@ubuntu:/usr/local/apache2.4.2/conf$ ls
extra  httpd.conf  magic  mime.types  original
mark@ubuntu:/usr/local/apache2.4.2/conf$ sudo cp httpd.conf httpd.conf.backup
mark@ubuntu:/usr/local/apache2.4.2/conf$ ls
extra  httpd.conf  httpd.conf.backup  magic  mime.types  original
mark@ubuntu:/usr/local/apache2.4.2/conf$

Then, to use default text editor to modify configuration file,

mark@ubuntu:/usr/local/apache2.4.2/conf$ sudo gedit httpd.conf

You will see something like this,
gedit httpd.conf

Ctrl+F to Find the lines

#Listen 12.34.56.78:80
Listen 80

And change it to be

Listen 127.0.0.1:8080
#Listen 80

Save and exit editor. Run command to start it again

mark@ubuntu:/usr/local/apache2.4.2/conf$ sudo /usr/local/apache2.4.2/bin/apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
mark@ubuntu:/usr/local/apache2.4.2/conf$

Ignore warning message for a while.

5. Check result and it’s done

It works!

— Further Study —

  • Log files are here for future reference: prja-log1.txt,prja-log2.txt and prja-log3.txt.
  • You may compile and install Apr and Apr-Util first. However it’s easier to put them to proper location and to have configuration option –with-included-apr.

— Useful Command —

/usr/local/apache2.4.2/bin/apachectl -v
sudo /usr/local/apache2.4.2/bin/apachectl start
sudo /usr/local/apache2.4.2/bin/apachectl stop
sudo gedit /usr/local/apache2.4.2/conf/httpd.conf


#define catch_exception(ce_arg) fprintf(stdout, "%sn", ce_arg) 

if ( state == -1 ) 
  catch_exception("state is null"); 


위와 같은 코드가 있을때 전처리 과정에 의해 아래와 같은 정상적인 코드로 변환되겠죠? 


if ( state == -1 ) 
  fprintf(stdout, "%sn", "state is null"); 


그런데.. 아래와 같이 define을 사용하였다고 가정합니다. 


#define catch_exception(ce_arg) 
  fprintf(stdout, "%sn", ce_arg); 
  do_something(); 

if ( state == -1 ) 
  catch_exception("state is null"); 


위의 코드는 의도하였던 바와 다르게 아래와 같이 변환됩니다. 


if ( state == -1 ) 
  fprintf(stdout, "%sn", "state is null"); 
  do_something(); 


do_something() 문은 if의 제어를 받지 않게 되는 위치에 놓이게 되겠죠? 
의도한 바에 따른 코드는 아래와 같습니다. 


if ( state == -1 ) 
{ 
  fprintf(stdout, "%sn", "state is null"); 
  do_something(); 
} 


이렇나 경우에  #defines  do { ... } while(0)을 사용하게 됩니다. 


#define catch_exception(ce_arg) 
  do { 
    fprintf(stdout, "%sn", ce_arg); 
    do_something(); 
  while ( 0 ) 


변환된 코드는 아래와 같습니다. 


if ( state == -1 ) 
{ 
  do 
  { 
    fprintf(stdout, "%sn", "state is null"); 
    do_something(); 
  } 
  while ( 0 ); 
} 

또 다른 경우를 살펴보면 아래와 같습니다.

#define exchange(x, y) 
    { int tmp; tmp = x; x = y; y = tmp; } 


익숙한 코드죠? 우선 이러한 매크로가 선언되었습니다. 


if ( x > y ) 
  exchange(x, y); 
else 
  do_something(); 


이 코드는 아래와 같이 변환되겠죠? 


if ( x > y ) 
{ 
  int tmp; 
  tmp = x; 
  x = y; 
  y = tmp; 
} 
; 
else 
  do_something(); 


끝에 세미콜론 하나가 무척이나 거슬림을 넘어서 맘아프게하죠? ^^ㅋ 
이 경우에도  #defines  do { ... } while(0)을 사용하게 됩니다. 


#define exchange(x, y) 
    do { int tmp; tmp = x; x = y; y = tmp; } while ( 0 ) 

if ( x > y )
  exchange(x, y);
else
  do_something();


if ( x > y ) 
  do 
  { 
    int tmp; 
    tmp = x; 
    x = y; 
    y = tmp; 
  } while ( 0 ); 
else 
    do_something(); 


http://shonm.tistory.com/entry/%EC%95%84%ED%8C%8C%EC%B9%98-%EC%84%A4%EC%B9%98%EC%8B%9C-ssl-%EC%84%A4%EC%B9%98-https-%EC%A0%91%EC%86%8D


ssl 설치

http://www.openssl.org

//32BIT 일때

./config --prefix=/usr/local/ssl

make

make install

 

//./config --prefix=/usr/local/ssl -fPIC 이렇게 실행 해야 할 때도 있음

//우분투에선 -fPIC 옵션 안먹는데..(32bit ㅜ.ㅜ)

 

 


apache 설치

http://httpd.apache.org/


./configure --prefix=/usr/local/apache2.4 \
--enable-mods-shared=most \
--enable-module=so \
--enable-so \
--enable-rewrite \
--enable-mods-shared=ssl \
--with-ssl=/usr/local/ssl \
--enable-ssl \
--with-mpm=worker \
--enable-cache \
--enable-file-cache \
--enable-charset-lite


make

make install

 

 

//apache 설치시에
//configure: error: ... Error, SSL/TLS libraries were missing or unusable

//export LIBS=-ldl

//export LD_LIBRARY_PATH="/usr/local/openssl/"
//export LIBS="-L/usr/local/openssl"
//export CPPFLAGS="-I/usr/local/openssl/include/openssl" 

//이라고 쉘상에 쳐주고 다시 configure 할 것 (64bit 일 때 발생)

 

//configure: error: APR not found.  Please read the documentation. 오류 발생시
//우분투
sudo apt-get install libapreq2-dev
sudo apt-get install libaprutil1.dev

 


openssl 생성

cd /usr/local/apache2.4/conf
mkdir sslkeys
cd sslkeys

//key 파일 생성
openssl genrsa -des3 -out 211.63.6.184.key 2048
//csr 파일 생성 (서명 정보가 들어 있는 파일)
openssl req -new -key 211.63.6.184.key -out 211.63.6.184.csr

Country Name : 국가 => KR
State or province Name : 시/도/군 => Seoul
Locality Name : 구/군 => Seocho
Organization Name : 회사 => Incross
Organization Utin Name : 부서 => System2
Common Name : 이름 중 성 : Jung

Email Address : 메일주소 => shonm@incorsss.com
A Challenge password : ~~~~
An optional company name : ~~~

//crt 파일 생성 (인증서 생성)
openssl x509 -in 211.63.6.184.csr -out 211.63.6.184.crt -req -signkey 211.63.6.184.key -days 365

 

//아파치 구동시
//Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
cd /usr/local/apache2.4/conf
vi httpd.conf
ServerName:80 => ServerName ip(서버아이피):80
이렇게 되어 있는 곳을 고친다.


//httpd-ssl.conf 추가
cd /usr/local/apache2.4/conf
vi /usr/local/apache2.4/conf/httpd.conf

include conf/extra/httpd-ssl.conf
//주석 부분 주석 #삭제


//httpd-ssl.conf 수정
cd /usr/local/apache2.4/conf/extra
vi /usr/local/apache2.4/conf/extra/httpd-ssl.conf

#Listen 443 밑부분에 virtualhost 태그 들어가기 전에
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
추가

<VirtualHost _default_:443> => <VirtualHost 서버IP:443>
=>ex) <VirtualHost 211.63.6.184:443>

#SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5을 주석 처리(#을 앞에 붙임)
#<VirtualHost _default_:443> 태그 안에
#SSLCertificateFile "/usr/local/apache2.4/conf/server.crt" 주석 처리
#SSLCertificateKeyFile "/usr/local/apache2.4/conf/server.key" 주석 처리


#SSLEngine on 하단에

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

SSLCertificateFile "/usr/local/apache2.4/conf/sslkeys/211.63.6.184.crt"

SSLCertificateKeyFile "/usr/local/apache2.4/conf/sslkeys/211.63.6.184.key"
추가


#특정 디렉토리로 alias 걸어주고 싶다면 아래와 같이 하면 됨 </VirtualHost> 앞에

JkMount /cms_shop/* cms
JkMount /cms_shop/*.jsp cms


Alias /cms_admin_poc "/home/smadeco_cms/cms_admin_poc"
<Directory "/home/smadeco_cms/cms_admin_poc">
Options Indexes FollowSymLinks
</Directory>
추가

//Invalid command 'SSLPassPhraseDialog', perhaps misspelled or defined by a module not included in the server configuration
//에러 발생시
//httpd.conf 의 LoadModule ssl_module modules/mod_ssl.so 부분 주석 풀어줌
//비슷한 로그들이 발생시 LoadModule 쪽에서 so 파일들 주석을 푸는 것으로 해결해야 함

 

//http://211.63.6.184 로 들어오면 자동으로 https://211.63.6.184 이렇게 바꿔주고 싶다면
//httpd.conf 에 맨 하단에 아래의 문구를 첨가해주면 됨
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [C]

</IfModule>

 

 

 

#https://서버IP   이렇게 브라우저로 접근시 It works 가 나오면 성공임


ubuntu 계정 추가 Linux/kernel 2012. 9. 18. 18:33

1. 생성
$ sudo useradd -p /home/<username> -m -s /bin/bash <username>
$ sudo passwd <username>

2. 삭제
$ sudo deluser -r <username>
$ sudo cat /etc/passwd | grep <username>