<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>웍스디자인 &amp;gt; 고객센터 &amp;gt; 기술자료</title>
<link>https://www.worksdesign.co.kr/bbs/board.php?bo_table=skill</link>
<description>웍스디자인 &amp;gt; 고객센터 &amp;gt; 기술자료</description>
<language>ko</language>
	<item>
	<title>XPEnology(헤놀로지) DSM 6.0 설치하는법</title>
	<link>https://www.worksdesign.co.kr/bbs/board.php?bo_table=skill&amp;wr_id=6</link>
	<description><![CDATA[<p>XPEnology 포럼에서 JUN이라는 유저분이 시놀로지 나스 운영체제인 DSM 커널을 동적으로 패치하는 리눅스 커널 모듈을 개발했다고 합니다.</p><p><br /></p><p>그.래.서 외장하드에 나스 자료를 급하게 백업하고 XPEnology DSM 6.0을 설치해봤습니다. <strike>덕분에 BLOG파일을 날려먹었네요</strike></p><p><br /></p><p>설치하고 몇일동안 만지작 거려보니 XPEnology DSM 5.2보다 빠르고 안정적이네요.</p><p><br /></p><h5>XPEnology DSM 6.0 준비물</h5><p><br /></p><div class="txc-textbox" style="padding:10px;border:1px solid rgb(219,232,251);background-color:rgb(219,232,251);"><p>부트로더 : <a class="tx-link" href="https://mega.nz/#F!18kB1BTB!1ft3N5Hnrcnqsneu0aQUkA" target="_blank" rel="nofollow noreferrer noopener"><u><font color="#0066cc">서버1(공식)</font></u></a> / <a class="tx-link" href="http://download.iroot.kr/nas/XPEnology/6.0.2/Bootloader/" target="_blank" rel="nofollow noreferrer noopener"><u><font color="#0066cc">서버2(사설)</font></u></a><br /></p><p><u><br /></u></p><p>DSM 소프트웨어(운영체제) : <a class="tx-link" href="https://usdl.synology.com/download/DSM/release/6.0.2/8451/DSM_DS3615xs_8451.pat" target="_blank" rel="nofollow noreferrer noopener"><u><font color="#0066cc">서버1(공식)</font></u></a> / <a class="tx-link" href="http://download.iroot.kr/nas/XPEnology/6.0.2/DSM/" target="_blank" rel="nofollow noreferrer noopener"><u><font color="#0066cc">서버2(사설)</font></u></a></p><p><u><br /></u></p><p>Win32DiskImager 프로그램 : <a class="tx-link" href="http://download.iroot.kr/nas/XPEnology/Win32DiskImager.zip" target="_blank" rel="nofollow noreferrer noopener"><u><font color="#0066cc">서버1</font></u></a><a class="tx-link" href="http://download.iroot.kr/nas/XPEnology/Win32DiskImager.zip" target="_blank" rel="nofollow noreferrer noopener"><u><font color="#0066cc">(사설)</font></u></a></p><p><u><br /></u></p><p>USB View 프로그램 : <a class="tx-link" href="http://download.iroot.kr/nas/XPEnology/6.0.2/usbview.zip" target="_blank" rel="nofollow noreferrer noopener"><u><font color="#0066cc">서버1(사설)</font></u></a></p><p><u><br /></u></p><p>osfmount 프로그램 : <a class="tx-link" href="http://download.iroot.kr/nas/XPEnology/6.0.2/osfmount.zip" target="_blank" rel="nofollow noreferrer noopener"><u><font color="#0066cc">서버1(사설)</font></u></a></p></div><p style="text-align:right;"># 서버O(<b>사설</b>)은 필자가 운영하는 나스(서버)입니다.</p><p style="text-align:right;"><br /></p><p style="text-align:right;"><br /></p><p style="text-align:center;"><br /></p><h5>XPEnology DSM 6.0 설치하는법</h5><p style="text-align:left;"><br /></p><p style="text-align:left;clear:none;float:none;"><span class="imageblock" style="width:407px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_GwW3FTXc_b999a56124cae21b8eb9e03946fd34f15b331025.23588047581DCA0D2D2858" target="_blank" class="view_image"><img itemprop="image" content="http://uidc.kr.ms/data/editor/1701/1889165034_GwW3FTXc_b999a56124cae21b8eb9e03946fd34f15b331025.23588047581DCA0D2D2858" src="http://uidc.kr.ms/data/editor/1701/1889165034_GwW3FTXc_b999a56124cae21b8eb9e03946fd34f15b331025.23588047581DCA0D2D2858" alt="1889165034_GwW3FTXc_b999a56124cae21b8eb9e03946fd34f15b331025.23588047581DCA0D2D2858" class="img-tag " style="width:407px;"/></a></span></p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;"><span style="text-align:left;">&lt;사진에 있는 이름과 다운받은 부트로더 이름이 다를수있습니다&gt;</span></p><p style="text-align:left;clear:none;float:none;"><span style="text-align:left;"><br /></span></p><p style="text-align:left;clear:none;float:none;">1. Win32DiskImager 프로그램을 실행후 부트로더 이미지 경로선택과 USB 디바이스를 선택후 Write(=쓰기)버튼을 클릭해주세요.</p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;"><span class="imageblock" style="width:407px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_Gg8wNSfZ_2a2ff9f66bb37a09dedeb69c322c5a7e66c76d3e.244E8B3F581773B41FC91E" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_Gg8wNSfZ_2a2ff9f66bb37a09dedeb69c322c5a7e66c76d3e.244E8B3F581773B41FC91E" alt="1889165034_Gg8wNSfZ_2a2ff9f66bb37a09dedeb69c322c5a7e66c76d3e.244E8B3F581773B41FC91E" class="img-tag " style="width:407px;"/></a></span></p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;">2. 경고버튼이 뜨면 Yes(=네)버튼을 클릭해주세요.</p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;"><span class="imageblock" style="width:407px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_uVoKd8Ws_6e3f1f45a2290e785f99e767e0970e55bdcb79c2.252CBB3F581773B519203D" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_uVoKd8Ws_6e3f1f45a2290e785f99e767e0970e55bdcb79c2.252CBB3F581773B519203D" alt="1889165034_uVoKd8Ws_6e3f1f45a2290e785f99e767e0970e55bdcb79c2.252CBB3F581773B519203D" class="img-tag " style="width:407px;"/></a></span></p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;">3. 부트로더 이미지파일을 USB에 기록중이니 잠시 기다려주세요.</p><p style="text-align:left;clear:none;float:none;"><br /><span style="width:1px;height:1px;float:right;"></span></p><p style="text-align:left;clear:none;float:none;"><span class="imageblock" style="width:407px;height:auto;text-align:center;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_aIPZj3yu_413338802d200b59bbf88c792996c558d1c9566f.24666D47581DCA0E1B74F8" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_aIPZj3yu_413338802d200b59bbf88c792996c558d1c9566f.24666D47581DCA0E1B74F8" alt="1889165034_aIPZj3yu_413338802d200b59bbf88c792996c558d1c9566f.24666D47581DCA0E1B74F8" class="img-tag " style="width:407px;"/></a></span></p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;">4. 정상적으로 기록이 끝나면 OK(=알겠음)버튼을 클릭해주세요.</p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;">[BONUS] 만약, 부트로더 USB 만들고나서 인식이 안되는 경우에는 ofsmount프로그램을 이용해 마운팅 작업해주세요.</p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;"><span class="imageblock" style="width:728px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_UXlRpcVC_1762954b7788644c82f2349383a24661ce4b1d1d.2257A047581DCA122EDFD9" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_UXlRpcVC_1762954b7788644c82f2349383a24661ce4b1d1d.2257A047581DCA122EDFD9" alt="1889165034_UXlRpcVC_1762954b7788644c82f2349383a24661ce4b1d1d.2257A047581DCA122EDFD9" class="img-tag " style="width:728px;"/></a></span></p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;">이전 XPEnology(헤놀로지) 설치 방법과 다르게 부트로더 파일을 수정해서 속이는 과정을 거쳐야합니다.</p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;">5. USB VIEW 프로그램을 실행후 부트로더 이미지를 기록한 USB를 선택해주세요.</p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;">6. idVendor와 idProduct를 메모장에 기록해주세요.</p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;"><span class="imageblock" style="width:728px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_2bR0zEQf_ef2f91ecbfd4c29a315e0147be5e872c5a8e5050.276B7E47581DCA11155F61" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_2bR0zEQf_ef2f91ecbfd4c29a315e0147be5e872c5a8e5050.276B7E47581DCA11155F61" alt="1889165034_2bR0zEQf_ef2f91ecbfd4c29a315e0147be5e872c5a8e5050.276B7E47581DCA11155F61" class="img-tag " style="width:728px;"/></a></span></p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;">7. /grub 경로에 있는 grub.cfg파일을 메모장이나 <a class="tx-link" href="https://www.editplus.com/kr/" target="_blank" rel="nofollow noreferrer noopener"><u><font color="#0066cc">에디터플러스</font></u></a>로 열어주세요.</p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;">8. set vid=0x058f 부분을 아까 기록해둔 idVendor 값을 교체해주세요.</p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;">9. set pid=0x6387 부분을 아까 기록해둔 idProudct 값으로 교체해주세요.</p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;">10. SataPortMap=1 부분을 연결된 하드디스크 개수만큼 수정해주시고 저장해주세요.</p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:center;clear:none;float:none;"><span class="imageblock" style="width:728px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_8Ja6t9OD_1abad16a08ec4af02a533ae19aad9b5960801af2.2117644E581DCC452997CC" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_8Ja6t9OD_1abad16a08ec4af02a533ae19aad9b5960801af2.2117644E581DCC452997CC" alt="1889165034_8Ja6t9OD_1abad16a08ec4af02a533ae19aad9b5960801af2.2117644E581DCC452997CC" class="img-tag " style="width:728px;"/></a><span class="ExifInfo" style="text-align:center;margin-right:auto;margin-left:auto;"><span>SM-G925K<span class="exifBar"> | </span></span><span>1/30sec<span class="exifBar"> | </span></span><span>F/1.9<span class="exifBar"> | </span></span><span>0.00 EV<span class="exifBar"> | </span></span><span>4.3mm<span class="exifBar"> | </span></span><span>ISO-500</span></span></span></p><p style="text-align:center;clear:none;float:none;"></p><p style="text-align:center;clear:none;float:none;">&lt; 바이오스/UEFI 마다 다르게 나올수있습니다 &gt;</p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;">11. 바이오스/UEFI 설정 들어가신후 부팅 옵션 1순위를 부트로더 USB로 선택해주세요.</p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;"><span class="imageblock" style="width:728px;height:auto;text-align:center;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_iMQKYXzJ_d4f8fbb6525cc322cd10da9b432e80f382d23e47.2341A94A581DCBDA2AA8BA" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_iMQKYXzJ_d4f8fbb6525cc322cd10da9b432e80f382d23e47.2341A94A581DCBDA2AA8BA" alt="1889165034_iMQKYXzJ_d4f8fbb6525cc322cd10da9b432e80f382d23e47.2341A94A581DCBDA2AA8BA" class="img-tag " style="width:728px;"/></a><span class="ExifInfo" style="text-align:center;margin-right:auto;margin-left:auto;"><span>SM-G925K<span class="exifBar"> | </span></span><span>1/10sec<span class="exifBar"> | </span></span><span>F/1.9<span class="exifBar"> | </span></span><span>0.00 EV<span class="exifBar"> | </span></span><span>4.3mm<span class="exifBar"> | </span></span><span>ISO-250</span></span></span></p><p style="text-align:center;clear:none;float:none;"></p><p style="text-align:center;clear:none;float:none;">&lt; 부트로더 버젼에 따라서 다르게 나올수있습니다&gt;</p><p style="text-align:left;clear:none;float:none;"><br /></p><p style="text-align:left;clear:none;float:none;"></p><p style="text-align:left;clear:none;float:none;">11. 정상적으로 부트로더 USB 부팅이 되면 위 사진처럼 나타납니다.</p><p style="text-align:left;"><br /></p><p style="text-align:left;"><span class="imageblock" style="width:728px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_GDU4hHnQ_939fba5f690a4f793c93e513e657ccbd9fe89419.25539F4658177331241EFB" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_GDU4hHnQ_939fba5f690a4f793c93e513e657ccbd9fe89419.25539F4658177331241EFB" alt="1889165034_GDU4hHnQ_939fba5f690a4f793c93e513e657ccbd9fe89419.25539F4658177331241EFB" class="img-tag " style="width:728px;"/></a></span></p><p style="text-align:left;"><br /></p><p style="text-align:left;">12. 브라우저에 아래 주소를 입력해주신후 자작나스로 자동연결되면 설정버튼을 눌러주세요.</p><p style="text-align:left;"><span style="background-color:rgb(238,238,238);"><br /></span></p><div class="txc-textbox" style="padding:10px;border:1px solid rgb(238,238,238);background-color:rgb(238,238,238);"><p style="text-align:left;"><span style="background-color:rgb(238,238,238);">주소 : http://find.synology.me 혹은 http://diskstation:5000<br /></span></p></div><p style="text-align:left;"><br /></p><p style="text-align:left;"><span class="imageblock" style="width:728px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_3eUOoVmt_b1f05c3ea54880112b36fc54e2580dcf658b65b7.230E7B4658177333188BF1" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_3eUOoVmt_b1f05c3ea54880112b36fc54e2580dcf658b65b7.230E7B4658177333188BF1" alt="1889165034_3eUOoVmt_b1f05c3ea54880112b36fc54e2580dcf658b65b7.230E7B4658177333188BF1" class="img-tag " style="width:728px;"/></a></span></p><p style="text-align:left;"> </p><p style="text-align:left;">13. 다운받으신 DSM 소프트웨어(운영체제) 경로선택후 지금설치 버튼을 클릭해주세요.</p><p style="text-align:left;"><br /></p><p style="text-align:left;"><span class="imageblock" style="width:728px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_bsq9rBE6_27834ca06f95ee32b9d2af2c9a973543365cb041.246BE346581773342CBE9D" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_bsq9rBE6_27834ca06f95ee32b9d2af2c9a973543365cb041.246BE346581773342CBE9D" alt="1889165034_bsq9rBE6_27834ca06f95ee32b9d2af2c9a973543365cb041.246BE346581773342CBE9D" class="img-tag " style="width:728px;"/></a></span></p><p style="text-align:left;"></p><p style="text-align:left;"><br /></p><p style="text-align:left;">14. " 이 하드 디스크의 모든 데이타가 제거된다는 사실을 이해합니다. " 체크후 확인버튼을 클릭해주세요.</p><p style="text-align:left;"><br /></p><p style="text-align:left;"><span class="imageblock" style="width:728px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_ACVfezvH_c59f1ebcf65298c3e10bf9c5d3e176f65051a995.216FE946581773362BFACA" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_ACVfezvH_c59f1ebcf65298c3e10bf9c5d3e176f65051a995.216FE946581773362BFACA" alt="1889165034_ACVfezvH_c59f1ebcf65298c3e10bf9c5d3e176f65051a995.216FE946581773362BFACA" class="img-tag " style="width:728px;"/></a></span></p><p style="text-align:left;"><span class="imageblock" style="width:728px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_Ex6KiwSe_aaabf2a15a255dd812a7e3b98c4f4470963f61d2.214C8A465817733708109A" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_Ex6KiwSe_aaabf2a15a255dd812a7e3b98c4f4470963f61d2.214C8A465817733708109A" alt="1889165034_Ex6KiwSe_aaabf2a15a255dd812a7e3b98c4f4470963f61d2.214C8A465817733708109A" class="img-tag " style="width:728px;"/></a></span></p><p style="text-align:left;"><br /></p><p style="text-align:left;"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255);">15. 소프트웨어(운영체제) 설치가 끝나면 자동으로 설정창이 연결되니 창을 끄지말아주세요.</span></p><p style="text-align:left;"><span style="background-color:rgb(238,238,238);"><br /></span></p><p style="text-align:left;"><span class="imageblock" style="width:728px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_r6YTtEMJ_4ccd29bdc61fbb1573009e634f9dc2651296f3f4.210EAB4658177339050538" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_r6YTtEMJ_4ccd29bdc61fbb1573009e634f9dc2651296f3f4.210EAB4658177339050538" alt="1889165034_r6YTtEMJ_4ccd29bdc61fbb1573009e634f9dc2651296f3f4.210EAB4658177339050538" class="img-tag " style="width:728px;"/></a></span></p><p style="text-align:left;"><span style="background-color:rgb(238,238,238);"><br /></span></p><p style="text-align:left;">16. 서버이름과 사용자이름, 패스워드 확인을 기입해주신후 다음 버튼을 클릭해주세요.</p><p style="text-align:left;"><br /></p><p style="text-align:left;"><span class="imageblock" style="width:728px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_b2ni0mks_aecd86f1e31f2aeafcf549a004ed27599d4cb038.22337F465817733B310FED" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_b2ni0mks_aecd86f1e31f2aeafcf549a004ed27599d4cb038.22337F465817733B310FED" alt="1889165034_b2ni0mks_aecd86f1e31f2aeafcf549a004ed27599d4cb038.22337F465817733B310FED" class="img-tag " style="width:728px;"/></a></span></p><p style="text-align:left;"><br /></p><p style="text-align:left;">17. 다음 버튼을 클릭해주세요.</p><p style="text-align:left;"><br /></p><p style="text-align:left;"><span class="imageblock" style="width:728px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_NX18Fy5k_36c1dc33394c03b6890df5b8da346f8985e14458.2737BF445817733C36157B" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_NX18Fy5k_36c1dc33394c03b6890df5b8da346f8985e14458.2737BF445817733C36157B" alt="1889165034_NX18Fy5k_36c1dc33394c03b6890df5b8da346f8985e14458.2737BF445817733C36157B" class="img-tag " style="width:728px;"/></a></span></p><p style="text-align:left;"><br /></p><p style="text-align:left;">18. ' 수동으로 DSM 업데이트 다운로드 및 설치 ' 선택후 다음버튼을 클릭해주세요.</p><p style="text-align:left;"><br /></p><p style="text-align:left;"><span class="imageblock" style="width:728px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_U7hDjXNl_7f73f07b10b337b567853032a8b223cd7bdeb922.215E6D445817733E2B50BC" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_U7hDjXNl_7f73f07b10b337b567853032a8b223cd7bdeb922.215E6D445817733E2B50BC" alt="1889165034_U7hDjXNl_7f73f07b10b337b567853032a8b223cd7bdeb922.215E6D445817733E2B50BC" class="img-tag " style="width:728px;"/></a></span></p><p style="text-align:left;"><br /></p><p style="text-align:left;">19. 퀵커넥트 서비스(기능)은 정품 시놀로지 사용자만 이용가능하므로 '이 단계 건너뛰기'을 클릭해 넘겨주세요.</p><p style="text-align:left;"><br /></p><p style="text-align:left;"><span class="imageblock" style="width:728px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_jv2HMixe_27e49b2846b6f5a946326e2248d24bda0040a590.2124534458177340262F32" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_jv2HMixe_27e49b2846b6f5a946326e2248d24bda0040a590.2124534458177340262F32" alt="1889165034_jv2HMixe_27e49b2846b6f5a946326e2248d24bda0040a590.2124534458177340262F32" class="img-tag " style="width:728px;"/></a></span></p><p style="text-align:left;"><br /></p><p style="text-align:left;">20. '이 단계를 건너뛰면 인터넷을 통해 원격으로 Diskstation에 액세스하기 위해 포트 전달을 설정해야 합니다.' 팝업창이 뜨면 예버튼을 클릭해서 넘겨주세요.</p><p style="text-align:left;"><br /></p><p style="text-align:left;"><span class="imageblock" style="width:728px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_J3hc5dzg_1c9b2a5975ab89e4eb354f26c323f1ec3a3cc0d6.2258F444581773411A1D8F" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_J3hc5dzg_1c9b2a5975ab89e4eb354f26c323f1ec3a3cc0d6.2258F444581773411A1D8F" alt="1889165034_J3hc5dzg_1c9b2a5975ab89e4eb354f26c323f1ec3a3cc0d6.2258F444581773411A1D8F" class="img-tag " style="width:728px;"/></a></span></p><p style="text-align:left;"><br /></p><p style="text-align:left;">21. 한번 더 예 버튼을 클릭해주세요.</p><p style="text-align:left;"><br /></p><p style="text-align:left;"></p><p style="text-align:left;clear:none;float:none;"><span class="imageblock" style="width:728px;height:auto;max-width:100%;"><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1701%2F1889165034_cGgRoP9H_e01ff8ec53724eb552d329799ce93a7c3c35b655.277FBB4458177343184226" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1701/1889165034_cGgRoP9H_e01ff8ec53724eb552d329799ce93a7c3c35b655.277FBB4458177343184226" alt="1889165034_cGgRoP9H_e01ff8ec53724eb552d329799ce93a7c3c35b655.277FBB4458177343184226" class="img-tag " style="width:728px;"/></a></span></p><p style="text-align:left;"><br /></p><p style="text-align:left;">정상적으로 XPEnology DSM 6.0 설치가 끝났습니다.</p><p style="text-align:left;"><br /></p><p style="text-align:left;"><br /></p><div class="txc-textbox" style="padding:10px;border:1px solid rgb(247,247,247);background-color:rgb(255,255,255);"><p style="text-align:left;">참고 : <a class="tx-link" href="https://goo.gl/B7MYns" target="_blank" rel="nofollow noreferrer noopener"><u><font color="#0066cc">Migrate from DSM 5.2 to 6.0 - Baremetal</font></u></a> and <a class="tx-link" href="https://goo.gl/A2Kg2Z" target="_blank" rel="nofollow noreferrer noopener"><u><font color="#0066cc">XPEnology(해놀) DSM 6.0.2 설치하기 (2) 부트로더 수정</font></u></a></p></div>]]></description>
	<dc:creator>최고관리자</dc:creator>
		<dc:date>2017-01-01T14:47:24+09:00</dc:date>
	</item>
	<item>
	<title>한번에 끝내는 Ubuntu 웹서버세팅 (우분투 서버세팅)</title>
	<link>https://www.worksdesign.co.kr/bbs/board.php?bo_table=skill&amp;wr_id=5</link>
	<description><![CDATA[<div class="alert alert-warning" style="border-color:transparent;line-height:1.5;"><strong>[주의]</strong> 이 글은 Ubuntu 16.04 LTS 에 맞추어 작성되었습니다.</div><div class="alert alert-warning" style="border-color:transparent;line-height:1.5;"><strong>[정보]</strong> 회사 내에 전문 담당자가 없거나 리눅스에 서투르신 경우, 작업의뢰를 신청하세요. 프리랜서 이전/세팅 대행 : <a href="https://www.xetown.com/freelancer/3456" target="_blank" rel="nofollow noreferrer noopener">https://www.xetown.com/freelancer/3456</a> . 당신의 요청이 합당하다면 저분이 의뢰를 받아주실 겁니다.</div><div class="bs-callout bs-callout-info" style="border-color:rgb(188,232,241) rgb(188,232,241) rgb(188,232,241) rgb(238,238,238);margin:20px 0px;padding:4px 20px;border-left-width:3px;border-left-style:solid;background-color:rgb(244,248,250);"><h4 style="color:rgb(58,135,173);">#16.10.04 무료 보안인증서(SSL) 적용방법이 추가됨</h4><p>무료 보안인증서 설치방법이 추가되었습니다. HTTPS 사용을 원하신다면, 본문을 다 읽으신 후 다음의 글로 이동해주세요.</p><p><a href="https://blog.lael.be/post/5107" target="_blank" rel="nofollow noreferrer noopener">https://blog.lael.be/post/5107</a></p></div><hr /><p>이 문서는 <span style="color:rgb(128,0,128);">2010년 4월 12일</span>에 처음 쓰여졌으며, 주기적으로 업데이트/유지보수 되고 있습니다.</p><p>이 문서는 항상 <span style="color:rgb(0,0,255);">최신버전(Edge Version</span>)의 세팅법을 설명합니다.</p><p> </p><hr /><p>이 글에서는 <span style="color:rgb(0,0,255);">자동화</span>되고 <span style="color:rgb(0,0,255);">유지보수 관리</span>되는 설치방법을 설명하고 있습니다.</p><p>아래의 방법대로 <span style="color:rgb(128,0,128);">설치한 후에</span> 언제든지</p><div><div class="syntaxhighlighter bash"><table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="bash plain">apt-get update</code></div></div></td></tr></tbody></table></div></div><div><div class="syntaxhighlighter bash"><table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="bash plain">apt-get upgrade</code></div></div></td></tr></tbody></table></div></div><p>명령을 사용하면, <span style="color:rgb(0,0,255);">항상</span> 빠르고 <span style="color:rgb(0,0,255);">안전한 최신버전</span>의 서버 소프트웨어를 사용하실 수 있습니다.</p><hr /><p>* 이 글은 Ubuntu 에 PHP 웹서버를 세팅하는 방법을 소개하고 있습니다.</p><p>* PHP를 최신버전으로 구축하고 싶다면 <a href="https://blog.lael.be/post/2600" target="_blank" rel="nofollow noreferrer noopener">https://blog.lael.be/post/2600</a> 글로 이동하세요. (Nginx + PHP7-FPM + MariaDB)</p><p>- CentOS 에서 PHP 를 구축하고 싶다면 <a href="https://blog.lael.be/post/1721" target="_blank" rel="nofollow noreferrer noopener">https://blog.lael.be/post/1721</a> (Apache + PHP + MariaDB)</p><p>* Ubuntu 에서 JSP 웹서버 세팅을 원하시면 <a href="https://blog.lael.be/post/858" target="_blank" rel="nofollow noreferrer noopener">https://blog.lael.be/post/858</a> 글로 이동하세요.</p><p>* Ubuntu 에서 PHP와 JSP를 동시 구동하고 싶으시면 <a title="Ubuntu 한 서버에서 PHP, JSP 동시에 사용하기" href="https://blog.lael.be/post/1023" target="_blank" rel="nofollow noreferrer noopener">https://blog.lael.be/post/1023</a> 글로 이동하세요.</p><p>* Ubuntu 가상서버호스팅을 찾는 중이라면 <a href="https://blog.lael.be/post/44" target="_blank" rel="nofollow noreferrer noopener">https://blog.lael.be/post/44</a> 글로 이동하세요.</p><hr /><p>현재 배포된 Ubuntu 버전은 아래와 같습니다.</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_hamA7c6O_af52bccad751521024fc5d462689af59c2898b50.png" target="_blank" class="view_image"><img itemprop="image" content="http://uidc.kr.ms/data/editor/1612/3530309802_hamA7c6O_af52bccad751521024fc5d462689af59c2898b50.png" src="http://uidc.kr.ms/data/editor/1612/3530309802_hamA7c6O_af52bccad751521024fc5d462689af59c2898b50.png" alt="img_ubuntu_1604" class="img-tag aligncenter size-full wp-image-4407" style="width:474px;"/></a><br />운영체제의 수명이 긴 <span style="color:rgb(0,0,255);">LTS</span> 버전을 설치하도록 합시다. (버전숫자가 높다고 더 좋다는 뜻은 아님)</p><p>Ubuntu 운영체제에 관해서는 <a href="http://en.wikipedia.org/wiki/Ubuntu_(operating_system)" target="_blank" rel="nofollow noreferrer noopener">http://en.wikipedia.org/wiki/Ubuntu_(operating_system)</a> 를 참조하세요.</p><p> </p><p>이 문서에서 설치는 <span style="color:rgb(0,0,255);">Ubuntu 16.04 LTS</span>를 기준으로 합니다. (14.04 와는 패키지가 약간 다를 수 있음)</p><p>참고로<br /><span style="color:rgb(128,0,0);">Ubuntu 14.04 LTS 다운로드 이미지</span>는 <a href="http://releases.ubuntu.com/14.04/ubuntu-14.04.4-server-amd64.iso" target="_blank" rel="nofollow noreferrer noopener">http://releases.ubuntu.com/14.04/ubuntu-14.04.4-server-amd64.iso</a> 이며,<br /><span style="color:rgb(128,0,0);">Ubuntu 16.04 LTS 다운로드 이미지</span>는 <a href="http://releases.ubuntu.com/16.04/ubuntu-16.04-server-amd64.iso" target="_blank" rel="nofollow noreferrer noopener">http://releases.ubuntu.com/16.04/ubuntu-16.04-server-amd64.iso</a> 입니다.</p><p> </p><p><span style="color:rgb(128,0,128);text-decoration:underline;">일반 사업체</span> 및 <span style="color:rgb(128,0,128);text-decoration:underline;">실무 서비스</span>에서 사용할 수 있는 <span style="color:rgb(0,0,255);text-decoration:underline;">안정적인 세팅법</span>을 알려드리겠습니다.</p><p> </p><hr /><h3>0) root 권한으로 변경</h3><p>기본으로 주어진 계정이 root 가 아닐 경우에만 0번을 따라하세요.<br />본문의 모든 명령어는 root 의 권한에서 실행해야합니다. 자신에게 주어진 계정이 root 계정이 아니라면 다음의 명령어로 root 로 전환해 주도록 합시다.</p><p>자신의 계정 보기</p><pre># whoami</pre><p>sudo 명령어 실행. root 권한으로 root 로 로그인하는 명령어를 실행한다.</p><pre># sudo su</pre><p>자신의 계정 보기</p><pre># whoami</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_xz5UJDgR_b3e1b1eb13eb72dd47ec101e40669d5dbfd2cf84.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_xz5UJDgR_b3e1b1eb13eb72dd47ec101e40669d5dbfd2cf84.png" alt="b6" class="img-tag aligncenter size-full wp-image-4994" style="width:230px;"/></a></p><p>기본 계정의 UserID 는 그림과 다를 수 있음. <span style="color:rgb(128,0,128);">위 예시</span>에서 <span style="color:rgb(128,0,128);">기본 아이디는 ubuntu</span> 이다.</p><p>sudo 명령어를 사용할 수 있는 계정은 root 와 동급이니 비밀번호 관리에 신중해야한다. 기본 계정의 비밀번호를 매우긴 어려운 것으로 변경해주도록 하자.</p><pre># passwd ubuntu</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_KpXiHj7g_6fd83ab7d1b4007eb43b935f65dcdabe7ad4d190.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_KpXiHj7g_6fd83ab7d1b4007eb43b935f65dcdabe7ad4d190.png" alt="b7" class="img-tag aligncenter size-full wp-image-4997" style="width:270px;"/></a></p><p> </p><h3>1) 리눅스 버전체크</h3><pre>#uname -a
Linux Lael-ubuntu-xenial 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux</pre><h3>2) Ubuntu 버전체크</h3><pre>#cat /etc/issue
Ubuntu 16.04 LTS \n \l</pre><p>조금 더 자세하게 운영체제 버전정보를 알아보고 싶다면</p><pre># lsb_release -a</pre><p>해당 명령어는 Ubuntu 에서는 기본적으로 설치되어 있지만 <span style="color:rgb(0,0,255);">CentOS 계열에서는</span> 기본패키지가 아니니 사용하려면 <span style="color:rgb(0,0,255);">다음 명령어로 설치</span>해주어야 합니다.</p><pre># yum install redhat-lsb-core</pre><h3>3) 하드용량체크</h3><pre>#df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            2.0G     0  2.0G   0% /dev
tmpfs           396M  6.2M  390M   2% /run
/dev/vda1        85G  3.6G   77G   5% /
tmpfs           2.0G  192K  2.0G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
tmpfs           396M   92K  396M   1% /run/user/1000
tmpfs           396M     0  396M   0% /run/user/0
</pre><p>대략 다 더하면 90G가 나온다.</p><p> </p><h3>4) 메모리 체크</h3><pre>#free -m
              total        used        free      shared  buff/cache   available
Mem:           3951         770        2262          10         918        3116
Swap:          4093           0        4093
</pre><p>3951M의 전체메모리중 현재 770M을 사용하고 있고 3116M가 비어있다.</p><p> </p><h3>4-1) CPU 코어수 확인</h3><p>cpu정보 프로세스를 읽어서 processor 항목이 몇개인지 갯수를 셉니다.</p><pre>#cat /proc/cpuinfo | grep processor | wc -l</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_5VPSIbCy_c4b60586f96d1bbfcabd5b2d1cdd1d62223c3baf.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_5VPSIbCy_c4b60586f96d1bbfcabd5b2d1cdd1d62223c3baf.png" alt="g3" class="img-tag aligncenter size-full wp-image-3449" style="width:433px;"/></a></p><p>위의 사진은 6 core 를 뜻합니다.</p><p>한번 정도는 다음의 명령어를 확인해 보세요.</p><pre>#cat /proc/cpuinfo | grep processor</pre><pre>#cat /proc/cpuinfo</pre><p> </p><h3>5) 현재 서버에 설치된 패키지 최신버전으로 업그레이드</h3><p>APT 목록 갱신</p><p>APT란 Advanced Packaging Tool 을 뜻합니다.<br />우리는 apt 라는 우분투에 내장된 프로그램을 이용해서 프로그램을 쉽게 설치/제거 할 수 있습니다.</p><p> </p><p>패키지 목록 갱신.</p><pre>#apt-get update</pre><p> </p><p>현재 운영체제에 설치되어있는 프로그램 최신버전패치</p><pre>#apt-get upgrade</pre><h3></h3><h3>6) 시스템 시간 설정</h3><p>이것을 하지 않으면 영국 시간을 불러올 것이다.</p><p>물론 초기 설치할 때 Asia/Seoul 을 설정했다면 이 작업을 할 필요는 없다. 하지만 또 한다고 해서 문제되지는 않는다.</p><p>- 데비안 패키지 재설정 TimeZone Data 를 실행한다.</p><pre>#dpkg-reconfigure tzdata</pre><p>GUI 환경이 나올 텐데, 순서대로 Asia - Seoul 을 선택하면 된다.</p><p> </p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_s4iQAR5a_4183a78ec42c5c0eea5a0be4d5725a16849cabcd.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_s4iQAR5a_4183a78ec42c5c0eea5a0be4d5725a16849cabcd.png" alt="g4" class="img-tag aligncenter size-full wp-image-3450" style="width:548px;"/></a></p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_2IwbO4nK_6c5de190afcff2f6a87506be751300bb2ef50531.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_2IwbO4nK_6c5de190afcff2f6a87506be751300bb2ef50531.png" alt="ubuntu_timezone_1604" class="img-tag aligncenter size-full wp-image-4410" style="width:381px;"/></a></p><p> </p><h3>7) Hostname 설정</h3><p>이 서버에 이름을 정하는 것이다. 이름을 잘 정해 두어야 나중에 다중 서버작업을 할 때 헷갈리지 않는다.</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_NZXkOqmj_ad9bcaf5fd1de69fb288afb00f359293179f4b4a.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_NZXkOqmj_ad9bcaf5fd1de69fb288afb00f359293179f4b4a.png" alt="g6" class="img-tag aligncenter size-full wp-image-3452" style="width:251px;"/></a></p><p>위의 뜻은 “li599-115 서버에 root 사용자” 라는 뜻이다.</p><p>서버 이름은 <span style="color:rgb(0,0,255);">FQDN(Fully Qualified Domain Name)</span>을 쓰는 것이 좋다.</p><p>참고로 라엘이의 이 블로그 서버의 hostname은 <span style="color:rgb(0,0,255);">blog.lael.be</span> 이다.</p><p> </p><pre>#vi /etc/hostname</pre><p>빈 파일일 건데(또는 기존 hostname이 쓰여있을것임.) 원하는 이름으로 바꾼다.</p><p><span style="color:rgb(128,0,128);">권장하는 단어</span>는 이 <span style="color:rgb(128,0,128);">서버에 연결될 대표 도메인</span>이다. 예를 들어 <span style="color:rgb(128,0,128);">blog.lael.be</span> 같은 것.</p><p> </p><p>적용한다.</p><pre>#hostname -F /etc/hostname</pre><p> </p><p>서버에 재 접속하면 적용된 것을 확인 할 수 있을 것이다.</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_EP58cIoO_2551086669f4a983d203e62a091bf21573ebd20a.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_EP58cIoO_2551086669f4a983d203e62a091bf21573ebd20a.png" alt="g7" class="img-tag aligncenter size-full wp-image-3453" style="width:160px;"/></a></p><p>hostname 값은 서버작업자에게 서버이름을 알려주는 역할을 하며, 아무 의미없는 글자를 적어도 된다.</p><p>일부 sendmail 같은 프로그램에서 다른 서버와 통신시 사용하기도 한다.</p><p> </p><p>- hostname 을 FQDN 으로 설정하는 것을 권장하지만, 외부와 연결이 없는 서버이거나 자신이 쓰고 싶은 이름이 있다면 (팀명이나, 회사명, 서비스명 등) 그것으로 해도 된다.</p><p>예를 들어 myserver1, new1111 같이 자신이 하고 싶은대로 정했다고 한다면, 서버의 <span style="color:rgb(128,0,128);">/etc/hosts</span> 에 해당 이름을 등록해두도록 하자.</p><pre>127.0.0.1    myserver1</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_P7kVZnQh_0a992ad6b0e6340a4da781fdecfed734f4ef126b.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_P7kVZnQh_0a992ad6b0e6340a4da781fdecfed734f4ef126b.png" alt="g8" class="img-tag aligncenter size-full wp-image-3454" style="width:460px;"/></a></p><p> </p><h3>추가) 메일 발송프로그램 설치하기</h3><p>많은 프로그램에서 mail() 함수를 사용한다. 이 함수는 서버의 sendmail 프로그램에게 메일발송을 요청한다.</p><p>메일문의, 가입시 환영메일, 비밀번호 찾기 메일, 이메일인증 등 널리 사용된다. 서버가 메일 발송을 할 수 있게 sendmail 을 설치하자.</p><pre># apt-get install sendmail</pre><p>이것은 오직 <span style="color:rgb(128,0,128);">웹사이트에서 메일을 보내기 위한 것</span>이다.</p><p><span style="color:rgb(128,0,128);">아이디@당신의도메인.com</span> 같은 것을 하고 싶다면 절대로 직접 구축하려고 하지 말고 <a href="https://apps.google.com/intx/ko/pricing.html" target="_blank" rel="nofollow noreferrer noopener">구글앱스</a>, 도메인 구입처, 클라우드서버 업체의 메일호스팅, 서버호스팅업체의 메일호스팅 을 사용하도록 하자.</p><p> </p><pre># vi /etc/mail/local-host-names</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_B4Eeq3jK_c79a8e5956e171eae59762f66b24168098102c93.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_B4Eeq3jK_c79a8e5956e171eae59762f66b24168098102c93.png" alt="qv3" class="img-tag aligncenter wp-image-4502" style="width:268px;"/></a></p><p>localhost 를 제외하고 나머지 항목은 지운다. 이곳에 쓰여진 도메인은 sendmail 발송시 목적 메일서버조회(mx record query)를 하지않고 로컬로 보낸다.</p><p> </p><h3>8) Apache2 설치</h3><pre>#apt-get install apache2</pre><p>16.04 LTS 에서는 apache 2.4.x 가 설치된다. (2016년 4월 21일 현재 최신버전은 Apache 2.4.18 이다.)</p><p>가끔씩 <span style="color:rgb(0,0,128);">apt-get update</span> 및 <span style="color:rgb(0,0,128);">apt-get upgrade</span> 를 실행하면 아무런 문제없이 최신버전으로 업데이트 될 것이다.<br />설치가 완료되면 자동적용 및 시작된다.</p><p>버전체크</p><pre>apache2 -v</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_Im8b57ok_74086a2c39dc6cd7e949337787c159d96378d9d5.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_Im8b57ok_74086a2c39dc6cd7e949337787c159d96378d9d5.png" alt="apache_1604" class="img-tag aligncenter size-full wp-image-4411" style="width:281px;"/></a><br />확인해본다.<br /><span style="color:rgb(0,0,255);">http://256.123.213.213</span> (서버의아이피)<br />웹브라우져에 기본 설명페이지가 뜨면 성공.<br /> (참고로 기본으로 보여지는 파일은 /var/www/html/index.html 이다.)<br />기본 파일을 지운다.</p><pre>#rm /var/www/html/index.html</pre><p>기타 주로 사용되는 모듈을 활성화, 필요없는 모듈은 비활성화 한다.<br />아래 모듈에 대한 자세한 설명은… 생략한다.<br />사용에 문제가 발생하지 않는 최상의 방식이라고 이해하면 된다.</p><pre>#a2enmod rewrite
#a2enmod headers
#a2dismod -f autoindex</pre><p> </p><p><a></a><br /><span style="color:rgb(128,0,128);">#추가 보안패치</span>. (.git, .svn, .env 등 dot로 시작하는 파일 및 폴더 보호, Web Access가 되어서는 안될 파일들의 접근 제어)</p><pre># vi /etc/apache2/apache2.conf</pre><p>파일 중간의 <span style="color:rgb(0,0,128);">&lt;FilesMatch “^\.ht”&gt;</span> 구문 다음에 추가한다.</p><div><div class="syntaxhighlighter bash"><table border="0" cellspacing="0" cellpadding="0"><caption>/etc/apache2/apache2.conf 설정파일 중간에 추가</caption><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="bash comments"># deny file, folder start with dot</code></div><div class="line number2 index1 alt1"><code class="bash plain">&lt;DirectoryMatch </code><code class="bash string">"^\.|\/\."</code><code class="bash plain">&gt;</code></div><div class="line number3 index2 alt2"><code class="bash spaces">    </code><code class="bash plain">Require all denied</code></div><div class="line number4 index3 alt1"><code class="bash plain">&lt;</code><code class="bash plain">/DirectoryMatch</code><code class="bash plain">&gt;</code></div><div class="line number5 index4 alt2"><code class="bash spaces"> </code> </div><div class="line number6 index5 alt1"><code class="bash comments"># deny (log file, binary, certificate, shell script, sql dump file) access.</code></div><div class="line number7 index6 alt2"><code class="bash plain">&lt;FilesMatch </code><code class="bash string">"\.(?i:log|binary|pem|enc|crt|conf|cnf|sql|sh|key)$"</code><code class="bash plain">&gt;</code></div><div class="line number8 index7 alt1"><code class="bash spaces">    </code><code class="bash plain">Require all denied</code></div><div class="line number9 index8 alt2"><code class="bash plain">&lt;</code><code class="bash plain">/FilesMatch</code><code class="bash plain">&gt;</code></div><div class="line number10 index9 alt1"><code class="bash spaces"> </code> </div><div class="line number11 index10 alt2"><code class="bash comments"># deny access.</code></div><div class="line number12 index11 alt1"><code class="bash plain">&lt;FilesMatch </code><code class="bash string">"(?i:composer\.json|contributing\.md|license\.txt|readme\.rst|readme\.md|readme\.txt|copyright|artisan|gulpfile\.js|package\.json|phpunit\.xml)$"</code><code class="bash plain">&gt;</code></div><div class="line number13 index12 alt2"><code class="bash spaces">    </code><code class="bash plain">Require all denied</code></div><div class="line number14 index13 alt1"><code class="bash plain">&lt;</code><code class="bash plain">/FilesMatch</code><code class="bash plain">&gt;</code></div><div class="line number15 index14 alt2"> </div><div class="line number16 index15 alt1"><code class="bash comments"># Allow Lets Encrypt Domain Validation Program</code></div><div class="line number17 index16 alt2"><code class="bash plain">&lt;DirectoryMatch </code><code class="bash string">"\.well-known/acme-challenge/"</code><code class="bash plain">&gt;</code></div><div class="line number18 index17 alt1"><code class="bash spaces">    </code><code class="bash plain">Require all granted</code></div><div class="line number19 index18 alt2"><code class="bash plain">&lt;</code><code class="bash plain">/DirectoryMatch</code><code class="bash plain">&gt;</code></div></div></td></tr></tbody></table></div></div><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_LOQZvega_1a98538c9171c5a4bed0b7c21b267653d553fd97.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_LOQZvega_1a98538c9171c5a4bed0b7c21b267653d553fd97.png" alt="apache2-conf-161022-2" class="img-tag aligncenter size-full wp-image-5262" style="width:594px;"/></a></p><p> </p><h3>9) PHP 7.0 설치</h3><p><span style="color:rgb(128,0,128);">PHP 5</span> 를 설치하고 싶으시면 <span style="color:rgb(128,0,128);">Ubuntu 14.04 LTS</span> 를 설치하세요.</p><p>--</p><pre>#apt-get install php</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_dCo0s5uM_ec9a126aad17601b0a97c6dd7f46f9b2cd31f765.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_dCo0s5uM_ec9a126aad17601b0a97c6dd7f46f9b2cd31f765.png" alt="ubuntu_1604_php7" class="img-tag aligncenter size-full wp-image-4413" style="width:636px;"/></a></p><p>16.04 에서는 PHP 7.0.x 가 설치된다.</p><p> </p><p>PHP-아파치 연동모듈 설치</p><pre>#apt-get install libapache2-mod-php7.0</pre><p> </p><p>기타 주로 사용되는 모듈을 설치한다.<br />- 암호화 모듈</p><pre>#apt-get install php-mcrypt</pre><p> </p><p>- 다국어 처리모듈</p><pre>#apt-get install php-mbstring</pre><p> </p><p>- 이미지처리 모듈</p><pre>#apt-get install php-gd</pre><p> </p><p>- 원격지 정보 불러는 모듈 (워드프레스, 드루팔 등에서 쓰임)</p><pre>#apt-get install php-curl php-xml</pre><p> </p><p>-추가로 설치하고 싶은 모듈이 있으면</p><pre>#apt-cache search php-</pre><p>라고 입력해서 설치가능한 패키지를 검색후 install 하도록 하자.<br /><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_qMdwm18F_7f658ee5f389a58597879d7ab2a95af51f27b9d7.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_qMdwm18F_7f658ee5f389a58597879d7ab2a95af51f27b9d7.png" alt="ubuntu_1604_aptcache" class="img-tag aligncenter size-full wp-image-4414" style="width:526px;"/></a></p><p> </p><p>- 아파치 재시작(적용을 위해서)</p><pre>#service apache2 restart</pre><pre>버전체크
#php -v</pre><p>PHP 7.0.4-7ubuntu2 (cli) ( NTS )<br /> Copyright (c) 1997-2016 The PHP Group<br /> Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies<br /> with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies</p><p>7.0.4 버전이다. (당신이 설치한 버전은 이것보다 높을 것이다.)</p><p> </p><h3>10 - 1) MariaDB 설치</h3><p>mysql 과 mariadb 는 완전 API 호환된다.</p><p> </p><h4></h4><pre>#apt-get install mariadb-server</pre><p>MariaDB 10.0.24 이 설치된다.</p><p> </p><p><span style="color:rgb(128,0,128);">MariaDB 초기화.</span></p><p>14.04 LTS까지는 자동으로 처리되던 작업인데.. 분리되었다.</p><p>아무튼 데이터베이스 초기화 작업을 하도록 하자.</p><p>다음의 명령어 실행하자.</p><pre>/usr/bin/mysql_secure_installation</pre><p><span style="color:rgb(0,0,255);">모르면 엔터</span> 누르면 된다. (비밀번호만 설정하고 나머지는 엔터)</p><p>잘못한 것 같으면 위 명령어를 다시 실행하면 된다.</p><p> </p><p> </p><h4>:: root 의 인증 플러그인 정보 제거하기</h4><p>MySQL에 플러그인이라는 개념이 생겼다. 그 중 하나가 서버사이드 인증이다.</p><p>예를들어 <span style="color:rgb(0,0,255);">Linux의 myuser1</span> 사용자와 <span style="color:rgb(0,0,255);">MySQL(MariaDB)의 myuser1</span> 과 연결이 되는 경우이다. (비밀번호 필요없이 쉘인증)</p><p>root 사용자가 기본값으로 unix_socket Auth Plugin 이 설정되어 있는데… 이건 실 사용에 많은 불편함을 준다.  기존과 같이 비밀번호 인증 방식으로 바꾸도록 하자.</p><p>Linux root 사용자로 로그인한 상태에서</p><pre># mysql</pre><p>(현재는 unix_socket 인증방식이라서 Linux root 사용자는 MySQL(MariaDB) root 계정에 비밀번호 없이 로그인 할 수 있다)</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_SFmgZwQu_0c2ca82c931d49009e62ec2aa83aa47a224f500d.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_SFmgZwQu_0c2ca82c931d49009e62ec2aa83aa47a224f500d.png" alt="mysql_1604" class="img-tag aligncenter size-full wp-image-4426" style="width:474px;"/></a></p><pre>use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;
</pre><p> </p><p>-----------</p><p> </p><pre>#apt-get install php-mysql</pre><p>DB 연동모듈 설치. 완전 호환되기 때문에 mysql 이라고 해도 mariadb 사용가능.</p><p> </p><h5>MYSQL 콘솔 클라이언트 버전체크</h5><pre>#mysql -V</pre><pre>mysql  Ver 15.1 Distrib 10.0.24-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2</pre><p> </p><p> </p><h3>10 - 2) 기본 언어셋 설정(중요)</h3><p>이 단계를 건너뛰면 DB가 latin1 으로 생성되며 추후 DB작업에 문제가 생길 수 있다.</p><pre>#vi /etc/mysql/mariadb.conf.d/50-server.cnf</pre><p> </p><p>(vi 에디터 사용방법을 모른다면 ftp 클라이언트를 사용하여 서버에 로그인 후 해당파일을 수정하고 덮어쓰기한다.)</p><p> </p><p>[mysqld] 항목에 <span style="color:rgb(0,0,255);">다음 2 줄</span>을 추가한다.</p><p>2015년도 부터는 아래와 같이 <span style="color:rgb(0,0,255);">utf8mb4</span> 속성을 사용하세요.</p><p>이 속성은 <span style="color:rgb(0,0,255);">utf8확장</span>입니다. 기존의 모든 utf8과 상위 호환됩니다. (utf8 에서 utf8mb4 로의 변환은 손실이 일어나지 않습니다.)</p><p> </p><p><span style="color:rgb(0,0,255);">utf8mb4</span> 속성은 스마트폰 이모티콘 문자(emoji)를 저장할 수 있습니다.</p><p>자세한 설명은 이곳에(<a title="MySQL/MariaDB 에서 UTF-8 언어셋 비교 선택하기" href="https://blog.lael.be/post/917" target="_blank" rel="nofollow noreferrer noopener">https://blog.lael.be/post/917</a>) 있습니다.</p><p><span style="color:rgb(128,0,128);">character-set-server = utf8mb4</span><br /><span style="color:rgb(128,0,128);">collation-server = utf8mb4_unicode_ci</span></p><p> </p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_0KSwYqLT_a3e7194c5c22823c9b97ec54edcb51f35366675d.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_0KSwYqLT_a3e7194c5c22823c9b97ec54edcb51f35366675d.png" alt="q14" class="img-tag aligncenter size-full wp-image-3460" style="width:350px;"/></a></p><p> </p><p>변경사항 적용</p><pre>#service mysql restart</pre><p> </p><h3>11) PHP 권한 설정</h3><p>웹 서비스 구동시 발생할 수 있는 Nobody 퍼미션 관련 문제를 해결하기 위해 관련 프로그램을 설치한다.<br />이 세팅을 하면 shell의 권한과 sftp의 권한과 web의 권한이 동일하게 취급되며 보안도 좋게된다.<br />순서대로 쓰면 된다.</p><pre># apt-cache search mpm-itk</pre><p>libapache2-mpm-itk - multiuser module for Apache</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_qkzi0pY8_1c6ee12193fb00810685bf39fe333d6de4d2fa78.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_qkzi0pY8_1c6ee12193fb00810685bf39fe333d6de4d2fa78.png" alt="mpm_1604" class="img-tag aligncenter size-full wp-image-4416" style="width:366px;"/></a></p><p> </p><pre>#apt-get install libapache2-mpm-itk</pre><pre>#chmod 711 /home</pre><pre>#chmod -R 700 /home/*</pre><p>(/home/* 안에 아무파일도 없을 경우 마지막 구문은 에러가 날 수 있다. 에러가 나면 무시하도록 하자.)</p><p> </p><h3>11-1) PHP 실행확장자 변경</h3><p> </p><p>php 를 해석하는 확장자가 꽤 많이 있다.</p><pre>#vi /etc/apache2/mods-available/php7.0.conf</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_QlwM3qA6_f1f0f6e341e3ceb9f8a7076c39c6a8a7466a46f3.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_QlwM3qA6_f1f0f6e341e3ceb9f8a7076c39c6a8a7466a46f3.png" alt="xenial_0630" class="img-tag aligncenter wp-image-4803" style="width:283px;"/></a></p><p><span style="color:rgb(128,0,128);">.php .php3 .php4 .php5 .php7 .pht .phtml</span>  확장자 파일이 기본적으로 php를 해석할 수 있게 되어있다.</p><p>웹페이지에서 <span style="color:rgb(128,0,128);">파일업로드 구현시</span> 이 확장자 파일을 제대로 막아주지 못하면 사이트가 위험하게 된다.</p><p> </p><p><span style="color:rgb(128,0,128);"> .php 를 제외한 나머지의 접근을 차단</span>하자.</p><p> </p><div><div class="syntaxhighlighter bash"><table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="bash plain">&lt;FilesMatch </code><code class="bash string">".+\.ph(p3|p4|p5|p7|t|tml)$"</code><code class="bash plain">&gt;</code></div><div class="line number2 index1 alt1"><code class="bash spaces">    </code><code class="bash plain">Require all denied</code></div><div class="line number3 index2 alt2"><code class="bash plain">&lt;</code><code class="bash plain">/FilesMatch</code><code class="bash plain">&gt;</code></div></div></td></tr></tbody></table></div></div><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_N86ZKhWo_7e90d029c6bd4e850f77bdcd7e18a56ba68f73a0.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_N86ZKhWo_7e90d029c6bd4e850f77bdcd7e18a56ba68f73a0.png" alt="php-security-1604" class="img-tag aligncenter size-full wp-image-4418" style="width:450px;"/></a></p><p> </p><p>--------------------------------------------</p><p>적용을 위해서 아파치 재시작</p><pre>#service apache2 restart</pre><p> </p><h3>11-2) PHP Default timezone 설정하기.</h3><p>이 값을 설정하지 않으면 시스템 timezone 을 사용합니다.</p><p>PHP Default timezone 을 설정하는 것은 필수는 아니지만 매우 권장하는 작업입니다. 설정해주세요.</p><p><span style="color:rgb(128,0,128);">동일한 작업</span>을 <span style="color:rgb(128,0,128);">2개의 파일에 적용</span>해 주어야 합니다.<br />이건 Apache2 - PHP 일때 참조하는 설정파일입니다.</p><pre>#vi /etc/php/7.0/apache2/php.ini</pre><p>이건 Cron이나 Console에서 PHP를 직접실행할때 참조하는 설정파일입니다.</p><pre>#vi /etc/php/7.0/cli/php.ini</pre><p> </p><p>date.timezone 값을 찾아서 주석을 제거하고 시간을 설정해주세요.</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_cflWOAZe_16b6acd69bb30b8345f1c2fe93136a7ddc45a5bd.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_cflWOAZe_16b6acd69bb30b8345f1c2fe93136a7ddc45a5bd.png" alt="q17" class="img-tag aligncenter wp-image-3463" style="width:323px;"/></a></p><p>이 값을 찾아서</p><p> </p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_t6ITdMpy_d3b8845832837a60906f22460ad38a60cdff5b97.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_t6ITdMpy_d3b8845832837a60906f22460ad38a60cdff5b97.png" alt="q18" class="img-tag aligncenter wp-image-3464" style="width:312px;"/></a></p><p>이렇게 변경.</p><p> </p><pre>#service apache2 restart</pre><p> </p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_VYEgtbqF_65738245a96a67ef8ef9443f3e373e90e4fc7305.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_VYEgtbqF_65738245a96a67ef8ef9443f3e373e90e4fc7305.png" alt="" class="img-tag aligncenter wp-image-4087" style="width:698px;"/></a></p><p>나중에 mytest.php 파일을 만들고 웹브라우져에서 실행시킨 뒤 위와 같이 설정되어 있으면 정상이다.</p><div><div class="syntaxhighlighter php"><table border="0" cellspacing="0" cellpadding="0"><caption>mytest.php</caption><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain">&lt;?php phpinfo(); ?&gt;</code></div></div></td></tr></tbody></table></div></div><p>Default timezone 이 설정되어 있으면 정상.</p><p> </p><p> </p><h3>12) 계정생성 및 동작테스트</h3><p>원래 표준명령어는 useradd 이지만    ubuntu는 사용하기 좋게 adduser 를 지원한다.<br />리눅스 관련 서적을 보면 <strong>둘다</strong> 계정생성용 명령어라고 되어있다.<br />쉬운 설정을 위해 adduser를 사용</p><pre>#adduser myuser1</pre><p>(참고로 위와 반대동작을 하는 계정삭제 명령어는 - 계정을 삭제하고 홈디렉토리도 삭제함 -</p><pre>#userdel -r myuser1</pre><p>입니다.)</p><p>보통 웹루트는 홈디렉토리에 하지 않습니다.<br />저는 주로 www 디렉토리를 사용합니다.사용자변경 후 www 디렉토리를 생성하고 빠져나오기</p><pre>#su -l myuser1</pre><pre>#mkdir www</pre><pre>#exit</pre><h3></h3><h3></h3><h3>13) 웹사이트 Apache 환경설정파일 작성</h3><p>다음의 내용을 작성한다.<br />아래 예제에서는 사이트 환경설정파일명을 lael.be 로 가정하고 진행한다.<br />당신의 도메인, 사용자 아이디, 별도의 구분단어로 설정해서 사용하도록 하자.</p><pre>#vi /etc/apache2/sites-available/lael.be.conf</pre><p>/etc/apache2/sites-available/<strong>lael.be<span style="color:rgb(255,0,0);">.conf</span> </strong>에 저장한다.</p><div><div class="syntaxhighlighter bash"><table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div><div class="line number21 index20 alt2">21</div><div class="line number22 index21 alt1">22</div><div class="line number23 index22 alt2">23</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="bash plain">&lt;VirtualHost *:80&gt;</code></div><div class="line number2 index1 alt1"><code class="bash spaces">    </code><code class="bash comments">#main domain</code></div><div class="line number3 index2 alt2"><code class="bash spaces">    </code><code class="bash plain">ServerName lael.be</code></div><div class="line number4 index3 alt1"> </div><div class="line number5 index4 alt2"><code class="bash spaces">    </code><code class="bash comments">#additional domain</code></div><div class="line number6 index5 alt1"><code class="bash spaces">    </code><code class="bash plain">ServerAlias www.lael.be</code></div><div class="line number7 index6 alt2"><code class="bash spaces">    </code><code class="bash plain">ServerAlias my-anotherdomain.com</code></div><div class="line number8 index7 alt1"> </div><div class="line number9 index8 alt2"><code class="bash spaces">    </code><code class="bash comments">#document Root</code></div><div class="line number10 index9 alt1"><code class="bash spaces">    </code><code class="bash plain">DocumentRoot </code><code class="bash plain">/home/myuser1/www/</code></div><div class="line number11 index10 alt2"> </div><div class="line number12 index11 alt1"><code class="bash spaces">    </code><code class="bash comments">#additional setting</code></div><div class="line number13 index12 alt2"><code class="bash spaces">    </code><code class="bash plain">&lt;Directory </code><code class="bash plain">/home/myuser1/www/</code><code class="bash plain">&gt;</code></div><div class="line number14 index13 alt1"><code class="bash spaces">        </code><code class="bash plain">Options FollowSymLinks MultiViews</code></div><div class="line number15 index14 alt2"><code class="bash spaces">        </code><code class="bash plain">AllowOverride All</code></div><div class="line number16 index15 alt1"><code class="bash spaces">        </code><code class="bash plain">require all granted</code></div><div class="line number17 index16 alt2"><code class="bash spaces">    </code><code class="bash plain">&lt;</code><code class="bash plain">/Directory</code><code class="bash plain">&gt;</code></div><div class="line number18 index17 alt1"> </div><div class="line number19 index18 alt2"><code class="bash spaces">    </code><code class="bash plain">AssignUserID myuser1 myuser1</code></div><div class="line number20 index19 alt1"> </div><div class="line number21 index20 alt2"><code class="bash spaces">    </code><code class="bash plain">ErrorLog ${APACHE_LOG_DIR}</code><code class="bash plain">/lael</code><code class="bash plain">.be-error.log</code></div><div class="line number22 index21 alt1"><code class="bash spaces">    </code><code class="bash plain">CustomLog ${APACHE_LOG_DIR}</code><code class="bash plain">/lael</code><code class="bash plain">.be-access.log combined</code></div><div class="line number23 index22 alt2"><code class="bash plain">&lt;</code><code class="bash plain">/VirtualHost</code><code class="bash plain">&gt;</code></div></div></td></tr></tbody></table></div></div><p>ServerAlias 는 사용안하면 빼도 되는 줄이다.</p><p>#15.09.16 추가</p><p>당신이 만약 SSL(https) 를 적용하고자 한다면 <strong>lael.be.conf 파일 하단</strong>에 다음의 코드를 추가하세요. 즉 VirtualHost 영역을 하나 더 추가.</p><div><div class="syntaxhighlighter bash"><table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div><div class="line number21 index20 alt2">21</div><div class="line number22 index21 alt1">22</div><div class="line number23 index22 alt2">23</div><div class="line number24 index23 alt1">24</div><div class="line number25 index24 alt2">25</div><div class="line number26 index25 alt1">26</div><div class="line number27 index26 alt2">27</div><div class="line number28 index27 alt1">28</div><div class="line number29 index28 alt2">29</div><div class="line number30 index29 alt1">30</div><div class="line number31 index30 alt2">31</div><div class="line number32 index31 alt1">32</div><div class="line number33 index32 alt2">33</div><div class="line number34 index33 alt1">34</div><div class="line number35 index34 alt2">35</div><div class="line number36 index35 alt1">36</div><div class="line number37 index36 alt2">37</div><div class="line number38 index37 alt1">38</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="bash plain">&lt;VirtualHost *:443&gt;</code></div><div class="line number2 index1 alt1"><code class="bash spaces">    </code><code class="bash comments">#main domain</code></div><div class="line number3 index2 alt2"><code class="bash spaces">    </code><code class="bash plain">ServerName lael.be</code></div><div class="line number4 index3 alt1"> </div><div class="line number5 index4 alt2"><code class="bash spaces">    </code><code class="bash comments">#additional domain</code></div><div class="line number6 index5 alt1"><code class="bash spaces">    </code><code class="bash plain">ServerAlias www.lael.be</code></div><div class="line number7 index6 alt2"><code class="bash spaces">    </code><code class="bash plain">ServerAlias my-anotherdomain.com</code></div><div class="line number8 index7 alt1"> </div><div class="line number9 index8 alt2"><code class="bash spaces">    </code><code class="bash comments">#document Root</code></div><div class="line number10 index9 alt1"><code class="bash spaces">    </code><code class="bash plain">DocumentRoot </code><code class="bash plain">/home/myuser1/www/</code></div><div class="line number11 index10 alt2"> </div><div class="line number12 index11 alt1"><code class="bash spaces">    </code><code class="bash comments">#additional setting</code></div><div class="line number13 index12 alt2"><code class="bash spaces">    </code><code class="bash plain">&lt;Directory </code><code class="bash plain">/home/myuser1/www/</code><code class="bash plain">&gt;</code></div><div class="line number14 index13 alt1"><code class="bash spaces">        </code><code class="bash plain">Options FollowSymLinks MultiViews</code></div><div class="line number15 index14 alt2"><code class="bash spaces">        </code><code class="bash plain">AllowOverride All</code></div><div class="line number16 index15 alt1"><code class="bash spaces">        </code><code class="bash plain">require all granted</code></div><div class="line number17 index16 alt2"><code class="bash spaces">    </code><code class="bash plain">&lt;</code><code class="bash plain">/Directory</code><code class="bash plain">&gt;</code></div><div class="line number18 index17 alt1"> </div><div class="line number19 index18 alt2"><code class="bash spaces">    </code><code class="bash plain">AssignUserID myuser1 myuser1</code></div><div class="line number20 index19 alt1"> </div><div class="line number21 index20 alt2"><code class="bash spaces">    </code><code class="bash plain">ErrorLog ${APACHE_LOG_DIR}</code><code class="bash plain">/lael</code><code class="bash plain">.be-error.log</code></div><div class="line number22 index21 alt1"><code class="bash spaces">    </code><code class="bash plain">CustomLog ${APACHE_LOG_DIR}</code><code class="bash plain">/lael</code><code class="bash plain">.be-access.log combined</code></div><div class="line number23 index22 alt2"> </div><div class="line number24 index23 alt1"><code class="bash spaces">    </code><code class="bash plain">Header always </code><code class="bash functions">set</code> <code class="bash plain">Strict-Transport-Security </code><code class="bash string">"max-age=31536000"</code></div><div class="line number25 index24 alt2"> </div><div class="line number26 index25 alt1"><code class="bash spaces">    </code><code class="bash plain">SSLEngine on</code></div><div class="line number27 index26 alt2"> </div><div class="line number28 index27 alt1"><code class="bash spaces">    </code><code class="bash plain">SSLProtocol all -SSLv2 -SSLv3</code></div><div class="line number29 index28 alt2"> </div><div class="line number30 index29 alt1"><code class="bash spaces">    </code><code class="bash plain">SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA</code></div><div class="line number31 index30 alt2"> </div><div class="line number32 index31 alt1"><code class="bash spaces">    </code><code class="bash plain">SSLHonorCipherOrder on</code></div><div class="line number33 index32 alt2"> </div><div class="line number34 index33 alt1"><code class="bash spaces">    </code><code class="bash plain">SSLCertificateFile </code><code class="bash string">"/home/myuser1/ssl/mysite_ssl.crt"</code></div><div class="line number35 index34 alt2"><code class="bash spaces">    </code><code class="bash plain">SSLCertificateKeyFile </code><code class="bash string">"/home/myuser1/ssl/mysite_ssl.key"</code></div><div class="line number36 index35 alt1"><code class="bash spaces">    </code><code class="bash plain">SSLCertificateChainFile </code><code class="bash string">"/home/myuser1/ssl/mysite_ssl.certchain.crt"</code></div><div class="line number37 index36 alt2"> </div><div class="line number38 index37 alt1"><code class="bash plain">&lt;</code><code class="bash plain">/VirtualHost</code><code class="bash plain">&gt;</code></div></div></td></tr></tbody></table></div></div><p><a href="https://www.sslshopper.com/ssl-checker.html#hostname=blog.lael.be" target="_blank" rel="nofollow noreferrer noopener">https://www.sslshopper.com/ssl-checker.html#hostname=blog.lael.be</a>  (<span style="color:rgb(128,0,128);">SSL Chain test</span> - 인증서가 올바르게 설치되어 있는지)</p><p><a href="https://www.ssllabs.com/ssltest/analyze.html?d=blog.lael.be" target="_blank" rel="nofollow noreferrer noopener">https://www.ssllabs.com/ssltest/analyze.html?d=blog.lael.be</a> (<span style="color:rgb(128,0,128);">SSL Algorithm test</span> - 안전한 암호화 통신이 설정되어 있는지)</p><p><span style="color:rgb(0,0,255);">Chain test</span> 는 <span style="color:rgb(0,0,255);">모두 Valid</span> 이어야하고, <span style="color:rgb(0,0,255);">SSL Algorithm test</span> 는 <span style="color:rgb(0,0,255);">A 이상</span>이면 정상적인 운영이 가능하다.</p><p>라엘이가 여러 설정 값에 대해서 테스트를 해 보았고, 최적의 권장설정 값을 위와 같이 적어두었으니 그대로 쓰면 된다.</p><p>위의 설정값으로 SSL을 설치하면 A+등급을 받을 수 있을 것이다.</p><p> </p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_uBlxLszN_ecdc99c9889a753402270407f2b051ef664e7591.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_uBlxLszN_ecdc99c9889a753402270407f2b051ef664e7591.png" alt="pv106" class="img-tag aligncenter size-full wp-image-5236" style="width:824px;"/></a></p><p><span style="color:rgb(255,255,255);">.</span></p><p><span style="color:rgb(128,0,128);">인증서 적용 테스트</span>는 위의 사이트를 이용하여라.</p><p>인증서 체인 파일이란 “인증서에 대한 인증서” 파일이다.</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_1nQFZzda_82a9d14bc9ce060489a9fb7f7e683c2dd0db7462.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_1nQFZzda_82a9d14bc9ce060489a9fb7f7e683c2dd0db7462.png" alt="mac-ssl" class="img-tag aligncenter wp-image-5241" style="width:476px;"/></a></p><p style="text-align:center;">&lt; 그림 : 이 블로그는 위의 단계를 거쳐 인증된다. 이것을 체인 인증 이라고 한다. &gt;</p><p>대통령이 당신을 인증할 때 직권으로 인증하는 것이 아니라, 대통령 -&gt; 서울시장 -&gt; 강남구청장 -&gt; 삼성동장 -&gt; 당신 의 단계를 거친다. 검증하려면 모든 단계의 보증 증서를 제공해야 하는 것이다.</p><p><span style="color:rgb(128,0,128);">인증서 파일</span>에는 <span style="color:rgb(128,0,0);">삼성동장 -&gt; 당신</span>  의 정보가 들어있고, (암호화 통신시 공개됨)</p><p><span style="color:rgb(128,0,128);">인증서 키 파일</span>에는 <span style="color:rgb(128,0,0);">암호화 통신을 위한 정보</span>가 들어있고 (<span style="color:rgb(128,0,0);">은행 보안카드</span> 로 비유. 외부에 공개되지 않음.)</p><p><span style="color:rgb(128,0,128);">인증서 체인 파일</span>에는 <span style="color:rgb(128,0,0);">대통령 -&gt; 서울시장, 서울시장 -&gt; 강남구청장, 강남구청장 -&gt; 삼성동장</span> 의 정보가 들어있다. (체인 인증이라고 한다. 연결고리 인증)</p><p>인증서 체인을 올바르게 작성하지 않으면 <span style="color:rgb(128,0,128);">Firefox 브라우저</span>와 <span style="color:rgb(128,0,128);">Android Chrome 브라우저</span>에서 “인증서 정보부족” 오류가 발생하게 된다.</p><p> </p><h3>14) 사이트 활성화 및 적용</h3><p>명령어는<br />#a2ensite 사이트환경설정파일명<br /> 입니다.</p><pre>#a2ensite <strong>lael.be</strong></pre><p>(참고로 사이트 비활성화는</p><pre>#a2dissite lael.be</pre><p>입니다.)</p><p>- 아파치 설정 다시 불러오기(적용을 위해)</p><pre>#service apache2 reload</pre><h3>15) Apache 추가 보안 설정</h3><p>- 기본 언어셋 설정</p><pre>#vi /etc/apache2/conf-available/charset.conf</pre><p>기본 언어값 UTF-8 에 대해서 주석처리되어 있을 텐데 주석(#)을 제거해 준다.</p><p> </p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_8eVKuWa2_f2f0ee4e8e24fa439561523138fee1ee1e528fdb.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_8eVKuWa2_f2f0ee4e8e24fa439561523138fee1ee1e528fdb.png" alt="iu4" class="img-tag aligncenter wp-image-4094" style="width:263px;"/></a></p><p>- 추가 보안 설정</p><pre>#vi /etc/apache2/conf-available/security.conf</pre><p>매우 권장하는 보안설정이므로 Ubuntu Apache 패키지 제작자가 미리 써두었다.<br />이미 다 쓰여 있으니까 주석(#) 만 제거하자.</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_D5dXGHrQ_8a891f765fa3d44d2c91a0f76ed06434af459bea.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_D5dXGHrQ_8a891f765fa3d44d2c91a0f76ed06434af459bea.png" alt="q1" class="img-tag aligncenter size-full wp-image-4420" style="width:272px;"/></a></p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_MU7VEHTu_e47cae67ae6a0e8a65b3a7690d29d22c4cf1840b.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_MU7VEHTu_e47cae67ae6a0e8a65b3a7690d29d22c4cf1840b.png" alt="iu2" class="img-tag aligncenter size-full wp-image-4091" style="width:323px;"/></a></p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_VR73XPm9_e3b0b7e1b967e18f57815dadae51f8a82abdadd5.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_VR73XPm9_e3b0b7e1b967e18f57815dadae51f8a82abdadd5.png" alt="iu3" class="img-tag aligncenter size-full wp-image-4092" style="width:394px;"/></a></p><p> </p><p>- 아파치 설정 다시 불러오기(적용을 위해)</p><pre>#service apache2 reload</pre><hr /><h3>옵션) SSH 기본 포트번호 변경</h3><p>#이 작업은 무작위 대입공격(Brutu force attack)의 시도를 차단해줍니다.<br />보통 IP주소 : 22번 포트를 스캔해서 ssh와 연결되면 무작위 로그인 시도를 하는 프로그램이 엄청 많은데,<br />포트번호만 바꾸어주어도 방어가 되거든요.</p><p>!! <span style="color:rgb(128,0,128);">IPTABLES</span> 방화벽, <span style="color:rgb(128,0,128);">SSH 포트번호 변경</span>, <span style="color:rgb(128,0,128);">Fail2ban</span> 중에서 <span style="color:rgb(0,0,255);"><strong>하나만</strong> 적용</span>하세요!!</p><p>1) 나는 <span style="color:rgb(128,0,128);">KS 클라우드 or 아마존 클라우드</span>를 사용하고 있어! -&gt; <span style="color:rgb(128,0,128);">클라우드 방화벽 쓰세요</span> !!<br />2) 나는 <span style="color:rgb(128,0,128);">허용된 IP만 서버에 접속</span>하게 할거야 -&gt; <span style="color:rgb(128,0,128);">IPTABLES</span> !!<br /> 3) 나는 사용자의 IP를 특정지을 수 없는데 무차별대입 공격은 방어할거야 -&gt; Fail2ban !!<br /> 4) 나는 나만 아는 포트번호로 서버에 접속할 거야 -&gt; SSH 포트변경!!</p><p>[개인 프로젝트, <span style="color:rgb(128,0,128);">회사의 서비스 -&gt; IPTABLES</span>]<br /> [웹호스팅 -&gt; Fail2ban 또는 SSH 포트변경]</p><p>SSH 기본 포트번호인 22번을 다른 번호로 바꿉니다.<br />기억하기 쉬운 숫자로 변경하세요.</p><p> </p><pre>#vi /etc/ssh/sshd_config</pre><p>Port 22   를 찾아서 임의의 숫자 : 10022, 34522 등 기억하기 쉬운 숫자로 설정.</p><p>포트번호는 10000번 이상의 숫자를 선택하시길 권장합니다.</p><p> </p><pre>#service ssh restart</pre><p> </p><hr /><p> </p><h3>옵션) 방화벽 적용하기</h3><p>방화벽의 중요성을 알고 싶다면</p><pre># tailf /var/log/auth.log</pre><p>를 입력해보도록 하자.  (Control + C 를 눌러 프로그램 종료)</p><p>별도의 방화벽 설정이 없었다면 벌써 중국에서 서버에 로그인 시도를 하고 있을 것이다.</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_mj7ZDCiv_27502e056bd4e87ecbb854d0b73536d6a3af78ba.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_mj7ZDCiv_27502e056bd4e87ecbb854d0b73536d6a3af78ba.png" alt="fail2ban_1604" class="img-tag aligncenter size-full wp-image-4423" style="width:650px;"/></a></p><p>이러한 무차별 로그인 시도를 다음 중 어느 하나를 사용해서 막을 수 있다.</p><p>가장 편한 것은 fail2ban 이다. (한줄만 타이핑하면 방어됨)<br /> (<a href="https://blog.lael.be/post/858#fail2ban" target="_blank" rel="nofollow noreferrer noopener">https://blog.lael.be/post/858#fail2ban</a>) 로 이동해서 설정하세요.<br /> * <span style="color:rgb(0,0,255);">접속자의 IP 가 고정되어 있으면</span> 방화벽 설정을 통해, 특정 아이피에서만 서버에 접속할 수 있도록 설정해주세요.</p><p> </p><p>현재 방화벽 설정 보기. (List)</p><pre>#iptables -L</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_sjNrypLP_f0c0c5cb8e8e5e578f398e1e86e14caa8d534d4c.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_sjNrypLP_f0c0c5cb8e8e5e578f398e1e86e14caa8d534d4c.png" alt="q26" class="img-tag aligncenter size-full wp-image-3472" style="width:382px;"/></a></p><p>INPUT (서버로 들어오는 것 관리), FORWARD (서버에서 내부망으로 연결관리;잘 안씀), OUTPUT (서버에서 나가는 것 관리)<br />로 이루어져 있다.</p><p>보통 FORWARD와 OUTPUT은 건들이지 않고 INPUT 만 수정한다.<br /><span style="color:rgb(255,102,0);">policy ACCEPT</span> 라는 뜻은 아무 조건도 해당하지 않았을 때 ACCEPT 하라는 것이다.</p><p>먼저 현재 방화벽 설정을 파일로 저장한다. 언제든 현재의 상태로 되돌릴 수 있기 위해서 이다.</p><pre>#cd ~</pre><pre>#mkdir firewall_rules</pre><pre>#cd firewall_rules</pre><pre>#iptables-save &gt; <span style="color:rgb(255,0,0);">151214</span>.rules                 현재 날짜 쓰세요.</pre><p>이제 방화벽을 복구해 보자.</p><pre>#iptables-restore &lt; <span style="color:rgb(255,0,0);">151214</span>.rules</pre><pre>#iptables -L</pre><p>&gt;&gt;설정 시작.<br />규칙 : 아이피 111.222.111.222 에 대해서 destination port 가 22 이면 ACCEPT 하여라.</p><pre>#iptables -A INPUT -s 111.222.111.222/32 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT</pre><p>아이피 바꾸지 마시고 위의 예시 (111.222.111.222) 그대로 입력하세요.</p><pre>#iptables -L</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_RKDje8QS_69ce268701249f7ae0cc11e0f210f147b237250f.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_RKDje8QS_69ce268701249f7ae0cc11e0f210f147b237250f.png" alt="q27" class="img-tag aligncenter size-full wp-image-3473" style="width:613px;"/></a></p><p> </p><p>이제 현재 상태에 대해서 방화벽 설정파일을 다시 생성해보도록 하자.</p><pre>#iptables-save &gt; <span style="color:rgb(255,0,0);">151214</span>.rules</pre><p> </p><p>SFTP나 vi, cat 으로 해당 151214.rules 를 열어보자.</p><p>열고나서 코드의 뜻을 대충 해석해보아라. (간단하다.)</p><p>하단 *filter 부분에</p><pre>-A INPUT -s 111.222.111.222/32 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT</pre><p>가 보이는가?</p><p> </p><p>여러분은 이곳에 아래의 코드를 집어넣어야 한다.</p><p>순서가 중요하다. IF-ELSE 같이 동작하기 때문에 조건에 맞으면 바로 지정된 동작을 한다.</p><p>211.105.192.168 아이피만 지정하고 싶을 때 -&gt; -s 211.105.192.168/32</p><p>211.105.192.* 아이피 그룹을 지정하고 싶을 때 -&gt; -s 211.105.192.0/24</p><p>211.105.*.* 아이피 그룹을 지정하고 싶을 때 -&gt; -s 211.105.0.0/16</p><p>목적지 포트가 22번(ssh) 포트일 때 -&gt; -dport 22</p><p>목적지 포트가 80번(http) 포트일 때 -&gt; -dport 80</p><p>목적지 포트가 443번(https) 포트일 때 -&gt; -dport 443</p><p> </p><p>아래는</p><p>1. 이미 연결된 것은 허용<br />2. ping 허용<br />3. loopback 허용<br />4. 111.222.111.222 의 22번 포트 접근 허용<br />5. 123.111.123.111 의 22번 포트 접근 허용<br />6. 80 포트 접근 허용 (-s 옵션이 없으므로 누구나 허용)<br />7. 443 포트 접근 허용 (-s 옵션이 없으므로 누구나 허용)<br />8. 차단<br />9. FORWARD 차단</p><p>의 코드이다.</p><p>아까 생성한 .rules 파일을 열어서 <span style="color:rgb(0,0,255);">아래의 코드를</span> <span style="color:rgb(128,0,128);">그림과 같이</span> 코드를 추가하여라. 이때 반드시 <span style="color:rgb(255,0,0);">당신의 아이피</span>를 추가하여라.</p><p>추가가 잘못되어도 어차피 <span style="text-decoration:underline;">1번의 조건에 의해서</span> 당신의 연결이 끊기지는 않겠지만 새로운 연결은 차단될 것이다.</p><p> </p><div><div class="syntaxhighlighter bash"><table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="bash plain">-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT</code></div><div class="line number2 index1 alt1"><code class="bash plain">-A INPUT -p icmp -j ACCEPT</code></div><div class="line number3 index2 alt2"><code class="bash plain">-A INPUT -i lo -j ACCEPT</code></div><div class="line number4 index3 alt1"><code class="bash plain">-A INPUT -s 111.222.111.222</code><code class="bash plain">/32</code> <code class="bash plain">-p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT</code></div><div class="line number5 index4 alt2"><code class="bash plain">-A INPUT -s 123.111.123.111</code><code class="bash plain">/32</code> <code class="bash plain">-p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT</code></div><div class="line number6 index5 alt1"><code class="bash plain">-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT</code></div><div class="line number7 index6 alt2"><code class="bash plain">-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT</code></div><div class="line number8 index7 alt1"><code class="bash plain">-A INPUT -j REJECT --reject-with icmp-host-prohibited</code></div><div class="line number9 index8 alt2"><code class="bash plain">-A FORWARD -j REJECT --reject-with icmp-host-prohibited</code></div></div></td></tr></tbody></table></div></div><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_gEHw0FQ6_321033da4cddfe4296a5dc6fcb474e4ffcf15888.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_gEHw0FQ6_321033da4cddfe4296a5dc6fcb474e4ffcf15888.png" alt="q28" class="img-tag aligncenter size-full wp-image-3474" style="width:409px;"/></a></p><pre>#iptables-restore &lt; 151214.rules</pre><pre>#iptables -L</pre><p>!!!반드시 <span style="color:rgb(255,0,0);">현재 쉘 연결을 끊지 말고</span>!!!</p><p>현재 연결은 1번 조건에 의해서 반드시 허용이기 때문에 괜찮다.</p><p> </p><p><span style="color:rgb(255,0,0);">새로 연결창 띄워서</span> 테스트해 보아라.</p><p>만약 원하는대로 동작하지 않는다면 다시 .rules 파일을 수정하고 iptables-restore 하여라.</p><p>방화벽 설정이 머리가 아프다면</p><pre># iptables -F</pre><p>로 <span style="color:rgb(128,0,128);">초기화</span> 하고 내일 다시 시도해 보아라.</p><p> </p><p>이 설정은 재부팅이 되면 초기화 된다.</p><p>설정을 지속시키도록 하자.</p><p>iptables-persistent 설치</p><p></p>]]></description>
	<dc:creator>최고관리자</dc:creator>
		<dc:date>2016-12-19T10:11:21+09:00</dc:date>
	</item>
	<item>
	<title>Ubuntu 16.04 LTS 웹서버 세팅방법 (Nginx + PHP7-FPM + MariaDB)</title>
	<link>https://www.worksdesign.co.kr/bbs/board.php?bo_table=skill&amp;wr_id=4</link>
	<description><![CDATA[<div class="alert alert-warning" style="border-color:transparent;line-height:1.5;"><strong>[주의]</strong> 이 글은 Ubuntu 16.04 LTS 에 맞추어 작성되었습니다.</div><div class="bs-callout bs-callout-info" style="border-color:rgb(188,232,241) rgb(188,232,241) rgb(188,232,241) rgb(238,238,238);margin:20px 0px;padding:4px 20px;border-left-width:3px;border-left-style:solid;background-color:rgb(244,248,250);"><h4 style="color:rgb(58,135,173);">#16.10.04 무료 보안인증서(SSL) 적용방법이 추가됨</h4><p>무료 보안인증서 설치방법이 추가되었습니다. HTTPS 사용을 원하신다면, 본문을 다 읽으신 후 다음의 글로 이동해주세요.</p><p><a href="https://blog.lael.be/post/5107" target="_blank" rel="nofollow noreferrer noopener">https://blog.lael.be/post/5107</a></p></div><hr /><p>- English version is also available. [<a href="http://www.microsofttranslator.com/bv.aspx?from=ko&amp;to=en&amp;a=http%3A%2F%2Fblog.lael.be%2Fpost%2F2600" target="_blank" rel="nofollow noreferrer noopener">Bing Translator</a>]</p><hr /><p>* Nginx 가 아닌 Apache 로 PHP 웹서버를 구축하시려면 <a href="https://blog.lael.be/post/73" target="_blank" rel="nofollow noreferrer noopener">https://blog.lael.be/post/73</a> 글로 이동하세요. (쉽고 편함)</p><p>* Ubuntu 에서 JSP 웹서버 세팅을 원하시면 <a href="https://blog.lael.be/post/858" target="_blank" rel="nofollow noreferrer noopener">https://blog.lael.be/post/858</a> 글로 이동하세요.</p><p>* Ubuntu 에서 PHP와 JSP를 동시 구동하고 싶으시면 <a title="Ubuntu 한 서버에서 PHP, JSP 동시에 사용하기" href="https://blog.lael.be/post/1023" target="_blank" rel="nofollow noreferrer noopener">https://blog.lael.be/post/1023</a> 글로 이동하세요.</p><p>* Ubuntu 가상서버호스팅을 찾는 중이라면 <a href="https://blog.lael.be/post/44" target="_blank" rel="nofollow noreferrer noopener">https://blog.lael.be/post/44</a> 글로 이동하세요.</p><hr /><h3>Nginx</h3><p>공식사이트는 <a href="http://nginx.org/" target="_blank" rel="nofollow noreferrer noopener">http://nginx.org/</a> 이다. 엔진엑스 라고 부른다.</p><p><span style="color:rgb(128,0,128);">Igor Sysoev (이고르 시소에브)</span> 라는 <span style="color:rgb(128,0,128);">러시아 개발자</span>가 개발했으며, 이 소프트웨어의 주요 개발 목표는 “<span style="color:rgb(0,0,255);">동시접속 처리에 특화된</span> 웹서버 프로그램” 이다.</p><p> </p><h4>- Nginx 가 Apache 보다 동시접속 처리에 좋은 이유</h4><p>Nginx 는 Apache 에서 널리 사용되는 기능만 구현하였다. 즉 기능이 많지 않다. 동작이 단순하다.</p><p>Nginx 자체는 별로 많은 연산을 하지 않는다. 주로 전달자 역할만 하며 이런 이유로 Reverse Proxy Tool 이라고도 부른다.</p><p> </p><h4>- Nginx 와 Apache 중 어떤 웹서버를 선택해야할까?</h4><p><span style="color:rgb(0,0,255);">당신의 취향</span>이다.</p><p>둘은 분명히 장단점이 있다. <span style="color:rgb(128,0,128);">다 되는 Apache</span> 를 선택할 것이냐, <span style="color:rgb(128,0,128);">동시접속처리를 잘하는 Nginx</span>를 선택할 것이냐는  본인의 판단에 달려있다.</p><p>다만 동시연결수 250이상 (동시접속자 환산 700명정도?) 라면, 서버를 증설하거나, Nginx 환경으로 바꾸어야 할 것이다.</p><p> </p><p> </p><h3>PHP-FPM</h3><p><span style="color:rgb(128,0,128);">Nginx</span> 가 <span style="color:rgb(128,0,128);">PHP 를 해석할 수 없기 때문에</span> 외부 프로그램의 도움을 받아야 한다.</p><p><span style="color:rgb(128,0,128);">PHP-FPM</span> 은 <span style="color:rgb(128,0,128);">Nginx 로 부터 전달 받은 경로의 PHP 파일을 실행</span>시키고 그 실행 결과를 Nginx 에게 반환하는 독립 실행 프로그램이다.</p><p> </p><hr /><p>이제 실제로 세팅해 보도록 하겠다.</p><p>이 글은 <span style="color:rgb(0,0,255);">Ubuntu 16.04 LTS</span> (코드네임 : <span style="color:rgb(128,0,128);">Xenial</span>) 기준으로 작성되었다.</p><h3>0) root 권한으로 변경</h3><p>기본으로 주어진 계정이 root 가 아닐 경우에만 0번을 따라하세요.<br />본문의 모든 명령어는 root 의 권한에서 실행해야합니다. 자신에게 주어진 계정이 root 계정이 아니라면 다음의 명령어로 root 로 전환해 주도록 합시다.</p><p>자신의 계정 보기</p><pre># whoami</pre><p>sudo 명령어 실행. root 권한으로 root 로 로그인하는 명령어를 실행한다.</p><pre># sudo su</pre><p>자신의 계정 보기</p><pre># whoami</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_I6SMGVZi_0ec897339780287477f1416e11ca4b258c37c7d7.png" target="_blank" class="view_image"><img itemprop="image" content="http://uidc.kr.ms/data/editor/1612/3530309802_I6SMGVZi_0ec897339780287477f1416e11ca4b258c37c7d7.png" src="http://uidc.kr.ms/data/editor/1612/3530309802_I6SMGVZi_0ec897339780287477f1416e11ca4b258c37c7d7.png" alt="b6" class="img-tag aligncenter size-full wp-image-4994" style="width:230px;"/></a></p><p>기본 계정의 UserID 는 그림과 다를 수 있음. <span style="color:rgb(128,0,128);">위 예시</span>에서 <span style="color:rgb(128,0,128);">기본 아이디는 ubuntu</span> 이다.</p><p>sudo 명령어를 사용할 수 있는 계정은 root 와 동급이니 비밀번호 관리에 신중해야한다. 기본 계정의 비밀번호를 어려운 것으로 변경해주도록 하자.</p><pre># passwd ubuntu</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_4dnst5VQ_660bd9e459a7fe1e9672bd700a5fda24dc842f9a.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_4dnst5VQ_660bd9e459a7fe1e9672bd700a5fda24dc842f9a.png" alt="b7" class="img-tag aligncenter size-full wp-image-4997" style="width:270px;"/></a></p><p> </p><h3>1) 쉘 기본 언어값 변경</h3><p>서버 운영중에 문제가 발생했을 때 구글링을 할 수 있게 하는 기초작업이다.</p><p><span style="color:rgb(128,0,128);">쉘의 기본 언어값</span>을 <span style="color:rgb(128,0,128);">영어</span>로 변경하도록 하자.</p><p>크게 달라지는 것은 없고 오직 <span style="color:rgb(0,0,255);">쉘 메세지</span>만 <span style="color:rgb(0,0,255);">영어로 바뀐다</span>.</p><pre># apache2</pre><p><span style="text-decoration:underline;"><span style="color:rgb(128,0,128);">이미 영어메시지가 출력된다면</span></span> <span style="color:rgb(128,0,0);">1번을 건너뛰고</span> <span style="color:rgb(128,0,128);">2번 단계로 넘어가도록 하자.</span></p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_N4mfz32F_d20cc0919c19028cc609ff9ccf26870ac1a0a36d.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_N4mfz32F_d20cc0919c19028cc609ff9ccf26870ac1a0a36d.png" alt="k1" class="img-tag aligncenter size-full wp-image-3729" style="width:560px;"/></a><br /><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_UmTz2Bn1_2c78c536ef70fa1d851189be0601877acb7cd757.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_UmTz2Bn1_2c78c536ef70fa1d851189be0601877acb7cd757.png" alt="k2" class="img-tag aligncenter size-full wp-image-3730" style="width:360px;"/></a></p><p style="text-align:center;">&lt; 그림 : 동일한 서버. 쉘 언어값만 다름. &gt;</p><p> </p><pre># vi /etc/default/locale</pre><pre>LANG="en_US.UTF-8"</pre><pre>LANGUAGE="en"</pre><p>한줄만 써도 되는데, 쉘 언어값이 바뀌지 않으면 두줄을 적도록 하자.</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_X0N84bQ2_12347e4b0d0cfc086bfd21b383717ecfe16f5699.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_X0N84bQ2_12347e4b0d0cfc086bfd21b383717ecfe16f5699.png" alt="k3" class="img-tag aligncenter size-full wp-image-3732" style="width:169px;"/></a></p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_GJcXA3Bm_23fd2886be920aa5bcfadfc1d033274fb5c3a935.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_GJcXA3Bm_23fd2886be920aa5bcfadfc1d033274fb5c3a935.png" alt="k4" class="img-tag aligncenter size-full wp-image-3733" style="width:144px;"/></a></p><p>다시 로그인 해 보면 값이 적용된 것을 알 수 있다.</p><p> </p><h3>2) 리눅스 버전체크</h3><pre>#uname -a
Linux Laelblog-dev 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux</pre><p> </p><h3>3) Ubuntu 버전체크</h3><pre>#cat /etc/issue
Ubuntu 16.04.1 LTS \n \l</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_LIKsOReA_979f42d88e609be5c8a7423b2bea6610d58d32cb.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_LIKsOReA_979f42d88e609be5c8a7423b2bea6610d58d32cb.png" alt="a1" class="img-tag aligncenter size-full wp-image-4897" style="width:260px;"/></a></p><p>조금 더 자세하게 운영체제 버전정보를 알아보고 싶다면</p><pre># lsb_release -a</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_M4jYrths_d79f730aaf9bf25b1babbcfdbb91099578563ab0.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_M4jYrths_d79f730aaf9bf25b1babbcfdbb91099578563ab0.png" alt="a2" class="img-tag aligncenter size-full wp-image-4898" style="width:260px;"/></a></p><p>해당 명령어는 Ubuntu 에서는 기본적으로 설치되어 있지만 <span style="color:rgb(128,0,128);">CentOS 계열에서는</span> 기본패키지가 아니니 사용하려면 <span style="color:rgb(128,0,128);">다음 명령어로 설치</span>해주어야 한다.</p><pre># yum install redhat-lsb-core</pre><h3>4) 하드용량체크</h3><pre># df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        49G  1.6G   45G   4% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            2.0G   12K  2.0G   1% /dev
tmpfs           396M  392K  395M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            2.0G     0  2.0G   0% /run/shm
none            100M     0  100M   0% /run/user
</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_KQpMjNaC_e87a207c6df5812d83540bde31f3aa26c59cf5b1.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_KQpMjNaC_e87a207c6df5812d83540bde31f3aa26c59cf5b1.png" alt="a3" class="img-tag aligncenter size-full wp-image-4907" style="width:426px;"/></a></p><p>위의 서버에서 <span style="color:rgb(128,0,128);">현재 사용가능한 용량은 45GB</span> 이다.</p><p> </p><h3>5) 메모리 체크</h3><pre># free -m
             total       used       free     shared    buffers     cached
Mem:          3952        194       3758          0         13        105
-/+ buffers/cache:         76       3876
Swap:         1020          0       1020
</pre><div></div><p>3952M의 전체메모리중 현재 194M을 사용하고 있고 3758M가 비어있다.</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_VAGhSEZ7_0680f6b56534e94786992ed56076722712807c4e.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_VAGhSEZ7_0680f6b56534e94786992ed56076722712807c4e.png" alt="k7" class="img-tag aligncenter size-full wp-image-3736" style="width:310px;"/></a></p><p> </p><h3>6) CPU 코어수 확인</h3><p>cpu정보 프로세스를 읽어서 processor 항목이 몇개인지 갯수를 셉니다.</p><pre># cat /proc/cpuinfo | grep processor | wc -l</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_x5idA9aY_1901adf9d0da4203176f770e403f0edef9bf20d8.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_x5idA9aY_1901adf9d0da4203176f770e403f0edef9bf20d8.png" alt="k8" class="img-tag aligncenter size-full wp-image-3737" style="width:433px;"/></a></p><p>위의 사진은 6 core 를 뜻합니다.</p><p>한번 정도는 다음의 명령어를 확인해 보세요. CPU 정보를 알 수 있습니다.</p><pre>#cat /proc/cpuinfo | grep processor</pre><pre>#cat /proc/cpuinfo</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_WwpsEk4H_545d327c2d19015935bd183469550b90915c9716.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_WwpsEk4H_545d327c2d19015935bd183469550b90915c9716.png" alt="k9" class="img-tag aligncenter size-full wp-image-3738" style="width:430px;"/></a></p><p> </p><h3>7) 현재 운영체제에 설치되어 있는 프로그램 최신버전 패치</h3><p>APT 목록 갱신</p><p>APT란 Advanced Packaging Tool 을 뜻합니다.</p><p>우리는 apt 라는 우분투에 내장된 프로그램을 이용해서 프로그램을 쉽게 설치/제거 할 수 있습니다.</p><p> </p><p>패키지 목록 갱신.</p><pre>#apt-get update</pre><p> </p><p>현재 운영체제에 설치되어있는 프로그램 최신버전 패치</p><pre>#apt-get upgrade</pre><p>설치 중 일부 프로그램 설정파일을 초기화 할것인지 물어보는데 기본값인 Keep Local Version 을 선택한다. (미리 선택되어 있으므로 Enter 만 누르면 된다.)</p><p> </p><h3>8) 시스템 시간 설정</h3><p>이것을 하지 않으면 클라우드 서버 사업자가 미리 지정해 둔 지역의 시간을 불러올 것이다. (한국은 Seoul, 일본은 Tokyo, 그외에는 GMT.)</p><p>물론 초기 설치할 때 Asia/Seoul 을 설정했다면 이 작업을 할 필요는 없다. 하지만 또 한다고 해서 문제되지는 않는다.</p><p>- 데비안 패키지 재설정 TimeZone Data 를 실행한다.</p><pre>#dpkg-reconfigure tzdata</pre><p>GUI 환경이 나올 텐데, 순서대로 Asia - Seoul 을 선택하면 된다.</p><p> </p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_0tUfv8uo_aeb2184ea7e504e23819aa0d6198383ed6c29492.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_0tUfv8uo_aeb2184ea7e504e23819aa0d6198383ed6c29492.png" alt="v1" class="img-tag aligncenter size-full wp-image-677" style="width:548px;"/></a></p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_HoihB4uA_a2f60e38fe509e0f1eccd3932c807b9b3ce45bf3.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_HoihB4uA_a2f60e38fe509e0f1eccd3932c807b9b3ce45bf3.png" alt="a4" class="img-tag aligncenter size-full wp-image-4909" style="width:384px;"/></a></p><p>이 서버의 시각은 현재 한국기준(KST) 2016년 08월 08일 22:28:07 이다.</p><p> </p><h3>9) Hostname 설정 (선택)</h3><p><span style="color:rgb(128,0,128);">이 단계는</span> 권장하는 단계이나 <span style="color:rgb(128,0,128);">건너뛰어도 운영에 큰 문제가 없다</span>.</p><p>이 서버에 이름을 정하는 것이다. 이름을 잘 정해 두어야 나중에 다중 서버작업을 할 때 헷갈리지 않는다.</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_JnI9bwah_54e011f74564931170f40fe31da3c7398c11dce1.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_JnI9bwah_54e011f74564931170f40fe31da3c7398c11dce1.png" alt="v3" class="img-tag aligncenter size-full wp-image-679" style="width:251px;"/></a></p><p>위의 뜻은 “li599-115 서버에 root 사용자” 라는 뜻이다.</p><p>서버 이름은 <span style="color:rgb(0,0,255);">FQDN(Fully Qualified Domain Name)</span>을 쓰는 것이 좋다.</p><p>참고로 라엘이의 이 블로그 서버의 hostname은 <span style="color:rgb(0,0,255);">blog.lael.be</span> 이다.</p><p> </p><pre>#vi /etc/hostname</pre><p>빈 파일일 건데(또는 기존 hostname이 쓰여있을것임.) 원하는 이름으로 바꾼다.</p><p><span style="color:rgb(128,0,128);">권장하는 단어</span>는 이 <span style="color:rgb(128,0,128);">서버에 연결될 대표 도메인</span>이다. 예를 들어 <span style="color:rgb(128,0,128);">blog.lael.be</span> 같은 것.</p><p> </p><p>적용한다.</p><pre>#hostname -F /etc/hostname</pre><p> </p><p>서버에 재 접속하면 적용된 것을 확인 할 수 있을 것이다.</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_3kxA6fZO_c876146b768a00567ab653636125d958271d5ae1.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_3kxA6fZO_c876146b768a00567ab653636125d958271d5ae1.png" alt="k11" class="img-tag aligncenter size-full wp-image-3740" style="width:160px;"/></a></p><p>hostname 값은 서버작업자에게 서버이름을 알려주는 역할을 하며, 아무 의미없는 글자를 적어도 된다.</p><p>일부 sendmail 같은 프로그램에서 다른 서버와 통신시 사용하기도 한다.</p><p> </p><p>- <span style="color:rgb(0,0,255);">hostname 을 FQDN 으로 설정하는 것을 권장</span>하지만, 외부와 연결이 없는 서버이거나 <span style="color:rgb(255,0,0);">자신이 쓰고 싶은 이름이 있다면</span> (팀명이나, 회사명, 서비스명 등) <span style="color:rgb(0,0,255);">그것으로 해도 된다</span>.</p><p>예를 들어 myserver1, new1111 같이 자신이 하고 싶은대로 정했다고 한다면, 서버의 <span style="color:rgb(255,0,0);"><strong>/etc/hosts</strong> 에 해당 이름을 등록해두도록 하자</span>.</p><pre>127.0.0.1    myserver1</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_U7Q8lHnL_012d2068eec340920af860d1c5ae1d0e76c8b995.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_U7Q8lHnL_012d2068eec340920af860d1c5ae1d0e76c8b995.png" alt="k12" class="img-tag aligncenter size-full wp-image-3741" style="width:460px;"/></a></p><p> </p><h3>추가) 메일 발송프로그램 설치하기</h3><p>많은 프로그램에서 mail() 함수를 사용한다. 이 함수는 서버에 sendmail 에게 메일발송을 요청한다.</p><p>메일문의, 가입시 환영메일, 비밀번호 찾기 메일, 이메일인증 등 널리 사용된다. 서버가 메일 발송을 할 수 있게 sendmail 을 설치하자.</p><pre># apt-get install sendmail</pre><p>이것은 오직 웹사이트에서 메일을 보내기 위한 것이다.</p><p><span style="color:rgb(128,0,128);">아이디@당신의도메인.com</span> 같은 것을 하고 싶다면 <span style="color:rgb(128,0,128);">절대로 직접 구축하려고 하지 말고</span> 구글앱스, 네이버웍스, 도메인 구입처, 클라우드 메일호스팅 을 사용하도록 하자.</p><p> </p><pre># vi /etc/mail/local-host-names</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_X0aqOcuD_9de8733c4fdd9238c2567927c2a492becfdc3f5d.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_X0aqOcuD_9de8733c4fdd9238c2567927c2a492becfdc3f5d.png" alt="qv3" class="img-tag aligncenter wp-image-4502" style="width:268px;"/></a></p><p>localhost 를 제외하고 나머지 항목은 지운다. 이곳에 쓰여진 도메인은 sendmail 발송시 목적 메일서버조회(mx record query)를 하지않고 로컬로 보낸다.</p><p> </p><p> </p><h3>10) APT 소스리스트 파일에 Nginx, PHP, MariaDB 저장소 추가</h3><p>이 글에서는 Nginx, PHP, MariaDB 를 모두 <span style="color:rgb(128,0,128);">최신버전으로 설치할 것</span>이다.</p><p>우분투 공식 저장소에는 stable 버전이 존재한다. stable 버전이란 “기능추가 없이 보안과 안정성 패치만 하는 버전” 을 뜻한다. Xenial 저장소의 경우 Nginx 는 1.10.0 이, PHP 는 7.0.8 가 담겨져 있다.</p><p>최신버전을 설치하기 위해서 <span style="color:rgb(128,0,128);">APT 소스리스트 파일에</span> 최신버전이 담겨있는 저장소를 추가해주어야 한다.</p><p> </p><pre># vi /etc/apt/sources.list</pre><p> </p><p>파일 <span style="color:rgb(0,0,255);">맨 끝에 다음의 줄 추가</span>. (더블클릭하면 전체 선택됨)</p><div><div class="syntaxhighlighter bash"><table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="bash comments"># Nginx</code></div><div class="line number2 index1 alt1"><code class="bash plain">deb http:</code><code class="bash plain">//nginx</code><code class="bash plain">.org</code><code class="bash plain">/packages/mainline/ubuntu/</code> <code class="bash plain">xenial nginx</code></div><div class="line number3 index2 alt2"><code class="bash plain">deb-src http:</code><code class="bash plain">//nginx</code><code class="bash plain">.org</code><code class="bash plain">/packages/mainline/ubuntu/</code> <code class="bash plain">xenial nginx</code></div><div class="line number4 index3 alt1"> </div><div class="line number5 index4 alt2"><code class="bash comments"># MariaDB</code></div><div class="line number6 index5 alt1"><code class="bash plain">deb http:</code><code class="bash plain">//ftp</code><code class="bash plain">.kaist.ac.kr</code><code class="bash plain">/mariadb/repo/10</code><code class="bash plain">.1</code><code class="bash plain">/ubuntu</code> <code class="bash plain">xenial main</code></div></div></td></tr></tbody></table></div></div><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_BSEoXitN_bf893d445729b8e9c0182c064a5ff014cf91aacf.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_BSEoXitN_bf893d445729b8e9c0182c064a5ff014cf91aacf.png" alt="sourcelist-161028" class="img-tag aligncenter size-full wp-image-5285" style="width:540px;"/></a></p><p> </p><h4>- 각 저장소 보안키 다운로드 후 시스템에 등록</h4><p>보안키 정보는 <span style="color:rgb(0,0,255);">/etc/apt/trusted.gpg</span> 에 저장된다.</p><p> </p><p><strong><span style="color:rgb(128,0,128);">nginx 보안키</span> 다운로드 후 적용.</strong></p><pre># cd /root</pre><pre># wget http://nginx.org/keys/nginx_signing.key</pre><pre># apt-key add nginx_signing.key</pre><pre># rm nginx_signing.key</pre><p> </p><p><strong><span style="color:rgb(128,0,128);">MariaDB 보안키</span> 다운로드 후 적용.</strong></p><pre># apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8</pre><p> </p><p><strong><span style="color:rgb(128,0,128);">PHP 저장소 추가 및 보안키</span> 등록</strong></p><p>여기서는 <span style="color:rgb(128,0,128);">ppa(Personal Package Archive)</span>라는 개인패키지 저장소를 이용할 것이다.</p><p><span style="color:rgb(0,0,255);">ondrej</span> 사용자의 <span style="color:rgb(0,0,255);">php-7.0</span> 저장소를 사용할 것이다.</p><p>ondrej 는 Debian 에서 일하고 있으며, Ubuntu 제작자 중 한명이다.</p><p> </p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_v8OGwrNx_092424e358d71fe28c31567a7a6a349cce1f3737.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_v8OGwrNx_092424e358d71fe28c31567a7a6a349cce1f3737.png" alt="k14" class="img-tag aligncenter size-full wp-image-3743" style="width:372px;"/></a></p><p style="text-align:center;">&lt; Debian이나 Ubuntu에서 가끔 이분의 이름을 볼 수 있을 것이다 &gt;</p><p> </p><p><span style="color:rgb(128,0,128);">보안키</span>는 <span style="color:rgb(0,0,255);">/etc/apt/trusted.gpg.d/ondrej_ubuntu_php.gpg</span> 에 저장되고</p><p><span style="color:rgb(128,0,128);">저장소 추가 구문</span>은 <span style="color:rgb(0,0,255);">/etc/apt/sources.list.d/ondrej-ubuntu-php-xenial.list</span> 에 저장된다.</p><pre># apt-get install software-properties-common</pre><pre># add-apt-repository ppa:ondrej/php</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_QdU12WjR_af0989047dade3bfb9cb95da8608f14da0459dcf.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_QdU12WjR_af0989047dade3bfb9cb95da8608f14da0459dcf.png" alt="k15" class="img-tag aligncenter size-full wp-image-3744" style="width:358px;"/></a></p><p>엔터키 한번 눌러주면 된다. (맥의 경우 return 키)</p><p> </p><p>추가된 보안키 목록 보기</p><pre># apt-key list</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_FX4vfIwU_c8050859005e297f0561244c153be0286e2cd84b.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_FX4vfIwU_c8050859005e297f0561244c153be0286e2cd84b.png" alt="k16" class="img-tag aligncenter size-full wp-image-3745" style="width:379px;"/></a></p><p>nginx 저장소키, mariadb 저장소키, Ondřej Surý 님의 개인저장소(Launchpad PPA)키가 등록되어 있는 것을 알 수 있다.</p><p> </p><h4>- APT 소스패키지 정보 업데이트</h4><p>신규 저장소를 추가하였고, 저장소키도 등록했으니, APT 패키지 정보를 갱신해보도록 하자.</p><pre># apt-get update</pre><p> </p><h3>10) Nginx 설치</h3><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_25IJXlgd_d32b010d861906a29bfdf9eea31a6cfe6e75c65f.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_25IJXlgd_d32b010d861906a29bfdf9eea31a6cfe6e75c65f.png" alt="k17" class="img-tag aligncenter size-full wp-image-3746" style="width:368px;"/></a></p><p style="text-align:center;">&lt;<a href="https://en.wikipedia.org/wiki/Nginx" target="_blank" rel="nofollow noreferrer noopener">https://en.wikipedia.org/wiki/Nginx</a>&gt;</p><p>글 작성일인 2016년 08월 08일 현재 <span style="color:rgb(128,0,128);">최신버전은 1.11.3 </span>이다.</p><p> </p><h4>- Nginx 설치</h4><p>Nginx 공식 저장소에서 배포하는 최신버전을 설치해 보도록 하자.</p><pre># apt-get install nginx</pre><p> </p><p>자동으로 설치되고, 실행되고, 재부팅시 자동실행 되게 설정된다.</p><p> </p><h4>- nginx 버전체크</h4><pre># nginx -v</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_mY9tqSuC_ec16840a6cca8ab1ff0fdee09d203a0e5b0d28ae.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_mY9tqSuC_ec16840a6cca8ab1ff0fdee09d203a0e5b0d28ae.png" alt="a5" class="img-tag aligncenter size-full wp-image-4915" style="width:216px;"/></a></p><p>당신이 설치한 버전은 이것보다 높을 것이다.</p><p> </p><h4>- 동작여부를 직접 확인해본다.</h4><p>웹브라우저를 켜고 <span style="color:rgb(128,0,128);">http://123.456.123.456</span> (서버의 아이피) 에 접속해보자.</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_WdLmKkc4_97b7618b7b136f27c77392dc679ad4c0496bb80c.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_WdLmKkc4_97b7618b7b136f27c77392dc679ad4c0496bb80c.png" alt="k12" class="img-tag aligncenter wp-image-4936" style="width:542px;"/></a></p><p> </p><p><span style="color:rgb(0,0,128);">Welcome to nginx!</span> 문구가 뜨면 정상이다. (이 파일의 위치는 <span style="color:rgb(0,0,128);">/usr/share/nginx/html/index.html</span> 이다.)</p><p> </p><h3>11) PHP-FPM 설치</h3><h4>- PHP7-FPM 최신버전 설치</h4><pre># apt-get install php7.0-fpm</pre><p> </p><h4>- 콘솔 PHP 버전확인</h4><pre># php -v</pre><p> </p><h4>- PHP-FPM 프로그램 버전확인</h4><p>ondrej 님이 왜 <span style="color:rgb(0,0,128);">패키지명</span>은 <span style="color:rgb(0,0,128);">php7.0-fpm</span> 이라고 해두고, <span style="color:rgb(0,0,128);">실행파일명</span>은 <span style="color:rgb(0,0,128);">php-fpm7.0</span> 으로 정했는지 이해가 가지 않지만, 아무쪼록 php-fpm7.0 파일을 실행해 보도록 하자.</p><pre># php-fpm7.0 -v</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_Wzb7h1i6_f4029a497c6cf1b38184c7de8b0aca6e09b942fa.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_Wzb7h1i6_f4029a497c6cf1b38184c7de8b0aca6e09b942fa.png" alt="a9" class="img-tag aligncenter wp-image-4918" style="width:700px;"/></a></p><h4>- 널리쓰이는 PHP 모듈 설치</h4><p>mcrypt 는 PHP-FPM 설치할 때 함께 설치되니 따로 설치하지 않는다. 중복설치가 가능한데 중복설치할 경우 PHP 콘솔명령 실행시 warning 메시지가 나타나게 된다.</p><pre># apt-get install php7.0-gd php7.0-curl php7.0-mbstring php7.0-xml</pre><p>설치가 완료되면 자동으로 PHP-FPM 프로그램이 재시작되며 모듈이 로드된다.</p><p> </p><h3>11-2) PHP Default timezone 설정하기.</h3><p>이 값을 설정하지 않으면 시스템 timezone 을 사용합니다.</p><p>PHP Default timezone 을 설정하는 것은 필수는 아니지만 매우 권장하는 작업입니다. 설정해주세요.</p><p><span style="color:rgb(128,0,128);">동일한 작업</span>을 <span style="color:rgb(128,0,128);">2개의 파일에 적용</span>해 주어야 합니다.</p><pre><span style="line-height:1.5;"># vi /etc/php/7.0/fpm/php.ini</span></pre><pre># vi /etc/php/7.0/cli/php.ini</pre><p> </p><p>date.timezone 값을 찾아서 주석을 제거하고 시간을 설정해주세요.</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_v0C1sUfq_77aeca763a8c74a844c9c772c0750ddbf8ad30b6.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_v0C1sUfq_77aeca763a8c74a844c9c772c0750ddbf8ad30b6.png" alt="k21" class="img-tag aligncenter wp-image-3750" style="width:323px;"/></a></p><p>이 값을 찾아서</p><p> </p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_xb0Zfs39_b3133ba8f94d579335f4f1fb9515a3add876aea1.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_xb0Zfs39_b3133ba8f94d579335f4f1fb9515a3add876aea1.png" alt="k22" class="img-tag aligncenter wp-image-3751" style="width:312px;"/></a></p><p>이렇게 변경.</p><p>설정 적용을 위하여 php-fpm 재시작.</p><pre># service php7.0-fpm restart</pre><p> </p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_gD6p5JP8_9e5330e9a1c4fdf001a39bf7653615c6288b2008.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_gD6p5JP8_9e5330e9a1c4fdf001a39bf7653615c6288b2008.png" alt="스크린샷 2015-07-30 오전 11.01.06" class="img-tag aligncenter wp-image-1687" style="width:617px;"/></a></p><p>phpinfo 페이지에서 Default timezone 이 위 화면과 같이 설정되어 있으면 정상이다.</p><p> </p><p> </p><h3>12) MariaDB 설치</h3><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_GPy9Igm8_1dfe733ddba2a0cbf7409067d8eceb8e91487b0a.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_GPy9Igm8_1dfe733ddba2a0cbf7409067d8eceb8e91487b0a.png" alt="스크린샷 2015-11-29 오후 11.39.02" class="img-tag aligncenter size-full wp-image-2666" style="width:365px;"/></a></p><p style="text-align:center;">&lt;<a href="https://en.wikipedia.org/wiki/MariaDB" target="_blank" rel="nofollow noreferrer noopener">https://en.wikipedia.org/wiki/MariaDB</a>&gt;</p><p> </p><p>당연히 MariaDB 10.1 을 설치할 것이다.</p><pre># apt-get install mariadb-server-10.1 mariadb-client-10.1</pre><p>설치시에 데이터베이스 root 사용자의 비밀번호를 설정할 수 있다.</p><p>설치와 동시에 MariaDB 가 실행되며, 재부팅시에도 자동 시작되도록 설정된다.</p><p> </p><p>서비스 상태확인</p><pre># service mysql status</pre><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_28kYpNKt_2061ad0f1daa9a3d6107f71970554a0d959a5121.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_28kYpNKt_2061ad0f1daa9a3d6107f71970554a0d959a5121.png" alt="a10" class="img-tag aligncenter wp-image-4920 size-full" style="width:490px;"/></a></p><p>표시할 정보가 많으면 more 가 나올 수도 있는데, Q 나 Control+C 를 입력하여 more를 종료한다.</p><p> </p><p>PHP-FPM 에 DB 연동관련 모듈설치</p><pre># apt-get install php7.0-mysql</pre><p> </p><h3>13-1) 기본 언어셋 설정(중요)</h3><p>이 단계를 건너뛰면 DB가 latin1 으로 생성되며 추후 DB작업에 문제가 생길 수 있다.</p><pre># vi /etc/mysql/conf.d/mariadb.cnf</pre><p> </p><p>(vi 에디터 사용방법을 모른다면 ftp 클라이언트를 사용하여 서버에 로그인 후 해당파일을 수정하고 덮어쓰기하여라.)</p><p>다음의 파일을</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_rBuZeisL_d3db0ba090ab0286195b4651429f28fabe8cb27f.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_rBuZeisL_d3db0ba090ab0286195b4651429f28fabe8cb27f.png" alt="a11" class="img-tag aligncenter wp-image-4923" style="width:542px;"/></a></p><p>아래와 같이 변경한다.</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_Dlx6IumQ_030fa0bd8c1e0caca0400157e57fe3f62cb43712.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_Dlx6IumQ_030fa0bd8c1e0caca0400157e57fe3f62cb43712.png" alt="a12" class="img-tag aligncenter wp-image-4924" style="width:544px;"/></a></p><p> </p><div><div class="syntaxhighlighter bash"><table border="0" cellspacing="0" cellpadding="0"><caption>/etc/mysql/conf.d/mariadb.cnf</caption><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="bash comments"># MariaDB-specific config file.</code></div><div class="line number2 index1 alt1"><code class="bash comments"># Read by /etc/mysql/my.cnf</code></div><div class="line number3 index2 alt2"> </div><div class="line number4 index3 alt1"><code class="bash plain">[client]</code></div><div class="line number5 index4 alt2"><code class="bash comments"># Default is Latin1, if you need UTF-8 set this (also in server section)</code></div><div class="line number6 index5 alt1"><code class="bash plain">default-character-</code><code class="bash functions">set</code> <code class="bash plain">= utf8mb4</code></div><div class="line number7 index6 alt2"> </div><div class="line number8 index7 alt1"><code class="bash plain">[mysqld]</code></div><div class="line number9 index8 alt2"><code class="bash comments">#</code></div><div class="line number10 index9 alt1"><code class="bash comments"># * Character sets</code></div><div class="line number11 index10 alt2"><code class="bash comments">#</code></div><div class="line number12 index11 alt1"><code class="bash comments"># Default is Latin1, if you need UTF-8 set all this (also in client section)</code></div><div class="line number13 index12 alt2"><code class="bash comments">#</code></div><div class="line number14 index13 alt1"><code class="bash plain">character-</code><code class="bash functions">set</code><code class="bash plain">-server = utf8mb4</code></div><div class="line number15 index14 alt2"><code class="bash plain">collation-server = utf8mb4_unicode_ci</code></div><div class="line number16 index15 alt1"><code class="bash plain">character_set_server = utf8mb4</code></div><div class="line number17 index16 alt2"><code class="bash plain">collation_server = utf8mb4_unicode_ci</code></div></div></td></tr></tbody></table></div></div><p> </p><p>변경사항 적용</p><pre>#service mysql restart</pre><p> </p><p> </p><h3>14) Nginx 와 PHP-FPM 연결</h3><p>현재 상태에서 <span style="color:rgb(0,0,128);">Nginx 프로그램</span>은 기본적으로 <span style="color:rgb(0,0,128);">nginx 사용자 권한</span>으로 실행되고,</p><p><span style="color:rgb(0,0,128);">PHP-FPM 프로그램</span>은 기본적으로 <span style="color:rgb(0,0,128);">www-data 사용자 권한</span>으로 실행된다.</p><p>둘의 사용자 권한을 <span style="color:rgb(0,0,128);">www-data 로 일치시키자</span>. 이 사용자는 운영체제 설치시 자동으로 생성되는 특수목적 사용자이다.</p><p>nginx 의 설정값만 바꾸면 된다.</p><p> </p><h4>- Nginx 사용자 권한 변경</h4><pre># vi /etc/nginx/nginx.conf</pre><p>첫줄의 user  nginx; 를 <span style="color:rgb(128,0,128);">user  www-data;</span> 로 바꿉니다.</p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_TUjvODGi_a3c51e47be516d40799d292f5dfbff778fd676e3.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_TUjvODGi_a3c51e47be516d40799d292f5dfbff778fd676e3.png" alt="k23" class="img-tag aligncenter size-full wp-image-3752" style="width:164px;"/></a></p><pre># service nginx restart</pre><p> </p><h4>- Nginx 에서 PHP 확장자에 대해서 PHP-FPM 프로그램으로 요청을 전달하게 설정하기</h4><pre># vi /etc/nginx/conf.d/default.conf</pre><p> </p><p>과정 설명</p><p>#1. 기본 값에서 주석 제거<br />#2. 커스텀 에러페이지 구문 제거<br />#3. Nginx - PHP-FPM 구문 추가 (<a href="https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/" target="_blank" rel="nofollow noreferrer noopener">https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/</a>) 참조</p><p> </p><p><span style="color:rgb(128,0,128);">결과적으로 /etc/nginx/conf.d/default.conf 를 아래의 구문</span>으로 수정 저장하면 됩니다.</p><p> </p><p>다음의 구문은 (2016년 1월 10일 현재까지) 알려진 <span style="color:rgb(128,0,128);">모든 취약점을 테스트</span> 한 후 <span style="color:rgb(128,0,128);">안전하게 작성된 구문</span>이며 <span style="color:rgb(0,0,255);">NGINX 공식 WIKI 가이드(<a href="https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/" target="_blank" rel="nofollow noreferrer noopener">https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/</a>)에 따라</span> 작성되었습니다.</p><p>또한 <span style="color:rgb(0,0,255);">PHP-FPM 5.3.9</span> 부터 <span style="color:rgb(0,0,255);">limit_extensions</span> 이라는 속성이 추가되었으며 기본적으로 <span style="color:rgb(0,0,255);">.php 파일만</span> 실행되도록 설정되어 있습니다.</p><div class="bs-callout bs-callout-info" style="border-color:rgb(188,232,241) rgb(188,232,241) rgb(188,232,241) rgb(238,238,238);margin:20px 0px;padding:4px 20px;border-left-width:3px;border-left-style:solid;background-color:rgb(244,248,250);"><h4 style="color:rgb(58,135,173);">#16.10.10 설정 가이드가 추가됨</h4><p>환경설정을 쉽게할 수 환경설정 생성기가 추가되었습니다.</p><p><a href="https://blog.lael.be/demo-generator/nginx/default.conf.php" target="_blank" rel="nofollow noreferrer noopener">https://blog.lael.be/demo-generator/nginx/default.conf.php</a></p></div><p># /etc/nginx/conf.d/default.conf</p><div><div class="syntaxhighlighter bash"><table border="0" cellspacing="0" cellpadding="0"><caption>/etc/nginx/conf.d/default.conf</caption><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="bash plain">server {</code></div><div class="line number2 index1 alt1"><code class="bash spaces">    </code><code class="bash plain">listen       80 default_server;</code></div><div class="line number3 index2 alt2"><code class="bash spaces">    </code><code class="bash plain">server_name  localhost;</code></div><div class="line number4 index3 alt1"><code class="bash spaces">    </code><code class="bash plain">root   </code><code class="bash plain">/usr/share/nginx/html</code><code class="bash plain">;</code></div><div class="line number5 index4 alt2"> </div><div class="line number6 index5 alt1"><code class="bash spaces">    </code><code class="bash plain">location / {</code></div><div class="line number7 index6 alt2"><code class="bash spaces">        </code><code class="bash plain">index  index.php index.html;</code></div><div class="line number8 index7 alt1"><code class="bash spaces">    </code><code class="bash plain">}</code></div><div class="line number9 index8 alt2"> </div><div class="line number10 index9 alt1"><code class="bash spaces">    </code><code class="bash plain">location ~ [^/]\.php(/|$) {</code></div><div class="line number11 index10 alt2"><code class="bash spaces">        </code><code class="bash plain">fastcgi_split_path_info ^(.+?\.php)(/.*)$;</code></div><div class="line number12 index11 alt1"><code class="bash spaces">        </code><code class="bash keyword">if</code> <code class="bash plain">(!-f $document_root$fastcgi_script_name) {</code></div><div class="line number13 index12 alt2"><code class="bash spaces">            </code><code class="bash keyword">return</code> <code class="bash plain">404;</code></div><div class="line number14 index13 alt1"><code class="bash spaces">        </code><code class="bash plain">}</code></div><div class="line number15 index14 alt2"> </div><div class="line number16 index15 alt1"><code class="bash spaces">        </code><code class="bash plain">fastcgi_pass unix:</code><code class="bash plain">/run/php/php7</code><code class="bash plain">.0-fpm.sock;</code></div><div class="line number17 index16 alt2"><code class="bash spaces">        </code><code class="bash plain">fastcgi_index index.php;</code></div><div class="line number18 index17 alt1"><code class="bash spaces">        </code><code class="bash plain">include fastcgi_params;</code></div><div class="line number19 index18 alt2"><code class="bash spaces">    </code><code class="bash plain">}</code></div><div class="line number20 index19 alt1"><code class="bash plain">}</code></div></div></td></tr></tbody></table></div></div><p> </p><p># fastcgi_params  도 가이드대로 변경 (<a href="https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/" target="_blank" rel="nofollow noreferrer noopener">https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/</a>)</p><pre># vi /etc/nginx/fastcgi_params</pre><p>아래와 같이 변경</p><div><div class="syntaxhighlighter bash"><table border="0" cellspacing="0" cellpadding="0"><caption>fastcgi_params</caption><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div><div class="line number21 index20 alt2">21</div><div class="line number22 index21 alt1">22</div><div class="line number23 index22 alt2">23</div><div class="line number24 index23 alt1">24</div><div class="line number25 index24 alt2">25</div><div class="line number26 index25 alt1">26</div><div class="line number27 index26 alt2">27</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="bash plain">fastcgi_param   QUERY_STRING            $query_string;</code></div><div class="line number2 index1 alt1"><code class="bash plain">fastcgi_param   REQUEST_METHOD          $request_method;</code></div><div class="line number3 index2 alt2"><code class="bash plain">fastcgi_param   CONTENT_TYPE            $content_type;</code></div><div class="line number4 index3 alt1"><code class="bash plain">fastcgi_param   CONTENT_LENGTH          $content_length;</code></div><div class="line number5 index4 alt2"> </div><div class="line number6 index5 alt1"><code class="bash plain">fastcgi_param   SCRIPT_FILENAME         $document_root$fastcgi_script_name;</code></div><div class="line number7 index6 alt2"><code class="bash plain">fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;</code></div><div class="line number8 index7 alt1"><code class="bash plain">fastcgi_param   PATH_INFO               $fastcgi_path_info;</code></div><div class="line number9 index8 alt2"><code class="bash plain">fastcgi_param   PATH_TRANSLATED         $document_root$fastcgi_path_info;</code></div><div class="line number10 index9 alt1"><code class="bash plain">fastcgi_param   REQUEST_URI             $request_uri;</code></div><div class="line number11 index10 alt2"><code class="bash plain">fastcgi_param   DOCUMENT_URI            $document_uri;</code></div><div class="line number12 index11 alt1"><code class="bash plain">fastcgi_param   DOCUMENT_ROOT           $document_root;</code></div><div class="line number13 index12 alt2"><code class="bash plain">fastcgi_param   SERVER_PROTOCOL         $server_protocol;</code></div><div class="line number14 index13 alt1"> </div><div class="line number15 index14 alt2"><code class="bash plain">fastcgi_param   GATEWAY_INTERFACE       CGI</code><code class="bash plain">/1</code><code class="bash plain">.1;</code></div><div class="line number16 index15 alt1"><code class="bash plain">fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;</code></div><div class="line number17 index16 alt2"> </div><div class="line number18 index17 alt1"><code class="bash plain">fastcgi_param   REMOTE_ADDR             $remote_addr;</code></div><div class="line number19 index18 alt2"><code class="bash plain">fastcgi_param   REMOTE_PORT             $remote_port;</code></div><div class="line number20 index19 alt1"><code class="bash plain">fastcgi_param   SERVER_ADDR             $server_addr;</code></div><div class="line number21 index20 alt2"><code class="bash plain">fastcgi_param   SERVER_PORT             $server_port;</code></div><div class="line number22 index21 alt1"><code class="bash plain">fastcgi_param   SERVER_NAME             $server_name;</code></div><div class="line number23 index22 alt2"> </div><div class="line number24 index23 alt1"><code class="bash plain">fastcgi_param   HTTPS                   $https;</code></div><div class="line number25 index24 alt2"> </div><div class="line number26 index25 alt1"><code class="bash comments"># PHP only, required if PHP was built with --enable-force-cgi-redirect</code></div><div class="line number27 index26 alt2"><code class="bash plain">fastcgi_param   REDIRECT_STATUS         200;</code></div></div></td></tr></tbody></table></div></div><p> </p><h4>- Nginx 재시작</h4><pre># service nginx restart</pre><p> </p><h3>15-1) 연동테스트1</h3><pre># vi /usr/share/nginx/html/phpinfo.php</pre><p> </p><div><div class="syntaxhighlighter php"><table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain">&lt;?php</code></div><div class="line number2 index1 alt1"><code class="php plain">phpinfo();</code></div></div></td></tr></tbody></table></div></div><p> </p><p>웹브라우저에서 다음을 입력해서 phpinfo 페이지를 보도록 하자.</p><p>http://<span style="color:rgb(0,0,128);">111.222.333.444</span>/phpinfo.php</p><p> </p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_IgYd8cF5_bc8af91eeef7dd592cacd31d9cba25488879c671.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_IgYd8cF5_bc8af91eeef7dd592cacd31d9cba25488879c671.png" alt="a13" class="img-tag aligncenter wp-image-4926" style="width:510px;"/></a></p><p style="text-align:center;">&lt;이 페이지에서 <span style="color:rgb(128,0,128);">컨트롤+F</span> 누르고 “<span style="color:rgb(0,0,255);">nginx</span>” 와 “<span style="color:rgb(0,0,255);">php-fpm</span>” 단어로 검색해본다&gt;</p><p> </p><hr /><p> </p><h3>15-2) 연동테스트2</h3><p>nginx 와 php-fpm , 그리고 mariadb 를 모두 사용하는 프로그램을 실행시켜보자.</p><p>phpmyadmin 공식사이트 : <a href="https://www.phpmyadmin.net/" target="_blank" rel="nofollow noreferrer noopener">https://www.phpmyadmin.net/</a></p><p> </p><p>설치 못하시는 분이 꽤 있으셔서 따로 설치법을 적습니다.</p><p>여러 설치방법이 있겠지만 저는 다음과 같이 설치합니다.</p><p> </p><h4>압축해제 프로그램 설치</h4><pre># apt-get install unzip</pre><p> </p><h4>압축파일 다운로드</h4><pre># cd /usr/share/nginx/html</pre><p> </p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_na2v0Joe_159bf56baf324431a5fc08bfb58eddf5f525c07b.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_na2v0Joe_159bf56baf324431a5fc08bfb58eddf5f525c07b.png" alt="k25" class="img-tag aligncenter size-full wp-image-3754" style="width:337px;"/></a></p><p><a href="https://www.phpmyadmin.net/" target="_blank" rel="nofollow noreferrer noopener">https://www.phpmyadmin.net/</a> 사이트로 이동 후 위의 그림과 같이 입력하여 최신버전을 설치할 수 있도록 하자.</p><p>이 글에서는 <span style="color:rgb(128,0,128);">글 작성 시각 현재 최신버전인 4.5.2</span> 를 설치할 것이다. phpmyadmin 은 매우 견고하게 만들어진 프로그램으로써 4.5.2를 설치해도 보안취약점이 있지는 않겠지만 <span style="color:rgb(128,0,128);">최신버전을 설치하는 습관</span>을 기르도록 하자. (혹시나 말하지만, Alpha나 Beta 같은 개발자-최신버전을 설치하라는 뜻이 아니라 널리 사용되어 검증된 Release Channel 최신버전 를 사용하라는 것이다.)</p><pre># wget https://files.phpmyadmin.net/phpMyAdmin/4.5.2/phpMyAdmin-4.5.2-all-languages.zip</pre><p> </p><p>압축해제</p><pre># unzip phpMyAdmin-4.5.2-all-languages.zip</pre><p> </p><p>폴더 이름변경</p><pre># mv phpMyAdmin-4.5.2-all-languages dbmyadmin</pre><p> </p><p>다운받은파일 삭제</p><pre># rm phpMyAdmin-4.5.2-all-languages.zip</pre><p> </p><p>http://<span style="color:rgb(0,0,128);">111.222.333.444</span>/dbmyadmin/</p><p> </p><p><a href="https://www.worksdesign.co.kr/bbs/view_img.php?img=http%3A%2F%2Fuidc.kr.ms%2Fdata%2Feditor%2F1612%2F3530309802_U7JDbeZ9_0215917e400708f54a985ec91ff59045393113e0.png" target="_blank" class="view_image"><img src="http://uidc.kr.ms/data/editor/1612/3530309802_U7JDbeZ9_0215917e400708f54a985ec91ff59045393113e0.png" alt="k26" class="img-tag aligncenter size-full wp-image-3755" style="width:496px;"/></a></p><p> </p><div class="alert alert-warning" style="border-color:transparent;line-height:1.5;"><strong>[TIP]</strong> 간혹 방금 설치한 디비의 root 비밀번호가 기억이 안나는 분들도 있을 것이다. 이 경우에는 다음의 명령어를 사용하여 mariadb 를 재설치 하도록 하자.<br />- 제거<br /># apt-get purge mariadb-server-10.1<br />- 설치<br /># apt-get install mariadb-server-10.1</div><p> </p><p> </p><h4>- 재부팅</h4><p>복잡한 세팅이 끝났으니 한번 숨을 고르고 가자.</p><pre># reboot</pre><p>재부팅 후에 phpinfo 페이지와 phpmyadmin 가 잘 실행된다면 “<span style="color:rgb(128,0,128);">재부팅이 가능한 서버</span>” 라고 볼 수 있다.</p><p> </p><hr /><h3>16) 웹 사이트 구동예제</h3><p>원래 표준명령어는 useradd 이지만, ubuntu는 사용하기 좋게 adduser 를 지원한다.<br />리눅스 관련 서적을 보면 <strong>둘다</strong> 계정생성용 명령어라고 되어있다.<br />쉬운 설정을 위해 adduser를 사용</p><p>다음의 예제에서는 myuser1 이라는 사용자(user) 와 웹주소(ServerName) 사용예제를 설명합니다.</p><p>각자 본인의 도메인으로 변경해서 실행하세요.</p><pre>#adduser myuser1</pre><p> </p><p>(<span style="color:rgb(0,0,255);">참고로</span> <span style="color:rgb(128,0,128);">위와 반대동작</span>을 하는 계정삭제 명령어는 다음과 같다. (계정을 삭제하고 홈디렉토리도 삭제함)</p><pre>#userdel -r myuser1</pre><div></div><p>보통 웹루트는 홈디렉토리에 하지 않습니다.<br />저는 주로 www 디렉토리를 사용합니다.사용자변경 후 www 디렉토리를 생성하고 빠져나오기</p><pre>#su -l myuser1</pre><pre>#mkdir www</pre><pre>#exit</pre><p> </p><h4>- php pool 파일 만들기 및 nginx server 구문을 추가하기</h4><h5>PHP-FPM Pool 파일 작성</h5><pre># vi /etc/php/7.0/fpm/pool.d/myuser1.conf</pre><p>PHP Pool 파일은 사용자당 하나 만들어두고, nginx Conf 파일은 사이트당 하나 만들어서 운영하도록 하자.</p><p>자주 쓰이는 PHP 설정 값들도 적어두었으니 변경을 원한다면 주석(;)을 제거후 바꾸도록 하자.</p><p>첫번째 줄의 대괄호[] 는 주석이 아니라 PHP Pool의 이름이니 사이트마다 중복되지 않게 적도록 하자.<br />만약 PHP실행프로세스 이름(php pool name)이 중복된다면, 중복된 이름의 어느하나만 실행되고 나머지는 무시된다.</p><p>php.ini 파일은 default timezone 이외에 값을 수정하지 않으며, 필요한 값은 이 프로세스 설정파일에 수동으로 지정한다.</p><div><div class="syntaxhighlighter bash"><table border="0" cellspacing="0" cellpadding="0"><caption>/etc/php/7.0/fpm/pool.d/myuser1.conf</caption><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div><div class="line number21 index20 alt2">21</div><div class="line number22 index21 alt1">22</div><div class="line number23 index22 alt2">23</div><div class="line number24 index23 alt1">24</div><div class="line number25 index24 alt2">25</div><div class="line number26 index25 alt1">26</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="bash plain">[myuser1]</code></div><div class="line number2 index1 alt1"> </div><div class="line number3 index2 alt2"><code class="bash plain">user = myuser1</code></div><div class="line number4 index3 alt1"><code class="bash plain">group = myuser1</code></div><div class="line number5 index4 alt2"> </div><div class="line number6 index5 alt1"><code class="bash plain">listen = </code><code class="bash plain">/run/php/myuser1</code><code class="bash plain">.sock</code></div><div class="line number7 index6 alt2"> </div><div class="line number8 index7 alt1"><code class="bash plain">listen.owner = myuser1</code></div><div class="line number9 index8 alt2"><code class="bash plain">listen.group = www-data</code></div><div class="line number10 index9 alt1"> </div><div class="line number11 index10 alt2"><code class="bash plain">pm = dynamic</code></div><div class="line number12 index11 alt1"><code class="bash plain">pm.max_children = 9</code></div><div class="line number13 index12 alt2"><code class="bash plain">pm.start_servers = 3</code></div><div class="line number14 index13 alt1"><code class="bash plain">pm.min_spare_servers = 2</code></div><div class="line number15 index14 alt2"><code class="bash plain">pm.max_spare_servers = 4</code></div><div class="line number16 index15 alt1"> </div><div class="line number17 index16 alt2"><code class="bash plain">;php_flag[display_errors] = off</code></div><div class="line number18 index17 alt1"><code class="bash plain">;php_admin_value[error_log] = </code><code class="bash plain">/var/log/fpm-php</code><code class="bash plain">.www.log</code></div><div class="line number19 index18 alt2"><code class="bash plain">;php_admin_flag[log_errors] = on</code></div><div class="line number20 index19 alt1"> </div><div class="line number21 index20 alt2"><code class="bash plain">;php_admin_value[memory_limit] = 128M</code></div><div class="line number22 index21 alt1"><code class="bash plain">;php_admin_value[max_execution_time] = 120</code></div><div class="line number23 index22 alt2"><code class="bash plain">;php_admin_value[max_input_time] = 300</code></div><div class="line number24 index23 alt1"> </div><div class="line number25 index24 alt2"><code class="bash plain">;php_admin_value[post_max_size] = 25M</code></div><div class="line number26 index25 alt1"><code class="bash plain">;php_admin_value[upload_max_filesize] = 25M</code></div></div></td></tr></tbody></table></div></div><p> </p><h5>Nginx server 구문 작성</h5><pre># vi /etc/nginx/conf.d/my-example-site.com.conf</pre><p>워드프레스 Nginx 설정예제 <a href="https://codex.wordpress.org/Nginx" target="_blank" rel="nofollow noreferrer noopener">https://codex.wordpress.org/Nginx</a> 페이지를 많이 참조했습니다.<br /><a></a><br />- 일반적인 PHP 사이트 일때 (그누보드 등)</p><div><div class="syntaxhighlighter bash"><table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div><div class="line number21 index20 alt2">21</div><div class="line number22 index21 alt1">22</div><div class="line number23 index22 alt2">23</div><div class="line number24 index23 alt1">24</div><div class="line number25 index24 alt2">25</div><div class="line number26 index25 alt1">26</div><div class="line number27 index26 alt2">27</div><div class="line number28 index27 alt1">28</div><div class="line number29 index28 alt2">29</div><div class="line number30 index29 alt1">30</div><div class="line number31 index30 alt2">31</div><div class="line number32 index31 alt1">32</div><div class="line number33 index32 alt2">33</div><div class="line number34 index33 alt1">34</div><div class="line number35 index34 alt2">35</div><div class="line number36 index35 alt1">36</div><div class="line number37 index36 alt2">37</div><div class="line number38 index37 alt1">38</div><div class="line number39 index38 alt2">39</div><div class="line number40 index39 alt1">40</div><div class="line number41 index40 alt2">41</div><div class="line number42 index41 alt1">42</div><div class="line number43 index42 alt2">43</div><div class="line number44 index43 alt1">44</div><div class="line number45 index44 alt2">45</div><div class="line number46 index45 alt1">46</div><div class="line number47 index46 alt2">47</div><div class="line number48 index47 alt1">48</div><div class="line number49 index48 alt2">49</div><div class="line number50 index49 alt1">50</div><div class="line number51 index50 alt2">51</div><div class="line number52 index51 alt1">52</div><div class="line number53 index52 alt2">53</div><div class="line number54 index53 alt1">54</div><div class="line number55 index54 alt2">55</div><div class="line number56 index55 alt1">56</div><div class="line number57 index56 alt2">57</div><div class="line number58 index57 alt1">58</div><div class="line number59 index58 alt2">59</div><div class="line number60 index59 alt1">60</div><div class="line number61 index60 alt2">61</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="bash comments"># Template 1. Normal PHP Site.</code></div><div class="line number2 index1 alt1"> </div><div class="line number3 index2 alt2"><code class="bash plain">server {</code></div><div class="line number4 index3 alt1"><code class="bash spaces">    </code><code class="bash plain">listen       80;</code></div><div class="line number5 index4 alt2"><code class="bash spaces">    </code><code class="bash plain">server_name  my-example-site.com www.my-example-site.com my-second-domain.net;</code></div><div class="line number6 index5 alt1"><code class="bash spaces">    </code><code class="bash plain">root   </code><code class="bash plain">/home/myuser1/www</code><code class="bash plain">;</code></div><div class="line number7 index6 alt2"> </div><div class="line number8 index7 alt1"><code class="bash spaces">    </code><code></code></div></div></td></tr></tbody></table></div></div>]]></description>
	<dc:creator>최고관리자</dc:creator>
		<dc:date>2016-12-19T10:09:28+09:00</dc:date>
	</item>
	<item>
	<title>How to Install PHP 7 on Ubuntu 15.10, 15.04 &amp; 14.04 using PPA</title>
	<link>https://www.worksdesign.co.kr/bbs/board.php?bo_table=skill&amp;wr_id=3</link>
	<description><![CDATA[<h2 class="heading1">Install PHP 7 </h2><p>Use the following set of commands to add PPA for PHP 7 in your Ubuntu system and install it.</p><pre>$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get install -y php7.0
</pre><h2 class="heading1">Check PHP Version </h2><p>Now use the following command to check installed php version on your system.</p><pre>$ 

PHP 7.0.1-4+deb.sury.org~trusty+1 (cli) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
</pre><h2 class="heading1"> Install PHP 7 Modules </h2><p>You may also need to install modules based on your application requirements. Use the following command to find our available php 7 modules.</p><pre>$ 


<strong>php7.0-common</strong> - Common files for packages built from the PHP source
<strong>libapache2-mod-php7.0</strong> - server-side, HTML-embedded scripting language (Apache 2 module)
<strong>php7.0-cgi</strong> - server-side, HTML-embedded scripting language (CGI binary)
<strong>php7.0-cli</strong> - command-line interpreter for the PHP scripting language
<strong>php7.0-phpdbg</strong> - server-side, HTML-embedded scripting language (PHPDBG binary)
<strong>php7.0-fpm</strong> - server-side, HTML-embedded scripting language (FPM-CGI binary)
<strong>libphp7.0-embed</strong> - HTML-embedded scripting language (Embedded SAPI library)
<strong>php7.0-dev</strong> - Files for PHP7.0 module development
<strong>php7.0-dbg</strong> - Debug symbols for PHP7.0
<strong>php7.0-curl</strong> - CURL module for PHP
<strong>php7.0-gd</strong> - GD module for PHP
<strong>php7.0-imap</strong> - IMAP module for PHP
<strong>php7.0-intl</strong> - Internationalisation module for PHP
<strong>php7.0-ldap</strong> - LDAP module for PHP
<strong>php7.0-pgsql</strong> - PostgreSQL module for PHP
<strong>php7.0-pspell</strong> - pspell module for PHP
<strong>php7.0-recode</strong> - recode module for PHP
<strong>php7.0-snmp</strong> - SNMP module for PHP
<strong>php7.0-tidy</strong> - tidy module for PHP
<strong>php7.0-json</strong> - JSON module for PHP
<strong>php-all-dev</strong> - package depending on all supported PHP development packages
<strong>php7.0-sybase</strong> - Sybase module for PHP
<strong>php7.0-modules-source</strong> - PHP 7.0 modules source package
<strong>php7.0-sqlite3</strong> - SQLite3 module for PHP
<strong>php7.0-mysql</strong> - MySQL module for PHP
<strong>php7.0-opcache</strong> - Zend OpCache module for PHP
</pre><p>Now install modules which is required for you.</p><pre>$ sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi</pre>]]></description>
	<dc:creator>최고관리자</dc:creator>
		<dc:date>2016-12-16T21:12:19+09:00</dc:date>
	</item>
	<item>
	<title>How to Install PHP 5.4 or PHP 5.5 or PHP 5.6 on Ubuntu 16.04, 14.04 or 12.04 using PPA</title>
	<link>https://www.worksdesign.co.kr/bbs/board.php?bo_table=skill&amp;wr_id=2</link>
	<description><![CDATA[<p> </p><h4 class="heading1">Install PHP 5.4 </h4><p>Use the following set of command to add PPA for PHP 5.4 in your Ubuntu system and install PHP 5.4.</p><pre>$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:ondrej/php5-oldstable
$ sudo apt-get update
$ sudo apt-get install -y php5
</pre><p><strong>Check Installed PHP Version:</strong></p><pre># php -v

PHP 5.4.35-1+deb.sury.org~precise+1 (cli) (built: Nov 19 2014 19:34:07)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
</pre><h4 class="heading1">Install PHP 5.5 </h4><p>Use the following set of command to add PPA for PHP 5.5 in your Ubuntu system and install PHP 5.5.</p><pre>$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get install -y php5.5
</pre><p><strong>Check Installed PHP Version:</strong></p><pre># php -v

PHP 5.5.19-1+deb.sury.org~precise+1 (cli) (built: Nov 19 2014 19:32:57)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
</pre><h4 class="heading1">Install PHP 5.6 </h4><p>Use the following set of command to add PPA for PHP 5.6 in your Ubuntu system and install PHP 5.6.</p><pre>$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get install -y php5.6
</pre><p><strong>Check Installed PHP Version:</strong></p><pre># php -v

PHP 5.6.3-1+deb.sury.org~precise+1 (cli) (built: Nov 19 2014 19:34:53)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies</pre>]]></description>
	<dc:creator>최고관리자</dc:creator>
		<dc:date>2016-12-16T21:11:09+09:00</dc:date>
	</item>
	<item>
	<title>Ubuntu 16.04 : Nginx, PHP 7, MySQL 5.7 설치</title>
	<link>https://www.worksdesign.co.kr/bbs/board.php?bo_table=skill&amp;wr_id=1</link>
	<description><![CDATA[<p> </p><h4>Installing Nginx with PHP 7 and MySQL 5.7 (LEMP) on Ubuntu 16.04 LTS</h4><p>Nginx(발음 “engine x”)는 무료이며 오픈소스이고 높은 성능의 HTTP 서버이다. Nginx는 매우 적은 자원을 사용하면서 안정적이고 풍부한 기능들을 가지고 있다. 또한 설정도 매우 간단하다. 본 지침서는 우분투 16.04 서버에서 PHP 7(PHP-FPM), MySQL 5.7을 지원하는 Nginx 설치를 설명하고 있다. <strong>LEMP</strong> = <strong>L</strong>inux + nginx(<strong>e</strong>ngine x) + <strong>M</strong>ySQL + <strong>L</strong>inux</p><h4>1. 준비 단계</h4><p>이 지침서에 호스트 이름은 server1.example.com, 아이피 주소는 192.168.1.100을 사용한다. 이 설정은 사용자마다 다르므로 적절하게 수정 후 사용해야 한다. 이 지침서의 모든 단계는 루트 권한으로 진행하였다. 다음과 같이 루트(root)로 :</p><pre><code class="nohighlight">sudo -s
</code></pre><h4>2. MySQL 5.7 설치</h4><p>MySQL을 설치하기 위해서 다음과 같이 실행한다. <code><font face="Courier New" style="background-color:rgb(255,255,255);">[root@server1 ~]#</font></code>은 터미널의 프롬프트이다. 타이핑하는 것은 아니다. </p><pre><code class="nohighlight">[root@server1 ~]# apt-get -y install mysql-server mysql-client

New password for the MySQL "root" user: &lt;-- yourrootsqlpassword
Repeat password for the MySQL "root" user: &lt;-- yourrootsqlpassword
</code></pre><p>데이터베이스의 보안을 위해 익명사용자와 테스트 데이터베이스를 제거하기 위해 다음을 실행한다.</p><pre><code class="nohighlight">[root@server1 ~]# mysql_secure_installation
</code></pre><p>위의 명령을 실행 후 다음의 몇 가지 질문에 답을 하자.</p><pre><code class="nohighlight">Enter password for user root: &lt;-- Enter the MySQL root password
...
Press y|Y for Yes, any other key for No: &lt;-- Press y if you want this function or press Enter otherwise.
...
Change the password for root ? ((Press y|Y for Yes, any other key for No) : &lt;-- Press enter
...
Remove anonymous users? (Press y|Y for Yes, any other key for No) : &lt;-- y
...
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : &lt;-- y
...
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : &lt;-- y
...
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : &lt;-- y
</code></pre><h4>3. Nginx 설치</h4><p>Apache2가 이미 설치되어 있다면 Nginx를 설치하기 전에 Apache2를 제거한다.</p><pre><code class="nohighlight">[root@server1 ~]# service apache2 stop
[root@server1 ~]# update-rc.d -f apache2 remove
[root@server1 ~]# apt-get remove apache2
</code></pre><p>이제 Nginx를 설치한다.</p><pre><code class="nohighlight">[root@server1 ~]# apt-get -y install nginx
// 시작은 다음과 같이
[root@server1 ~]# service nginx start
</code></pre><p>제대로 설치되었는지 확인하기 위해 웹 브라우저에서 주소를 입력해 본다 (예, <a href="http://t.umblr.com/redirect?z=http%3A%2F%2F192.168.1.100&amp;t=ZWZiN2IzMzgzMzcxMDEwMGYyZTFhOTJjYzMxNGJmYjgzYjFkOGUzMiwzeDFuRlY0Nw%3D%3D&amp;b=t%3AazS33qDqhliDzp1P0RQcxg&amp;p=http%3A%2F%2Fwww.msjo.kr%2Fpost%2F153034439294%2Fubuntu-1604-nginx-php-7-mysql-57-%EC%84%A4%EC%B9%98&amp;m=0" rel="nofollow"><font color="#337ecf">http://192.168.1.100</font></a>). 기본 페이지가 보이면 설치 성공이다. 그리고 Nginx의 웹 문서의 기본 디렉터리는 <code><font face="Courier New" style="background-color:rgb(255,255,255);">/var/www/html</font></code> 이다.</p><h4>4. PHP 7 설치</h4><p>PHP-FPM(FastCGI Process Manager)를 이용한다<sup><a class="footnote" href="http://www.msjo.kr/post/153034439294/ubuntu-1604-nginx-php-7-mysql-57-%EC%84%A4%EC%B9%98#fn1" rel="nofollow"><font color="#337ecf" size="2">1</font></a></sup>. FastCGI 데몬 소켓은 <code><font face="Courier New" style="background-color:rgb(255,255,255);">/run/php/php7.0-fpm.sock</font></code> 에서 확인할 수 있다.</p><pre><code class="nohighlight">[root@server1 ~]# apt-get -y install php7.0-fpm
</code></pre><h4>5. Nginx 설정</h4><p>vi(또는 nano)편집기를 이용하여 다음의 설정파일을 편집한다<sup><a class="footnote" href="http://www.msjo.kr/post/153034439294/ubuntu-1604-nginx-php-7-mysql-57-%EC%84%A4%EC%B9%98#fn2" rel="nofollow"><font color="#337ecf" size="2">2</font></a></sup>.</p><pre><code class="nohighlight">[root@server1 ~]# vi /etc/nginx/nginx.conf
[root@server1 ~]# vi /etc/nginx/sites-available/default
</code></pre><p>예를들면 기본 디렉터리는 설정은 <code><font face="Courier New" style="background-color:rgb(255,255,255);">root /var/www/html;</font></code>이다. 그리고 php 연동을 위해 다음과 같이:</p><pre><code class="nohighlight">[root@server1 ~]# vi /etc/php/7.0/fpm/php.ini
// 다음과 같이 설정한다.
cgi.fix_pathinfo=0:
[root@server1 ~]# service nginx reload
[root@server1 ~]# service php7.0-fpm reload
</code></pre><p>이제 <code><font face="Courier New" style="background-color:rgb(255,255,255);">/var/www/html/</font></code>에 <code><font face="Courier New" style="background-color:rgb(255,255,255);">info.php</font></code> 파일을 하나 만들고 웹에서 확인 : <code><font face="Courier New" style="background-color:rgb(255,255,255);">&lt;?php phpinfo(); ?&gt;</font></code></p><h4>6. PHP에서 MySQL 지원 및 기타 주요기능 설치</h4><pre><code class="nohighlight">[root@server1 ~]# apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache  php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext

[root@server1 ~]# service php7.0-fpm reload
</code></pre><h4>7. 기타 설정 (옵션)</h4><p>TCP Connection</p><pre><code class="nohighlight">[root@server1 ~]# vi /etc/php/7.0/fpm/pool.d/www.conf
...
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
...
[root@server1 ~]# php7.0-fpm reload
[root@server1 ~]# vi /etc/nginx/sites-available/default
...
fastcgi_pass 127.0.0.1:9000;
...
[root@server1 ~]# service nginx reload
</code></pre><ol><li>PHP-FPM의 자세한 내용은 <a href="http://t.umblr.com/redirect?z=https%3A%2F%2Fphp-fpm.org%2F&amp;t=MzNmYmM1MGJjMmRjMTY1NDljMmNkNjE0YzhmNjU2NWE2NmFlNThkMiwzeDFuRlY0Nw%3D%3D&amp;b=t%3AazS33qDqhliDzp1P0RQcxg&amp;p=http%3A%2F%2Fwww.msjo.kr%2Fpost%2F153034439294%2Fubuntu-1604-nginx-php-7-mysql-57-%EC%84%A4%EC%B9%98&amp;m=0" rel="nofollow"><font color="#337ecf">https://php-fpm.org/</font></a>를 참고하자. <a href="http://www.msjo.kr/post/153034439294/ubuntu-1604-nginx-php-7-mysql-57-%EC%84%A4%EC%B9%98#ffn1" rel="nofollow"><font color="#337ecf">↩︎</font></a></li><li>설정파일 예제, <a href="http://t.umblr.com/redirect?z=https%3A%2F%2Fwww.nginx.com%2Fresources%2Fwiki%2Fstart%2Ftopics%2Fexamples%2Ffull%2F&amp;t=ZTRmODZmOGYwZjQyOWVkNDAwNTQ0ZjE1OTc1OWQ1ZjA1ZTk5MzAxYiwzeDFuRlY0Nw%3D%3D&amp;b=t%3AazS33qDqhliDzp1P0RQcxg&amp;p=http%3A%2F%2Fwww.msjo.kr%2Fpost%2F153034439294%2Fubuntu-1604-nginx-php-7-mysql-57-%EC%84%A4%EC%B9%98&amp;m=0" rel="nofollow"><font color="#337ecf">https://www.nginx.com/resources/wiki/start/topics/examples/full/</font></a> <a href="http://www.msjo.kr/post/153034439294/ubuntu-1604-nginx-php-7-mysql-57-%EC%84%A4%EC%B9%98#ffn2" rel="nofollow"><font color="#337ecf">↩︎</font></a></li></ol>]]></description>
	<dc:creator>최고관리자</dc:creator>
		<dc:date>2016-12-16T14:23:33+09:00</dc:date>
	</item>
</channel>
</rss>