{"componentChunkName":"component---src-templates-post-template-jsx","path":"/works/posts/2021-02-22--001","result":{"data":{"site":{"siteMetadata":{"title":"Blog by Eunyoung","subtitle":"작업 기록 블로그","copyright":"© All rights reserved.","author":{"name":"EunYoung","twitter":"#"},"disqusShortname":"","url":"https://ssongey.github.io"}},"markdownRemark":{"id":"3922c878-04ff-5e9d-99dc-872a09f64d9d","html":"<br>\n<p>이번에 다른 부서에서 사온 제품 2개에 대한 설치 매뉴얼 검토중에 작업 단순화가 필요하다고 느꼈다.<br>\n이에 불필요한 작업 제거 및 설치 단순화를 하여 설치 스크립트를 생성하는 목적으로 이 작업을 진행하여 되었다.<br>\n이 작업을 진행하면서 배운 내용이나 기록이 필요한 내용을 정리한다.  </p>\n<p><span class=\"title__sub1\">■ 1. 수작업 최소화</span>\n<span class=\"title__sub2\">1.1. Cloud, On-Premise 둘다 OS는 데비안 계열을 사용</span></p>\n<ul>\n<li>Ubuntu 18.04 에서 진행</li>\n</ul>\n<p><span class=\"title__sub2\">1.2. 두 제품에 대한 리펙토링을 진행하기 전까지 JAVA8, Tomcat8 사용</span>\ntomcat major 버전이 fix 이므로 8버전의 latest 파일을 받아 아래 파일들을 수정한다.</p>\n<ul>\n<li><b>1.2.1. context.xml</b><br>\n— datasource 설정  </li>\n<li><b>1.2.2. server.xml</b><br>\n— 최대 2개의 WAS 서비스를 사용하므로 <span class=\"text-mark__green\"> port 를 동적으로 설정</span>  </li>\n</ul>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/3d14480d82b7fb44b2423b96a57fe1a5/29492/001-01.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 522px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 28.750000000000004%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAABJ0AAASdAHeZh94AAABAUlEQVQY00WRa5KEMAiE5zg75okhiRpj1dbe/0y9gDXOD8Sk0h/QvHiNSNGDqCBIjhQQU4AP3nLMd6ScUGsFMyPLfxZdLgnECUneLcsC5xxef9eKua8Yx4bWO7gXULsflk5yJgF7KZrQWrNQYNA7igaOUvwB7iL+PQlzS7jODb03lLoa0KpnL906CxUomHKWrpIV0ql0Gu+dQV9BDl2EW01gcjJSwb7vBq0bgxtjOzpKk25bwbgOK0pEZo92qZY8QK36816eoHXFOU+DzjkxxsA4B7iKFRzBO9m4CggSb9Eo6BlZP5/QSx1FfVLzNRNl6cDLAqKAdDn3MnQRlL7effT/M827uUwjAHMAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"001 01\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/3d14480d82b7fb44b2423b96a57fe1a5/29492/001-01.png\"\n        srcset=\"/devHistoryBlog/static/3d14480d82b7fb44b2423b96a57fe1a5/8ff5a/001-01.png 240w,\n/devHistoryBlog/static/3d14480d82b7fb44b2423b96a57fe1a5/e85cb/001-01.png 480w,\n/devHistoryBlog/static/3d14480d82b7fb44b2423b96a57fe1a5/29492/001-01.png 522w\"\n        sizes=\"(max-width: 522px) 100vw, 522px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<ul>\n<li><b>1.2.3. catalina.sh</b><br>\n— <span class=\"text-mark__green\">java system properties 설정</span><br>\n— http 포트가 8080 일 경우,<br>\n — 8005 -> ${port.shutdown}<br>\n — 8009 -> ${port.ajp}<br>\n — 8443 -> ${port.https} 가 된다.  </li>\n</ul>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/a463a5f1f2799ad66ea082705e23a975/dc333/001-02.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 938px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 17.916666666666668%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAABJ0AAASdAHeZh94AAAAzElEQVQY002Py07DMBBF8yc0NHHsxI+xY6e0RRFIrNjw/19zGIJUdXF072yuznS+CiEFohQlk7UHzUlWBqn4KMctcSF4RwwzfrFEPx89Bo/xgSEkhpjp4ltjzhlTd0y5ULQXESSv2NQYy41xvWNjxM06pGPODU+MGE1zpKErHzu23Xi5/9C3Tzbt17rxvl7Y54TLO6frN/32hZGNrEbOnTFT/2B6cKILrWDV6KyGfy+K9qovtlyoKbEuC1FtF+2jGk5qY+3/4GRfD8wTv0O9eelDVkBRAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"001 02\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/a463a5f1f2799ad66ea082705e23a975/dc333/001-02.png\"\n        srcset=\"/devHistoryBlog/static/a463a5f1f2799ad66ea082705e23a975/8ff5a/001-02.png 240w,\n/devHistoryBlog/static/a463a5f1f2799ad66ea082705e23a975/e85cb/001-02.png 480w,\n/devHistoryBlog/static/a463a5f1f2799ad66ea082705e23a975/dc333/001-02.png 938w\"\n        sizes=\"(max-width: 938px) 100vw, 938px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<p><span class=\"title__sub1\">■ 2. Service 등록</span>\n<span class=\"title__sub2\">2.1. 서비스파일 생성</span></p>\n<div class=\"gatsby-highlight\" data-language=\"shellscript\"><pre class=\"language-shellscript\"><code class=\"language-shellscript\">[Unit]\nDescription=WCA WAS\nRequires=mysqld.service\nAfter=network.target mysqld.service\n\n[Service]\nType=forking\nEnvironment=WCA_LIB=/opt/penta/wca-libs\nEnvironment=SERVICE_PORT=8080\nEnvironment=CATALINA_HOME=/opt/tomcat-wca\nEnvironment=JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\nEnvironment=LD_LIBRARY_PATH=/opt/penta/wca-libs:$LD_LIBRARY_PATH\n\nUser=autocrypt\nGroup=autocrypt\n\nExecStart=/opt/tomcat-wca/bin/startup.sh\nExecStop=/opt/tomcat-wca/bin/shutdown.sh\n\nRestart=always\n\n[Install]\nWantedBy=multi-user.target</code></pre></div>\n<ul>\n<li><b>Requires vs After</b><br>\n— <a href=\"https://stackoverflow.com/questions/40593242/systemd-using-both-after-and-requires\">https://stackoverflow.com/questions/40593242/systemd-using-both-after-and-requires</a></li>\n<li><b>Environment</b><br>\n— User를 설정하더라도 bash_profile이나 기타 <span class=\"text-mark__green\">쉘/유저 기반의 환경 변수는 먹지 않는다.</span><br>\n— 따라서 해당 프로퍼티를 사용하여 환경 변수를 설정한다.</li>\n<li><b>Restart</b><br>\n— 해당 서비스가 강제 종료되었을 경우 재시작에 대한 정책이다.<br>\n— systemctl 로 종료했을 경우는 작동하지 않는다.</li>\n<li><b>WantedBy</b><br>\n— [install] 은 “systemctl enable [service name]” 으로 서비스 등록 시 이용하는 섹션이다.<br>\n— WantedBy 는 이 서비스가 어떤 전제조건 하에서 실행되는 지를 결정한다.<br>\n— multi-user.target 은 runlevel 3 환경이 모두 구동되었을 때를 의미한다.<br>\n— <span class=\"text-mark__blue\">run leval (리눅스시스템의 실행레벨)</span><br>\n ▶ init 0 : halt, 시스템 종료<br>\n ▶ init 1 : Single user mode, 관리 모드로 root 계정만 사용 가능<br>\n ▶ init 2 : Multiuser, without NFS (The same as 3, if you do not have networking)<br>\n ▶ init 3 : Full multiuser mode, default level<br>\n ▶ init 4 : unused, 사용하지 않는 실행레벨, 커스텀레벨로 사용 가능<br>\n ▶ init 5 : X11, X윈도우 환경으로 실행된 멀티유저 실행모드<br>\n ▶ init 6 : reboot  </li>\n</ul>\n<p><span class=\"title__sub2\">2.2. 기타 설정 및 서비스 활성화 스크립트 생성</span></p>\n<ul>\n<li>각 Step 별로 블럭지어 실패 시 메시지 출력 및 종료하도록 구성</li>\n</ul>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/2a40559cff525bbf32826ed963af32c2/47730/001-03.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 428px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 51.66666666666666%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAABJ0AAASdAHeZh94AAABpklEQVQoz3VS2W7jMAzMr8SHLkvyIfl24mYD7P//0ZRk07RYYB8GpDjUiKR4yVODaXaI0WBOGbkf0EePoWvRtxEd+V0M5Ac5T0PGSDmJeM5NfYC2BZQuoU2Jy9o5dIOGdZVcjKGBDwYhNmjZbwyidwjeCqJv0AUvsei9xJQpRIxFL1YVqDW/cEVoLdIY0VYFtrJC4xXWY8KQPOZlIBuQx5ZyqPrBYdkauKaG1iz4JXrhco0tRXBIEY/nHcfc4u/ZY1oD9hCwTQPOx4Hz48CT+PNjx+Ox47hl3O4dOupScVEsaLhUQqWuaGkej+eJdR+R1x6jqpGVwn5bsG0TjvuG/VgwryPuJwmeB+XfsFD1Sr8qHI0mIU9zq2FojtyCdeTbCoaSJEatc5x9hn3BNUrA/lswaZoBtWwEBZGlgAW+kmvheEaSQ5csPeY4Ln4t52/R1wwLOaTs8OfZIyUn67HmmWwiO6Gl9eG1Sl0n3JJGLJnaZ5uYt/S5V1waekXLpxQYsqVBRyGl5deH/Qv9q2L9XplXy72u8P3TTKr3CvxH7Bf3Y8v3Hn4CKQkvjR6008AAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"001 03\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/2a40559cff525bbf32826ed963af32c2/47730/001-03.png\"\n        srcset=\"/devHistoryBlog/static/2a40559cff525bbf32826ed963af32c2/8ff5a/001-03.png 240w,\n/devHistoryBlog/static/2a40559cff525bbf32826ed963af32c2/47730/001-03.png 428w\"\n        sizes=\"(max-width: 428px) 100vw, 428px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<ul>\n<li>서비스 활성화 Step<br>\n— service 파일 활성화 명령어 : $ systemctl enable {service 파일명}<br>\n— daemon reload 명령어 : $ systemctl daemon-reload  </li>\n</ul>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/5d8236538d4cabf795efc722db79b89f/242e2/001-04.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 703px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 40%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABJ0AAASdAHeZh94AAABPElEQVQoz3WR2XaEIBBE/ZNZHJVVEMFtxpm85P8/qVKYmOPJ8nAPDTTVVHfR9wJdp9G1Dq3V8M5AqRuq5oyGyOaERpxRiyuq+vLFeeNWnQ4xc5oLCiFKPigRk0K0DYKzGENC8h6qv+M0vHOdWEhiGHsS0PcWIVos97TtUzR4rC2MqVHUzZWCV160mJJD8Eycxo0wzjDzC3Fe8HiMWJ8LmSnUoQuGWHhv4JxAHyUknRX5m5lxilvyNEe83ijwTBQJuM8B6xoxLwPS0BFPNxpKV98286dyK/Ja5H5l5ZyYxR7rxMdZQDP2myWl2RYm78Uz2ZWQn+6OcaFVBaEpygOpSihZMc57roJ34radHR/vHAvsFHWeGoNh5FDYXGcNWiPh2hxrWKM4ffVL7D84ZVYSl82WkOWfVXeLf/Hz7gO0xPDAWquT1AAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"001 04\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/5d8236538d4cabf795efc722db79b89f/242e2/001-04.png\"\n        srcset=\"/devHistoryBlog/static/5d8236538d4cabf795efc722db79b89f/8ff5a/001-04.png 240w,\n/devHistoryBlog/static/5d8236538d4cabf795efc722db79b89f/e85cb/001-04.png 480w,\n/devHistoryBlog/static/5d8236538d4cabf795efc722db79b89f/242e2/001-04.png 703w\"\n        sizes=\"(max-width: 703px) 100vw, 703px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<ul>\n<li>스크립트 생성하면서 리눅스 파일 시스템 계층 구조에 맞게 설정 등의 디렉토리를 구성하였다.<br>\n▶ <a href=\"https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%BC%EC%8B%9C%EC%8A%A4%ED%85%9C_%EA%B3%84%EC%B8%B5%EA%B5%AC%EC%A1%B0_%ED%91%9C%EC%A4%80\">리눅스 파일 시스템 계층구조 표준 위키피디아</a></li>\n</ul>\n<br>\n<h4>github</h4>\n<ul>\n<li><a href=\"https://github.com/eunyoung-autocrypt/bash-scripts\">https://github.com/eunyoung-autocrypt/bash-scripts</a></li>\n</ul>","fields":{"tagSlugs":["/tags/systemd/","/tags/tomcat/"],"slug":"/works/posts/2021-02-22--001"},"frontmatter":{"title":"[작업로그] WCA, WVA 서비스 설치 스크립트 만들기","tags":["systemd","tomcat"],"date":"2021-02-22","description":""}}},"pageContext":{"slug":"/works/posts/2021-02-22--001"}},"staticQueryHashes":[]}