2018. 7. 1. 13:39

도커를 재대로 이해 못한상태에서, 컨테이너 들어가서, 


아파치 설정을 바꾸고 자꾸 재시작 하려니까.... 컨테이너가 종료되고, 실행이 안되는거다.


이게..처음에 개념을 잘못알고 있었는데, 컨테이너는 OS라기보다는 하나의 프로그램이 실행중이고,


거기에 웹서버 프로그램을 계속 돌리고있는거다.


그래서, 웹서버가 재시작을 하면, 컨터이너가 종료가 되는거다.


웹서버 이미지 Dockerfile를 보면, 마지막에 대부분 웹서버를 실행시킨다.


CMD /usr/sbin/apache2 -D FOREGROUND



이런 문구가 있는데,


이말은, 아파치를 백단말고, 앞단에서 계속 실행시킨다는 말이였던거다.


이걸 모르니....아파치 재시작을 하면 계속 컨터이너가 종료되고, 


아파치설정파일을 잘못 수정해서 에러가 뜨면, 실행이 안되던지.....


컨테이너 시작을 해도, 계속 에러가 뜨는거다.


도커 로그를 보면, 


httpd (pid 6) already running

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message


이런 문구들이 계속 뜨고, 실행이 안되다.


아마, 웹서버 계속 돌고있어서, 컨테이너가 실행될때, 다시 시작해야되는데, 실행이 안되는거같다.


인터넷 찾아보면, 


apache2 reload 


등과 같은 명령어를 사용하라고, 하는데, 이건 안되는거다.


결론은, 아파치 설정을 바꾸려면,


컨테이너를 죽였다가 다시 실행해야하는데, 


단점이 설정에 에러가 있으면, 컨테이너 자체가 실행이 안되고, 콘테이너 안에 들어갈 수가 없어서, 다시 수정도 못하는거다.


그래서 찾은 방법은


Dockerfile를 만들어서, 아파치 설정을 실행전에 바꾸고, 실행하는 방법을 해야한다.


근데, Docker명령어가 익숙치 않으니까, 이것도 일이다....


그래서 내가 선택한 방법은, 설정을 바꾸고, 바꾼 이미지를 떠서, 그 이미지로 새 컨테이너를 만들어 보는거다.



그 방법은 다음 포스트에서...


도커 개인 이미지 만들기(컨테이너 테스트하는 법) : http://tyson.tistory.com/142




Posted by Tyson
2018. 6. 30. 00:14


docker: Error response from daemon: Get https://registry-1.docker.io/v2/thomasbisignani/docker-apache-php-oracle/manifests/latest: unauthorized: incorrect username or password.



  ~ docker pull hello-world

Using default tag: latest

Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/latest: unauthorized: incorrect username or password



위같은 에러가 떠서 보니까,


도커는 로그인할때, 


이메일에서 @이후꺼는 쓰면 안되네....


분명 이메일 썼을떄 로그인은 됐었는데....


도커에서 pull하려니까, 에러가 뜨길래....


docker login 


을 치고, 밑에처럼 @ 뒤에를 삭제하고 하니까, 되더라.

(아뒤는 예시)


Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.


Username (tyson@yahoo.com): tyson

Password: 

Login Succeeded




Posted by Tyson
2018. 6. 29. 17:14



; short_open_tag = Off


이건, <?php ?> 에서 php를 생략 가능하게 해준다.

<?   코드 ?> 이렇게만 쓸수있게 된다.

short_open_tag = On 

으로 바꿔준다.

이게 제일편한 설정임!!!!




;display_errors = On

에러를 보여준다.




;upload_tmp_dir = "/var/www/tmp"

업로드 임시 폴더를 지정해 준다.



;upload_max_filesize = 2048M

업로드 파일 최대값을 바꿔준다.

난 2Gb로 바꿔줌.


;post_max_size = 1024M

post 할때 사이즈도 바꿔준다.



default_charset = "UTF-8"

캐릭터셋도 UTF로 바꿔준다.




;date.timezone = "Asia/Seoul"

php 로그 를 보면, 밑에 같은 에러가 뜨는데, 


[Fri Jun 29 13:54:07 2018] [error] [client 192.168.0.14] PHP Warning:  phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/www/phpinfo.php on line 1


이때, 타임존 세팅해주면 위같은 에러가 안뜬다.



;session.save_path = "/home/www/session"

세션파일 경로를 바꿔준다.

여러서버에서 돌릴때는 스토리지 연결하고, 

여기에 경로 잡아주면, 세션은 공유되서, 끊기는 현상이 없어진다.



;session.name = PHPSESSID

하는김에, 세션 이름도 바꿔준다.








Posted by Tyson
2018. 6. 29. 14:24

www.test.com/test.php 


같이 뒤에 .php 를 생략하고 싶을때 하는방법으로,



아파치 설정에서, 

rewrite_module 

주석 해제해 주고,


NameVirtualHost *:80

<VirtualHost *:80>

    ServerAdmin webmaster@test.com

    DocumentRoot "/home/www/test"

    ServerName www.test.com

    Options +FollowSymlinks

    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME}\.php -f

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*)$ $1.php


    <Directory "/home/www/test">

        AllowOverride all

        Options Indexes MultiViews FollowSymLinks

#    Require all granted

    </Directory>

    ErrorLog logs/error_log

    CustomLog logs/access_log common


</VirtualHost>



가상호스트 세팅에, 위와 같이 추가해준다.


RewirteCond 에 php, 등을 써주면 된다.

DocumentRoot "/var/www/html"

등은, 다른 폴더로 세팅해준다.



Posted by Tyson
2018. 6. 29. 12:21



#이전 php 삭제 


PHP 설치 여부 확인

[root@localhost ~]# rpm -qa | grep php
php-common-5.1.6-5.el5
php-cli-5.1.6-5.el5




PHP 삭제

[root@localhost ~]# rpm -e php-cli-5.1.6-5.el5
[root@localhost ~]# rpm -e php-common-5.1.6-5.el5

[root@localhost ~]# rpm -qa | grep php

[root@localhost ~]#

Apache 확인 및 삭제

[root@localhost ~]# rpm -qa | grep apache
[root@localhost ~]# rpm -qa | grep httpd
httpd-2.2.3-6.el5.centos.1
[root@localhost ~]# rpm -e httpd-2.2.3-6.el5.centos.1
오류: Failed dependencies:
httpd >= 2.2.0 is needed by (installed) gnome-user-share-0.10-6.el5.i386


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


참고 블로그 http://runningbaek.blogspot.com/2009/08/rpm-mysql-apache-php.html


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



#yum remi Repo 추가하기 

 그냥 yum 하면, php5.3버전을 설치해서, Repo 업데이트 해줘야함.


참고 블로그 : https://zetawiki.com/wiki/YUM_remi_%EC%A0%80%EC%9E%A5%EC%86%8C_%EC%B6%94%EA%B0%80


[root@zetawiki ~]# rpm -qa | grep remi-release
[root@zetawiki ~]# yum install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
... (생략)
===========================================================================================
 Package              Arch           Version                 Repository               Size
===========================================================================================
Installing:
 remi-release         noarch         6.8-1.el6.remi          /remi-release-6         6.3 k

Transaction Summary
===========================================================================================
Install       1 Package(s)

Total size: 6.3 k
Installed size: 6.3 k
Is this ok [y/N]: y
[root@zetawiki ~]# rpm -qa | grep remi-release
remi-release-6.8-1.el6.remi.noarch
[root@zetawiki ~]# yum list remi-release




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



# remi Repo를 이용해서 yum 으로 php5.6 설치


참고 블로그 : https://zetawiki.com/wiki/CentOS_6%EC%97%90_PHP_5.6_%EC%84%A4%EC%B9%98_(yum_remi)




[root@zetawiki ~]# yum --enablerepo=remi-php56 install php
... (생략)
===========================================================================================
 Package              Arch         Version                          Repository        Size
===========================================================================================
Installing:
 php                  x86_64       5.6.26-1.el6.remi                remi-php56       2.7 M
Installing for dependencies:
 libedit              x86_64       2.11-4.20080712cvs.1.el6         base              74 k
 libzip-last          x86_64       1.1.3-1.el6.remi                 remi-safe         42 k
 php-cli              x86_64       5.6.26-1.el6.remi                remi-php56       4.0 M
 php-common           x86_64       5.6.26-1.el6.remi                remi-php56       1.1 M
 php-pecl-jsonc       x86_64       1.3.10-1.el6.remi.5.6            remi-php56        51 k
 php-pecl-zip         x86_64       1.13.4-1.el6.remi.5.6            remi-php56        53 k

Transaction Summary
===========================================================================================
Install       7 Package(s)

Total download size: 8.0 M
Installed size: 29 M
Is this ok [y/N]: y



나 같은 경우는 php-devel도 필요하기 때문에 php-devel도 추가한다.




예>

[root@localhost oci8-1.4.9]# yum --enablerepo=remi-php56 install php php-devel



확인 

[root@zetawiki ~]# rpm -qa | grep php



[root@zetawiki ~]# php -v
PHP 5.6.26 (cli) (built: Sep 15 2016 14:57:05) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies





그 사실, php-devel 이 필요한 이유는 php oci8 설치할때, 

phpize 를 사용해야하는데, phpize는 php-devel이 필요하기 때문이다.




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


#oci8 설치


참고 블로그 : http://zetawiki.com/wiki/PHP%EC%97%90%EC%84%9C_%EC%98%A4%EB%9D%BC%ED%81%B4_DB_%EC%82%AC%EC%9A%A9


pecl download oci8-1.4.9.tgz
tar xvzf oci8-1.4.9.tgz
cd oci8-1.4.9
phpize
./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib
ln -s /usr/include/oracle/11.2/client64/ /usr/lib/oracle/11.2/client64/lib/include
make all install



위에서 OCI8 다운로드 부분인 pecl download oci8-1.4.9.tgz은, 이것 대신 wget http://pecl.php.net/get/oci8-1.4.9.tgz를 실행하거나, http://pecl.php.net/package/oci8 에서 직접 다운로드해도 된다.




[root@zetawiki ~]# pecl download oci8-1.4.9.tgz
downloading oci8-1.4.9.tgz ...
Starting to download oci8-1.4.9.tgz (169,255 bytes)
.....................................done: 169,255 bytes
File /root/oci8-1.4.9.tgz downloaded
[root@zetawiki ~]# tar xvzf oci8-1.4.9.tgz 
... (생략)
oci8-1.4.9/php_oci8.h
oci8-1.4.9/php_oci8_int.h
oci8-1.4.9/README
[root@zetawiki ~]# cd oci8-1.4.9
[root@zetawiki oci8-1.4.9]# phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
[root@zetawiki oci8-1.4.9]# ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib
... (생략)
configure: creating ./config.status
config.status: creating config.h
config.status: executing libtool commands
[root@zetawiki oci8-1.4.9]# ln -s /usr/include/oracle/11.2/client64/ /usr/lib/oracle/11.2/client64/lib/include
[root@zetawiki oci8-1.4.9]# make all install
... (생략)
Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/lib64/php/modules/
→ /usr/lib64/php/modules/ 에 PHP 확장기능 oci8.so 가 설치되었다.





#####위에는 오라클 인스턴스 클라이언트를 쓸때라, 경로 지정을 해줘서 라이브러리 가져와서 쓰는법이고,

오라클이 설치되어있는 상태에서는 ,


./configure --with-oci8=shared,$ORACLE_HOME


위에처럼 치고, 

Ln 링크는 생략하고,


make all install 해주면, 된다.



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

Libraries have been installed in:

   /appls/oci8File/oci8-1.4.9/modules


If you ever happen to want to link against installed libraries

in a given directory, LIBDIR, you must either use libtool, and

specify the full pathname of the library, or use the `-LLIBDIR'

flag during linking and do at least one of the following:

   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable

     during execution

   - add LIBDIR to the `LD_RUN_PATH' environment variable

     during linking

   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag

   - have your system administrator add LIBDIR to `/etc/ld.so.conf'


See any operating system documentation about shared libraries for

more information, such as the ld(1) and ld.so(8) manual pages.

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


Build complete.

Don't forget to run 'make test'.


Installing shared extensions:     /usr/lib/php/modules/

[root@localhost oci8-1.4.9]# 



위에처럼  /usr/lib/php/modules/ 폴더에, 설치 됬다고 뜰거다.


설치확인

[root@zetawiki oci8-1.4.9]# ll /usr/lib64/php/modules/oci8.so 
-rwxr-xr-x 1 root root 502555 Jun 19 14:44 /usr/lib64/php/modules/oci8.so






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


# php 연동하기

[root@zetawiki oci8-1.4.9]# echo 'extension=oci8.so' > /etc/php.d/oci8.ini
[root@zetawiki oci8-1.4.9]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]



연동확인

php -r "oci_connect();"
[root@zetawiki ~]# php -r "oci_connect();"
Warning: oci_connect() expects at least 2 parameters, 0 given in Command line code on line 1




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



여기서 부터 중요하다!!


오라클이랑, apache를 연결해줘야한다.

처음에 이것때문에, oci8은 떴는데, 디비 연결이 안되서......헤맸었다.

근데, phpinfo.php를 만들어서 목록을 보면 환경변수에, Oracle이 안떴다.



vi /etc/sysconfig/httpd

또는 

~/.bash_profile (#source .bash_profile)

로 들어가서,



export LD_LIBRARY_PATH="/OraRoom/oracle/11g/lib"

export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"

export ORACLE_HOME="/OraRoom/oracle/11g"

export TNS_ADMIN="/OraRoom/oracle/11g/network/admin"



오라클 정보를 추가해준다.



그리고 항상 서버는 재시작!!!

service httpd restart




이야~ 인제 다 되었다.!!!

테스트 하러가자!!!!!


아~!! tnsnames.ora 파일을 불러올때 확인해야될께, 권한이다.

폴더랑, 파일 권한을 바꿔줘야한다!!!


chmod 755 tnsnames.ora


이거때문에, tns목록을 php에서 못 불러와서.....몇시간을 헤맸다!!!



테스트 법은 추후에 다시 올리겠다.


Posted by Tyson
2018. 6. 28. 15:26

도커가 최소 os다 보니까, 항상 한글이 깨진다.



locales 설치:

apt-get install locales


locale 설정:

export LANGUAGE=ko_KR.UTF-8
export LANG=ko_KR.UTF-8
locale-gen ko_KR ko_KR.UTF-8
update-locale LANG=ko_KR.UTF-8
dpkg-reconfigure locales



출처: http://pragp.tistory.com/entry/Docker-한글-설정하기 [Pragmatic Programming]


위처럼 해주고, 



그래도 vi 들어갔을때도 깨지면, 


vi 들어가서, 


 :set encoding=utf-8

:set encoding=euc-kr


위처럼 해주던지,


vi ~/.vimrc

또는

vi /etc/vim/vimrc (전체사용자)


들어가서, 

set encoding=utf-8

set fileencodings=utf-8,cp949


추가해준다.


출저 블로그 http://harryp.tistory.com/457



Posted by Tyson
2018. 6. 28. 13:58

처음에, Web Station으로 시놀로지에 도메인를 연결해서 홈페이지를 쓰다가, 


사이트를마다, 어떤건, Oracle, 어떤건 mySql 등을 써서...귀찮아서, 


시놀로지에 Docker를 설치하고, 도커로 웹서버를 하나 만들었다.(도커 사용법은 따로 포스팅하겠다.)


그리고 포트를 들어가는 포트를 예로 8122로 세팅을 했다고 치면,


그리고, www.test.com이라는 도메인을 치면, 위 콘테이너로 가게 하고 싶은거다.


www.test.com:8122 이렇게 포트 쓰는거 없이...




#도커 포트 설정확인




#Web Station에서의 도메인 세팅




가상호스트 에서 생성을 해서 


밑에 처럼 세팅을 해주면, 웹서버는 Nginx 또는 Apache 등 선택하고, php선택가능하다.



하지만, 웹서버마다, 다 세팅이 틀려서,


결국 도커를 선택하고, 


콘테이너들을 만들었다.


그리고, 어떤 도메인으로 들어왔을때, 몇번 포트로 보내고 싶었다.


www.test.com 도메인으로 들어오면, 8081 포트로 보내라, 


이렇게 세팅하기 위해서는 역방향 프록시 세팅을 해줘야 한다.


제어판 => 응용프로그램 포털 =>  "역방향 프록시" 탭





으로 가서 생성버튼을 누른다.


그리고 밑에처럼 세팅해준다.





설명 : 알아서 적어준다.


HTTP 


호스트이름 : 내가 쓸 도메인명을 적어준다.

www.test.com


웹서버는 기본 80포트니까, 80포트 세팅해준다.


그리고, 대상은 


호스트 이름에, 내서버의 8122포트로 접속하는거니까, 


localhost 라고 써주고,(아니면 ip를 직접 적어줘도 된다)


원하는포트(도커 콘테이너에서 세팅한 포트) 를 적어준다. 



사진캡쳐가 여러개다보니...포트번호가 좀 왔다갔다 하는데, 


원하는 포트를 적어주면 된다.





참고, 블로그

https://www.clien.net/service/board/cm_nas/10938224


https://tetzzang.com/%EC%97%AD%ED%94%84%EB%A1%9D%EC%8B%9C%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%ED%8F%AC%ED%8A%B8%EB%B2%88%ED%98%B8-%EC%97%86%EC%9D%B4-dsm%EC%97%90-%EC%A0%91%EC%86%8D%ED%95%98%EB%8A%94-%EB%B2%95


위 블로그 보면, https 도 설정하는 법이있다.




**참고로, Web Station 에 등록된 도메인은, 역방향 프록시 에 등록 안된다.

먼저 Web Station에서 가상호스트 목록에서 삭제해준다.





Posted by Tyson
2018. 6. 28. 13:25

아파치에, php, Oracle를 제일 많이 쓰는데, 


Oracle 연결할때 쓰는 oci8 세팅되어있는 도커를 찾다가, 좋은 이미지를 찾았다.



https://hub.docker.com/r/thomasbisignani/docker-apache-php-oracle/


https://github.com/davidgaya/docker-apache-php-oci



#도커 이미지 가져오기 

docker pull thomasbisignani/docker-apache-php-oracle


#도커 생성

docker run -p 8080:80 -d -v $(pwd)/sample:/var/www/html thomasbisignani/docker-apache-php-oracle


docker run -p 8080:80 -d -v /web/front:/var/www/html thomasbisignani/docker-apache-php-oracle


서버의 web/front 랑 도커의 폴더랑 연결해 놓는다.


서버의 web/front 폴더에 파일 올리면, 된다.



#도커 목록확인

docker ps -a


하면 실행중인 도커 목록 뜨고, id로 접속하면 된다.



#도커 접속

예)

sudo docker exec -it 7fd516 /bin/bash

sudo docker exec -it {id값} /bin/bash



기본에는 vi가 없어서, vim설치부터했다.


#vim 설치

apt-get update

apt-get install vim


#퍼미션 문제가 뜨길래, 폴더 권한 풀어줬다.

#폴더 권한 주기

cd /var/www

chmod 757 /var/www/html



#아파치 설정바꾸기

vi /etc/apache2/apache2.conf


에서 추가


<Directory /var/www/html/>

    Options Indexes FollowSymLinks

    AllowOverride All

    Require all granted

</Directory>




#프록시 설정해주기

#서버에 여러 도메인 사용시, 가상호스트 세팅을 해주고, 

reverse proxy 설정을 해줘서, 원하는 도메인으로 접속시 8080포트로 보내주는방법이다.


이런식으로 여러 도커 설정을 해줬다.


이건 내 서버 vhost 파일 위치다.

/usr/local/etc/apache24/conf/extra/httpd-vhost.conf

또는

/etc/httpd/conf 에 있다



#원본

<VirtualHost *:80 *:443>

    ServerName test.com

    SetEnv HOST test.com

    DocumentRoot "/web/front"

    ProxyPass / http://localhost:8080/

    ProxyPassReverse / http://localhost:8080/

    <IfModule dir_module>

        DirectoryIndex  index.html index.htm index.cgi index.php index.php5

    </IfModule>

    <Directory "/web/front">

        Options MultiViews FollowSymLinks ExecCGI

        AllowOverride All

        <IfModule authz_core_module>

            Require all granted

        </IfModule>

    </Directory>


    <FilesMatch "\.(php[345]?|phtml)$">

        SetHandler "proxy:unix:/run/php-fpm/php56-fpm.sock|fcgi://localhost"


    </FilesMatch>


    ErrorDocument 400 /_webstation_/400.html

    ErrorDocument 401 /_webstation_/401.html

    ErrorDocument 402 /_webstation_/402.html

    ErrorDocument 403 /_webstation_/403.html

    ErrorDocument 404 /_webstation_/404.html

    ErrorDocument 405 /_webstation_/405.html

    ErrorDocument 406 /_webstation_/406.html

    ErrorDocument 407 /_webstation_/407.html

    ErrorDocument 408 /_webstation_/408.html

    ErrorDocument 500 /_webstation_/500.html

    ErrorDocument 501 /_webstation_/501.html

    ErrorDocument 502 /_webstation_/502.html

    ErrorDocument 503 /_webstation_/503.html

    ErrorDocument 504 /_webstation_/504.html

    ErrorDocument 505 /_webstation_/505.html


</VirtualHost>



위 설정은 내 설정이므로, 각자 서버에 맞게 찾아서 세팅하세요.


역프록시 설정은



    ProxyPass / http://localhost:8080/

    ProxyPassReverse / http://localhost:8080/


위에 두줄 추가해주고, 하면 나같은 경우는 됬다.


그리고


"리눅스 가상호스트" 검색하면 많이 뜨니까, 가상호스트 세팅은 찾아서 해보세요.


이렇게만 해 놓으면 그래도 바로 Docker 사용가능하다.


사실 이만한 이미지는 없는거 같다.


vi 정도만 설치해주고, 콘테이너 안에서 대부분 설정따로 해줄만한거가 없기 때문에, 완전 빠르게 세팅했다.



시놀로지에서 프록시설정해주기

(http://tyson.tistory.com/135)




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

참고 블로그 

http://m.assayo.com/board_view.html?board=forum_nas&pid=19139

Posted by Tyson
2018. 6. 28. 12:14

처음에 도커 이해가 안되는게, 


콘테이너 생성할때, 포트로 설정을 해야하는데, 


웹 서버들 80을 디폴트로 사용하는데,


80포트는 한번 사용하면, 다른 컨테이너에서 사용할수가 없는거다.


근데, 한 서버에 여러 도메인을 관리하면.....


컨터이너 별로 만들어서 사용하는데, 포트는 80 중복이 안되는데...어떻게 하라는거냐?????


이 개념이 이해가 안되니까, 웹에서 Docker를 사용하는게 한개밖에 안되면...너무 빡센거다.


그래서, 찾은 방법이 역프록시 방법이다.


예로, 호스팅 업체에는 


밑에 2개 도메인을 다 내 서버에 연결해놓은다. 

www.tyson1.co.kr 

www.tyson.2co.kr 


그리고, 서버에서 웹서버 콘테이너를 2개 만들고, 포트를 하나는 8081, 8082 이렇게 했다고 치면, 


아파치설정에서 가상호스트세팅에서, * 80 으로 들어오는것을 


reverse proxy (역프록시)로 


www.tyson1.co.kr 로 들어오는거는 localhost:8081  로 가게 하고,


www.tyson2.co.kr 로 들어오는거는 localhost:8082  로 가게 하면 되는거다.



리눅스 가상호스트 찾아보고,


아파치 설정에서, 


<VirtualHost *:80>

    ServerAdmin test@test.com

    DocumentRoot /var/www/html/

    ServerName www.tyson1.com

    ProxyPass / http://localhost:8081/

    ProxyPassReverse / http://localhost:8081/

    ErrorLog "logs/error_log"

    CustomLog "logs/access_log" common

</VirtualHost>


위에처럼, 


    ProxyPass / http://localhost:8081/

    ProxyPassReverse / http://localhost:8081/

두 부분을 추가해주던지 하면 된다.




이 방법을 못 찾으니까, 도커를 처음에는 웹서버 하나만 올릴수있는거면 왜 사용하지라는 고민을 많이했다.



그러다가, 도커에 가상호스트 구축 및 서브 도메인 연결하는 콘테이너가 있고, 사용하기 간단하게 만들어 놓은것을 찾았다.


밑에 두 블로그를 참조한거다.



https://blog.youngbin.kim/2017/07/10/docker-%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EA%B0%80%EC%83%81-%ED%98%B8%EC%8A%A4%ED%8A%B8virtual-host-%EA%B5%AC%EC%B6%95-%EB%B0%8F-%EC%84%9C%EB%B8%8C-%EB%8F%84%EB%A9%94%EC%9D%B8-%EC%97%B0%EA%B2%B0/



https://zeewhon.blogspot.com/2017/06/blog-post_13.html



  1. docker pull jwilder/nginx-proxy
  2. docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
  1. docker run -d -e VIRTUAL_HOST=blog.youngbin.kim wordpress:latest


프록시 서버 콘테이너를 제일 먼저 생성해서, 80포트는 무조건 저걸 거치게 하고,


다음 콘테이너들 (실제 웹서버로 돌릴 콘테이너들 생성할때, VIRTUAL_HOST= 세팅에 도메인명 넣어주면, 


저 콘테이너로 역프록시를 자동 세팅해주는거다.


완전 대박이다!!


이게 해결되니까, 이제 도커를 엄청 이용할 수 있을거 같다.!!



그리고, 참고로, 난 시놀로지Nas에서 도커를 생성해서 웹서버 2개를 돌렸는데, 도커에서 80를 못써서 어떻게 할지 찾았는데,


시놀로지에서도 역프록시 세팅을 해서 여러개 올릴 수 있는 방법을 찾았다.


그 방법도 시놀로지 카테고리에 작성해 놓겠다.

(http://tyson.tistory.com/135)



참고 블로그

http://m.assayo.com/board_view.html?board=forum_nas&pid=19139







'컴퓨터 > Docker' 카테고리의 다른 글

도커 로그인 에러  (0) 2018.06.30
Docker Vim 한글 깨짐  (0) 2018.06.28
Apache PHP Oracle Docker 사용하기  (0) 2018.06.28
도커 도메인 세팅  (0) 2018.01.29
도커 컨테이너 생성하기  (0) 2017.05.11
Posted by Tyson
2018. 6. 25. 11:16

Visio 같은경우에 파일을 열면, 한 창에, 여러 작업으로 열리다 보니, 

 

멀티로 여러개 보면서 작업하기 불편하다.

 

그래서 창 여러개 하는 방법이다.

 

엑셀 창 여러개 하는 방법이랑 비슷한데,

 

먼저, 

 

시작 에서 "실행" 를 실행한다.

 

윈도우 10인 경우에는 "시작"버튼 옆에 검색 버튼을 눌러서, "실행"을 검색해본다.

 

그리고, 레지스트리 편집기 여는 방법인, 

 

regedit  를 실행한다.

 

 

 

 

Visio 2010를 예로 보면, 편집기

 

\HKEY_CLASSES_ROOT\Visio.Drawing.11\shell\Open\command

 

폴더에 정보가 있다.

 

밑에 사진처럼 2개의 값이 있다.

 

(기본값)

command

 

이렇게 있는데, 

 

 

 

 

 

 

 

 

(기본값) 에서 오른쪽 버튼 눌러서 "수정"을 누른다.

 

 

 

 

그리고 값을 보면, 

 

"C:\Program Files\Microsoft Office\Office14\VISIO.EXE" "%1"

 

이거 또는

 

"C:\Program Files\Microsoft Office (x86)\Office14\VISIO.EXE" "%1"

 

으로 visio 실행파일 위치가 있을거다.

 

여기에서 /m 문자열을 추가해 주면 된다.

 

"C:\Program Files\Microsoft Office\Office14\VISIO.EXE" /m "%1"

 

위에처럼 /m 를 추가해준다.

 

 

 

 

혹시 모르니까, command 값은 복사해놓는다.

그리고 밑에 있는 command 는 삭제해준다.

 

오른쪽 버튼 눌러서, 삭제하면 된다. 

 

에러 뜨면, 다시 복구해야하니까, command 수정으로 들어가서 값은 복사해 놓는다.

 

여기에서 command 삭제라고 해서, 내용만 삭제했었는데,

 

아에 다 삭제를 해줘야한다.

 

 

 

 

그러면 밑에처럼 (기본값)만 남아 있을거다.

 

 

 

그리고 visio 파일을 클릭하면, 파일마다 각 창 여러개로 뜰거다.

 

 

 

 

 

 

Posted by Tyson