<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>bitbucket | bitneer.dev</title>
	<atom:link href="https://www.bitneer.dev/blog/tag/bitbucket/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bitneer.dev</link>
	<description>AI 시대에 취미로 하는 코딩</description>
	<lastBuildDate>Sun, 28 Dec 2025 15:38:55 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://www.bitneer.dev/wp/wp-content/uploads/2023/11/cropped-bitneer_Logo_for_Google_200-32x32.png</url>
	<title>bitbucket | bitneer.dev</title>
	<link>https://www.bitneer.dev</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Bitbucket 서버 업그레이드하기</title>
		<link>https://www.bitneer.dev/blog/bitbucket-%ec%84%9c%eb%b2%84-%ec%97%85%ea%b7%b8%eb%a0%88%ec%9d%b4%eb%93%9c%ed%95%98%ea%b8%b0/</link>
		
		<dc:creator><![CDATA[Choi Kyung-sik]]></dc:creator>
		<pubDate>Thu, 28 May 2020 22:24:14 +0000</pubDate>
				<category><![CDATA[네트워크와 시스템 관리]]></category>
		<category><![CDATA[bitbucket]]></category>
		<category><![CDATA[systemd]]></category>
		<guid isPermaLink="false">https://www.bitneer.dev/?p=556</guid>

					<description><![CDATA[<div data-nosnippet>지원 정보 확인하기 오라클의 엄격해진 라이센스 정책으로 Java, MySQL, VirtualBox 등이 데비안의 패키지 대상에서 빠져나갔다. 데비안과 그 시스템에 설치한 Atlassian 제품인 Confluence, Jira, Bitbucket을 업그레이드할 때 신경이 쓰이고 손이 많이 간다. 좀 더 쉬운 관리를 위해 Oracle Java는 OpenJDK로 MySQL은 PostgreSQL로 변경하기로 마음먹고 작업을 진행하였다. Bitbucket 서버처럼 Atlassian 제품을 설치할 때나 업그레이드할 때 항상 문서 웹 페이지를 확인할 필요가 있다. ...</div>
<p>The post <a rel="nofollow" href="https://www.bitneer.dev/blog/bitbucket-%ec%84%9c%eb%b2%84-%ec%97%85%ea%b7%b8%eb%a0%88%ec%9d%b4%eb%93%9c%ed%95%98%ea%b8%b0/">Bitbucket 서버 업그레이드하기</a> appeared first on <a rel="nofollow" href="https://www.bitneer.dev">bitneer.dev</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h5>지원 정보 확인하기</h5>
<p>
  오라클의 엄격해진 라이센스 정책으로 Java, MySQL, VirtualBox 등이 데비안의
  패키지 대상에서 빠져나갔다. 데비안과 그 시스템에 설치한 Atlassian 제품인
  Confluence, Jira, Bitbucket을 업그레이드할 때 신경이 쓰이고 손이 많이 간다. 좀
  더 쉬운 관리를 위해 Oracle Java는 OpenJDK로 MySQL은 PostgreSQL로 변경하기로
  마음먹고 작업을 진행하였다. Bitbucket 서버처럼 Atlassian 제품을 설치할 때나
  업그레이드할 때 항상 문서 웹 페이지를 확인할 필요가 있다. Java, 데이터베이스에
  대한 지원 정보는 필수적으로 보아야 한다. 내가 사용하고 있는 Bitbucket 서버
  버전이 4.10.1이고
  <a href="https://confluence.atlassian.com/bitbucketserver0410/supported-platforms-858573806.html" target="_blank" rel="noopener noreferrer">Supported platforms &#8211; Bitbucket Server 4.10.x</a
  >에 나오는 지원 정보는 다음과 같다.
</p>
<ul>
  <li>OpenJDK: 1.8u40+, 1.8u0 &#8211; 1.8u20</li>
  <li>PostgreSQL: 9.2 &#8211; 9.5</li>
</ul>
<p>
  사용하고 있는 데비안 9(stretch)에서 PostgreSQL 9.6을 사용한다. MySQL을
  PostgreSQL로 마이그레이션할 때 문제가 발생할 것으로 보인다.
  <a href="https://confluence.atlassian.com/bitbucketserver072/supported-platforms-1005336822.html" target="_blank" rel="noopener noreferrer">Supported platforms &#8211; Bitbucket Server 7.2.x</a
  >에 나오는 최신 버전의 지원 정보는 다음과 같다.
</p>
<ul>
  <li>
    Oracle Java &amp; OpenJDK : Java 11, Java 8 (1.8u65+) &#8211; OpenJDK는
    AdoptOpenJDK의 Java 8 JRE 권장
  </li>
  <li>PostgreSQL: 9.4 &#8211; 11</li>
</ul>
<p>
  PostgreSQL 9.6을 지원하므로 먼저 Bitbucket 7.2로 업그레이드하고 MySQL을
  PostgreSQL로 마이그레이션할 것이다. 4 버전에서 7 버전으로 차이가 크게 나는
  버전 업그레이드이기 때문에 문서를 꼼꼼히 볼 필요가 있다. 특히
  <a href="https://confluence.atlassian.com/bitbucketserver/upgrade-bitbucket-server-from-an-archive-file-779292682.html" target="_blank" rel="noopener noreferrer">Upgrade Bitbucket Server from an archive file</a
  >과
  <a href="https://confluence.atlassian.com/bitbucketserver/migrate-server-xml-customizations-to-bitbucket-properties-897811761.html" target="_blank" rel="noopener noreferrer">Migrate server.xml customizations to bitbucket.properties</a
  >
  두 페이지를 주의 깊게 보아야 한다. Bitbucket 5부터 server.xml의 설정을
  bitbucket.properties 파일에 하도록 변경하였기 때문이다. 아래에서 이에 관한
  내용을 살펴볼 것이다.
</p>
<p>
  OpenJDK는 Confluence, Jira, Bitbucket의 지원 정보를 종합적으로 고려하면
  AdoptOpenJDK의 Java 8 (HotSpot)이 제일 나은 선택이다. AdoptOpenJDK 설치는
  <a href="https://www.bitneer.dev/wp/%eb%8d%b0%eb%b9%84%ec%95%88%ec%97%90-adoptopenjdk-%ec%84%a4%ec%b9%98%ed%95%98%ea%b8%b0/" target="_blank" rel="noopener noreferrer">데비안에 AdoptOpenJDK 설치하기</a
  >에서 다룬다.
</p>
<h5>Bitbucket 서버 업그레이드 절차</h5>
<p>
  사용자의 데이터가 지속해서 쌓이는 Bitbucket과 같은 Atlassian 제품들은 한 번
  설치 후 그 과정은 잊힌다. 사용자의 데이터를 유지하면서 새로운 기능을 사용하기
  위한 업그레이드로 관심이 옮겨가는 것이다. 나는 Bitbucket으로 이름이 바뀌기 전
  Stash부터 주기적으로 업그레이드해 왔다. 자잘한 문제가 있었기는 하지만
  전반적으로 부드럽게 업그레이드할 수 있었다.
</p>
<p>
  업그레이드는 한 번 하고 끝나는 것이 아니므로 그 절차를 정리해 둘 필요가 있다.
  다음의 절차는 업그레이드할 때마다 참고하기 위해 정리했다. 내가 Bitbucket을
  설치한 디렉토리는 <kbd>/opt/share/bitbucket</kbd>이고 Bitbucket 홈 디렉토리는
  <kbd>/var/local/lib/bitbucket</kbd>이다. 설치 파일은 TAR.GZ 압축 파일을
  사용한다. 여러분에게 맞게 적용하자.
</p>
<ol>
  <li>
    위에서 보았듯이 지원하는 Java와 데이터베이스의 버전을 확인한다. 업그레이드
    문서에서 이슈가 발생할 만한 것이 없는지도 찾아본다.
  </li>
  <li>
    다음의 명령어 실행으로 Bitbucket을 종료한다.
    <pre class="language-none">
<code># systemctl stop bitbucket.service</code>
</pre>
  </li>
  <li>
    데이터베이스와 Bitbucket의 홈 디렉토리를 백업한다. 나의 경우 데이터베이스를
    포함해서 서버 전체를 백업하는 스크립트를 사용한다.
  </li>
  <li>
    다음의 명령어로 기존 버전의 bitbucket의 이름을 변경한다.
    <pre class="language-none">
<code># mv /opt/share/bitbucket /opt/share/bitbucket-old</code>
</pre>
  </li>
  <li>
    <a href="https://www.atlassian.com/software/bitbucket/download" target="_blank" rel="noopener noreferrer">Download Bitbucket Server</a
    >에서 <strong>TAR.GZ Archive</strong> 설치 파일을 다운로드한다.
  </li>
  <li>
    다운로드한 Bitbucket 압축 파일을 <kbd>/opt/share</kbd>로 복사한 후 다음의
    절차로 <kbd>/opt/share/bitbucket</kbd>에 위치하도록 압축을 푼다.
    <pre class="language-none line-numbers" data-line="4">
<code># cd /opt/share
# tar zxvf atlassian-bitbucket-&lt;version&gt;.tar.gz
# mv atlassian-bitbucket-&lt;version&gt; bitbucket
# chown -R bitbucket:bitbucket bitbucket</code>
</pre>
  </li>
  <li>
    다음의 명령어로 Bitbucket을 시작한다.
    <pre class="language-none">
<code># systemctl start bitbucket.service</code>
</pre>
  </li>
  <li>
    웹 브라우저로 새로 설치한 Bitbucket에 접속하여 테스트해 본다. 새로운 버전에
    문제가 없으면 다음과 같이 다운로드 받았던 TAR.GZ Archive 설치 파일과 기존의
    Bitbucket을 삭제한다.
    <pre class="language-none">
<code># rm atlassian-bitbucket-&lt;version&gt;.tar.gz
# rm -rf bitbucket-old</code>
</pre>
  </li>
</ol>
<h5>Bitbucket 버전 4.10.x에서 7.2.x로 업그레이드 시 주의 사항</h5>
<p>
  위의 업그레이드 절차는 미래를 위한 것이다. Bitbucket 서버를 4.10.1에서
  7.2.3으로 업그레이드하면서 변경한 내용을 반영한 것이다. 7.2.3 이상의 버전으로
  업그레이드할 때 유효하다. 그 이전 버전, 특히 5.0 이전에서 업그레이드하려
  한다면 주의해야 한다.
  <a href="https://www.bitneer.dev/wp/confluence-jira-bitbucket%ec%9d%98-systemd-unit-%ec%84%a4%ec%a0%95/" target="_blank" rel="noopener noreferrer">Confluence, Jira, Bitbucket의 systemd unit 설정</a
  >에서 설치 디렉토리와 systemd unit 설정에 대해 다루었는데 Bitbucket 서버
  4.10.1을 기반한 것이다. 버전 7.2.3에서 많은 변경이 있다. 내가 직면했던
  사항들을 정리해 본다.
</p>
<p>
  1. Bitbucket 서비스의 쓰기 권한이 필요했던 /opt/share/bitbucket 안의 다음
  디렉토리가 더는 존재하지 않는다.
</p>
<ul>
  <li>logs</li>
  <li>temp</li>
  <li>work</li>
</ul>
<p>
  <a href="https://confluence.atlassian.com/bitbucketserverkb/how-to-view-detailed-permissions-for-bitbucket-server-directory-779171698.html?utm_medium=logScan&amp;utm_source=STP" target="_blank" rel="noopener noreferrer">How to View Detailed permissions for Bitbucket Server directory</a
  >에서 설치 디렉토리의 사용자와 그룹을 bitbucket이 소유하도록 하고 있다. 그래서
  위의 Bitbucket 서버 업그레이드 절차 6.의 라인 4에서 그렇게 했다.
</p>
<p>
  2. Bitbucket 서버 업그레이드 시 발생한 변경 사항들 때문에 systemd unit 설정
  파일을 다음과 같이 수정하였다.
</p>
<pre
  class="language-none line-numbers"
  data-line="8-12"
  data-label="/etc/systemd/system/bitbucket.service"
>
<code>[Unit]
Description=Atlassian Bitbucket
After=network.target

[Service]
Type=forking
User=bitbucket
UMask=0027
Environment=&quot;BITBUCKET_HOME=/var/local/lib/bitbucket&quot; &quot;JRE_HOME=/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64&quot;
PIDFile=/var/local/lib/bitbucket/log/bitbucket.pid
SuccessExitStatus=143
ExecStart=/opt/share/bitbucket/bin/start-bitbucket.sh --no-search
ExecStop=/opt/share/bitbucket/bin/stop-bitbucket.sh

[Install]
WantedBy=multi-user.target</code>
</pre>
<p>
  2.1. PID 파일의 위치가 /opt/share/bitbucket/work/catalina.pid에서
  <strong>/var/local/lib/bitbucket/log/bitbucket.pid</strong>로 변경되었다. 라인
  10에서 이를 반영하여 변경하였다.
</p>
<p>
  2.2. &#8216;systemctl stop bitbucket&#8217; 명령어로 Bitbucket 서비스를 종료하고
  &#8216;systemctl status bitbucket&#8217;으로 상태를 확인하면 다음과 같이 종료가
  실패하였다는 메시지가 나왔다.
</p>
<pre class="language-none line-numbers" data-line="1">
<code>... systemd[1]: bitbucket.service: Main process exited, code=exited, status=143/n/a
... stop-bitbucket.sh[2487]: The Bitbucket webapp has stopped
... systemd[1]: Stopped Atlassian Bitbucket.
... systemd[1]: bitbucket.service: Unit entered failed state.
... systemd[1]: bitbucket.service: Failed with result &#039;exit-code&#039;.</code>
</pre>
<p>
  stop-bitbucket.sh 스크립트의 종료 처리가 미비한 것으로 보인다. 위의 라인 1에서
  나온 상태(status) 값 143을 정상적인 종료라고 systemd에게 알려줄 필요가 있다.
  systemd unit 설정 파일의 라인 11에서
  <strong>SuccessExitStatus</strong> 지시자의 값을 <kbd>143</kbd>으로
  설정하였다.
</p>
<p>
  2.3. /opt/share/bitbucket/bin 디렉토리 안의 set-bitbucket-home.sh,
  set-jre-home.sh 스크립트 파일을 보면 환경 변수로 BITBUCKET_HOME과 JRE_HOME을
  설정할 수 있다. 그래서 라인 9의
  <strong>Environment</strong> 지시자에 환경 변수 값을 설정하여 넘겨주도록
  하였다. 이후 업그레이드를 할 때 set-bitbucket-home.sh, set-jre-home.sh 파일에
  BITBUCKET_HOME과 JRE_HOME을 설정하는 귀찮은 작업이 없어질 것이다.
</p>
<p>
  2.4. Bitbucket에 딸려 오는
  <a href="https://www.elastic.co/kr/elasticsearch/" target="_blank" rel="noopener noreferrer">Elasticsearch</a
  >를 사용하지 않을 것이기 때문에 라인 12에서 <strong>&#8211;no-search</strong>를
  추가하였다.
</p>
<p>
  2.5. Bitbucket 서비스를 실행할 때 umask로 0027을 권장하고 있다. 즉, 사용자와
  그룹이 아닌 다른 사용자에게 읽기와 쓰기 권한을 주지 말라고 하는 것이다. 라인
  8에서 <strong>UMask</strong> 지시자를 <kbd>0027</kbd>로 설정하였다. 이
  설정으로 Bitbucket 서비스가 생성하는 파일은 다른 사용자가 읽거나 쓸 수 없을
  것이다. 일관성을 위해 다음의 명령어를 실행하여 Bitbucket 홈 디렉토리의 권한을
  변경하였다.
</p>
<pre class="language-none">
<code># chmod -R o-rwx /var/local/lib/bitbucket</code>
</pre>
<p>
  3. Bitbucket 5부터 server.xml의 설정이 bitbucket.properties로 옮겨졌다. 내가
  server.xml에서 설정했던 Proxy 관련 설정 등을
  /var/local/lib/bitbucket/shared/bitbucket.properties 파일에 다음과 같이
  추가하였다.
</p>
<pre class="language-none">
<code>server.context-path=/bitbucket
server.secure=true
server.scheme=https
server.proxy-port=443
server.proxy-name=www.bitneer.dev</code>
</pre>

<p>
  4. MySQL에서 PostgreSQL로 변경하면서
  <a href="http://dev.mysql.com/downloads/connector/j" target="_blank" rel="noopener noreferrer">Download Connector/J</a
  >에서 받은 MySQL JDBC 드라이버를 /opt/share/bitbucket/lib 또는
  /opt/share/bitbucket/app/WEB-INF/lib 디렉토리로 복사해야 하는 번거로운 작업이
  하나 줄었다.
</p>
<h5>관련 글</h5>
<ul>
  <li>
    <a href="https://www.bitneer.dev/wp/confluence-jira-bitbucket%ec%9d%98-systemd-unit-%ec%84%a4%ec%a0%95/" target="_blank" rel="noopener noreferrer">Confluence, Jira, Bitbucket의 systemd unit 설정</a
    >
  </li>
  <li>
    <a href="https://www.bitneer.dev/wp/%eb%8d%b0%eb%b9%84%ec%95%88%ec%97%90-adoptopenjdk-%ec%84%a4%ec%b9%98%ed%95%98%ea%b8%b0/" target="_blank" rel="noopener noreferrer">데비안에 AdoptOpenJDK 설치하기</a
    >
  </li>
  <li>
    <a href="https://www.bitneer.dev/wp/bitbucket-%ec%84%9c%eb%b2%84%ec%9d%98-mysql%ec%9d%84-postgresql%eb%a1%9c-%eb%a7%88%ec%9d%b4%ea%b7%b8%eb%a0%88%ec%9d%b4%ec%85%98-%ed%95%98%ea%b8%b0/" target="_blank" rel="noopener noreferrer">Bitbucket 서버의 MySQL을 PostgreSQL로 마이그레이션 하기</a
    >
  </li>
</ul>
<h5>참고 자료</h5>
<ul>
  <li>
    <a href="https://confluence.atlassian.com/bitbucketserver0410/supported-platforms-858573806.html" target="_blank" rel="noopener noreferrer">Supported platforms &#8211; Bitbucket Server 4.10.x</a
    >
  </li>
  <li>
    <a href="https://confluence.atlassian.com/bitbucketserver072/supported-platforms-1005336822.html" target="_blank" rel="noopener noreferrer">Supported platforms &#8211; Bitbucket Server 7.2.x</a
    >
  </li>
  <li>
    <a href="https://confluence.atlassian.com/conf74/supported-platforms-1003129726.html" target="_blank" rel="noopener noreferrer">Supported Platforms &#8211; Confluence 7.4</a
    >
  </li>
  <li>
    <a href="https://confluence.atlassian.com/adminjiraserver088/installing-jira-applications/supported-platforms" target="_blank" rel="noopener noreferrer">Supported platforms &#8211; Jira 8.8</a
    >
  </li>
  <li>
    <a href="https://confluence.atlassian.com/bitbucketserver/upgrade-bitbucket-server-from-an-archive-file-779292682.html" target="_blank" rel="noopener noreferrer">Upgrade Bitbucket Server from an archive file</a
    >
  </li>
  <li>
    <a href="https://confluence.atlassian.com/bitbucketserver/migrate-server-xml-customizations-to-bitbucket-properties-897811761.html" target="_blank" rel="noopener noreferrer">Migrate server.xml customizations to bitbucket.properties</a
    >
  </li>
  <li>
    <a href="https://community.atlassian.com/t5/Bitbucket-questions/Instead-of-init-d-use-systemctl/qaq-p/108783" target="_blank" rel="noopener noreferrer">Instead of init.d use systemctl</a
    >
  </li>
  <li>
    <a href="https://jira.atlassian.com/browse/BSERV-11426" target="_blank" rel="noopener noreferrer">&#8220;bitbucket-stop.sh&#8221; does not support &#8220;&#8211;no-search&#8221;</a
    >
  </li>
</ul>
<p>The post <a rel="nofollow" href="https://www.bitneer.dev/blog/bitbucket-%ec%84%9c%eb%b2%84-%ec%97%85%ea%b7%b8%eb%a0%88%ec%9d%b4%eb%93%9c%ed%95%98%ea%b8%b0/">Bitbucket 서버 업그레이드하기</a> appeared first on <a rel="nofollow" href="https://www.bitneer.dev">bitneer.dev</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Bitbucket 서버의 MySQL을 PostgreSQL로 마이그레이션 하기</title>
		<link>https://www.bitneer.dev/blog/bitbucket-%ec%84%9c%eb%b2%84%ec%9d%98-mysql%ec%9d%84-postgresql%eb%a1%9c-%eb%a7%88%ec%9d%b4%ea%b7%b8%eb%a0%88%ec%9d%b4%ec%85%98-%ed%95%98%ea%b8%b0/</link>
		
		<dc:creator><![CDATA[Choi Kyung-sik]]></dc:creator>
		<pubDate>Thu, 28 May 2020 20:19:40 +0000</pubDate>
				<category><![CDATA[네트워크와 시스템 관리]]></category>
		<category><![CDATA[데이터베이스 시스템]]></category>
		<category><![CDATA[bitbucket]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[postgresql]]></category>
		<guid isPermaLink="false">https://www.bitneer.dev/?p=546</guid>

					<description><![CDATA[<div data-nosnippet>데비안 시스템의 Bitbucket에서 MySQL을 PostgreSQL로 옮겼던 과정을 보여주려고 한다. 내가 사용하는 데비안 9(stretch)의 PostgreSQL 버전은 9.6이다. Bitbucket은 버전 7.2.3을 설치하고 있다. 먼저 이 버전의 Bitbucket에서 지원하는 데이터베이스를 볼 필요가 있다. Supported platforms &#8211; Bitbucket Server 7.2.x를 보면 PostgreSQL 9.4에서 11까지 지원하므로 마이그레이션을 진행할 수 있다. 작업을 진행하기 전에 기존의 MySQL의 데이터베이스와 Bitbucket 홈 디렉토리를 백업한다. 뒤에서 홈 디렉토리는 내가 사용하는 ...</div>
<p>The post <a rel="nofollow" href="https://www.bitneer.dev/blog/bitbucket-%ec%84%9c%eb%b2%84%ec%9d%98-mysql%ec%9d%84-postgresql%eb%a1%9c-%eb%a7%88%ec%9d%b4%ea%b7%b8%eb%a0%88%ec%9d%b4%ec%85%98-%ed%95%98%ea%b8%b0/">Bitbucket 서버의 MySQL을 PostgreSQL로 마이그레이션 하기</a> appeared first on <a rel="nofollow" href="https://www.bitneer.dev">bitneer.dev</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>
  데비안 시스템의 Bitbucket에서 MySQL을 PostgreSQL로 옮겼던 과정을 보여주려고
  한다. 내가 사용하는 데비안 9(stretch)의 PostgreSQL 버전은 9.6이다. Bitbucket은
  버전 7.2.3을 설치하고 있다. 먼저 이 버전의 Bitbucket에서 지원하는
  데이터베이스를 볼 필요가 있다.
  <a href="https://confluence.atlassian.com/bitbucketserver/supported-platforms-776640981.html" target="_blank" rel="noopener noreferrer">Supported platforms &#8211; Bitbucket Server 7.2.x</a
  >를 보면 PostgreSQL 9.4에서 11까지 지원하므로 마이그레이션을 진행할 수 있다.
  작업을 진행하기 전에 기존의 MySQL의 데이터베이스와 Bitbucket 홈 디렉토리를
  백업한다. 뒤에서 홈 디렉토리는 내가 사용하는
  <kbd>/var/local/lib/bitbucket</kbd>으로 표시할 것이다.
</p>
<h5>PostgreSQL에서 데이터베이스 만들기</h5>
<p>
  Bitbucket 서버에서 사용할 PostgreSQL의 데이터베이스를 만든다. 다음은 psql
  클라이언트를 사용한 진행 과정이다.
</p>
<pre class="language-none" data-line="6,8,10,14">
<code># psql -h localhost -U postgres -d postgres
psql (9.6.17)
SSL 연결정보 (프로토콜: TLSv1.2, 암호화기법: ECDHE-RSA-AES256-GCM-SHA384, 비트: 256, 압축: off)
도움말을 보려면 &quot;help&quot;를 입력하십시오.

postgres=# CREATE ROLE bitbucket WITH LOGIN PASSWORD &#039;원하는 암호 입력&#039;;
CREATE ROLE
postgres=# CREATE DATABASE bitbucket WITH ENCODING=&#039;UTF8&#039; OWNER=bitbucket;
CREATE DATABASE
postgres=# \l
                                  데이터베이스 목록
    이름    |   소유주   | 인코딩 |   Collate   |    Ctype    |      액세스 권한
------------+------------+--------+-------------+-------------+-----------------------
 bitbucket  | bitbucket  | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 |
 confluence | confluence | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 |
 jira       | jira       | UTF8   | C           | C           |
 postgres   | postgres   | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 |
 template0  | postgres   | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 | =c/postgres          +
            |            |        |             |             | postgres=CTc/postgres
 template1  | postgres   | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 | =c/postgres          +
            |            |        |             |             | postgres=CTc/postgres
(6개 행)

postgres=#</code>
</pre>
<p>
  라인 6에서 <strong>CREATE ROLE</strong>로 <kbd>bitbucket</kbd> 사용자를
  만든다. 라인 8에서 <strong>CREATE DATABASE</strong>로
  <kbd>bitbucket</kbd> 데이터베이스를 생성한다. Bitbucket의 데이터베이스는 UTF-8
  문자 집합을 사용하도록 설정해야 한다. 라인 10에서 <strong>\l</strong> 명령어로
  새로 생성한 bitbucket 데이터베이스를 확인한다. PostgreSQL의 기본적인 사용은
  <a href="https://www.bitneer.dev/wp/postgresql%ec%9d%98-%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%b2%a0%ec%9d%b4%ec%8a%a4%ec%99%80-%ec%82%ac%ec%9a%a9%ec%9e%90-%ec%83%9d%ec%84%b1-%eb%b0%b1%ec%97%85-%eb%b0%8f-%eb%b3%b5%ea%b5%ac/" target="_blank" rel="noopener noreferrer">PostgreSQL의 데이터베이스와 사용자 생성, 백업 및 복구</a
  >에서 다루었다.
</p>
<h5>Database Migration Wizard를 사용하여 데이터베이스 마이그레이션 하기</h5>
<p>
  웹 브라우저로 Bitbucket 서버에 접속한다. 설정 아이콘을 클릭하여 Administration
  페이지로 들어간 후 다음의 작업을 진행한다.
</p>
<p>1. <strong>Settings &gt; Database</strong>를 클릭한다.</p>
<p>2. <strong>Migrate database</strong> 버튼을 클릭한다.</p>
<img decoding="async"
  src="https://www.bitneer.dev/wp/wp-content/uploads/2020/05/202005290219.png"
  alt="Migrate Database to PostgreSQL"
/>

<p>3. Migrate Database에서 다음의 설정을 한다.</p>
<ul>
  <li>Database Type: 디폴트 선택인 PostgreSQL을 그대로 둔다.</li>
  <li>
    Hostname; PostgreSQL을 설치한 시스템의 로컬 IP 주소를 입력한다. (예:
    192.168.1.10)
  </li>
  <li>Port: PostgreSQL의 포트를 변경하지 않았다면 디폴트 값을 그대로 둔다.</li>
  <li>
    Database name: 위에서 생성한 데이터베이스의 이름인 <kbd>bitbucket</kbd>을
    입력한다.
  </li>
  <li>
    Database username: 위에서 생성한 데이터베이스의 사용자 이름인
    <kbd>bitbucket</kbd>을 입력한다.
  </li>
  <li>Database password: 위에서 생성한 데이터베이스의 &#8216;암호&#8217;를 입력한다.</li>
</ul>
<p>
  설정을 마친 후 <strong>Start Migration</strong> 버튼을 클릭하면 마이그레이션을
  진행한다.
</p>
<p>4. 마이그레이션 진행을 완료하면 성공 메시지가 나온다.</p>

<h5>데이터베이스의 마이그레이션 확인하기</h5>
<p>
  PostgreSQL로 변경했는지 확인하려면 Bitbucket 홈 디렉토리의
  bitbucket.properties 파일을 본다. 파일 경로는
  <kbd>/var/local/lib/bitbucket/shared/bitbucket.properties</kbd>이다. 파일에서
  MySQL의 JDBC 설정은 주석으로 처리하고 PostgreSQL을 추가한 것을 볼 수 있을
  것이다.
</p>
<p>
  Database Migration Wizard는 마이그레이션할 때 dump 파일을 생성한다.
  <kbd>/var/local/lib/bitbucket/export</kbd> 디렉토리 안에 .zip 확장자로
  만들어지는데 삭제하여도 무방하다.
</p>
<h5>참고 자료</h5>
<ul>
  <li>
    <a href="https://confluence.atlassian.com/bitbucketserver/supported-platforms-776640981.html" target="_blank" rel="noopener noreferrer">Supported platforms &#8211; Bitbucket Server 7.2.x</a
    >
  </li>
  <li>
    <a href="https://confluence.atlassian.com/bitbucketserver/connecting-bitbucket-server-to-postgresql-776640389.html" target="_blank" rel="noopener noreferrer">Connecting Bitbucket Server to PostgreSQL</a
    >
  </li>
  <li>
    <a href="https://confluence.atlassian.com/bitbucketserver/connecting-bitbucket-server-to-an-external-database-776640378.html#ConnectingBitbucketServertoanexternaldatabase-migration" target="_blank" rel="noopener noreferrer">Connecting Bitbucket Server to an external database</a
    >
  </li>
</ul><p>The post <a rel="nofollow" href="https://www.bitneer.dev/blog/bitbucket-%ec%84%9c%eb%b2%84%ec%9d%98-mysql%ec%9d%84-postgresql%eb%a1%9c-%eb%a7%88%ec%9d%b4%ea%b7%b8%eb%a0%88%ec%9d%b4%ec%85%98-%ed%95%98%ea%b8%b0/">Bitbucket 서버의 MySQL을 PostgreSQL로 마이그레이션 하기</a> appeared first on <a rel="nofollow" href="https://www.bitneer.dev">bitneer.dev</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Confluence, Jira, Bitbucket의 systemd unit 설정</title>
		<link>https://www.bitneer.dev/blog/confluence-jira-bitbucket%ec%9d%98-systemd-unit-%ec%84%a4%ec%a0%95/</link>
		
		<dc:creator><![CDATA[Choi Kyung-sik]]></dc:creator>
		<pubDate>Wed, 27 May 2020 20:20:22 +0000</pubDate>
				<category><![CDATA[네트워크와 시스템 관리]]></category>
		<category><![CDATA[bitbucket]]></category>
		<category><![CDATA[confluence]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[jira]]></category>
		<category><![CDATA[systemd]]></category>
		<guid isPermaLink="false">https://www.bitneer.dev/?p=532</guid>

					<description><![CDATA[<div data-nosnippet>2012년 즈음에 Confluence, Jira, Stash(Bitbucket의 이전 이름)를 데비안 시스템에 TAR.GZ Archive 파일을 사용하여 처음 설치하였다. 시작 스크립트는 공식적인 지원 대상이 아니고 그에 대한 문서의 내용도 부실해서 직접 만들어야 했다. Confluence, Jira, Stash가 Tomcat을 사용했기 때문에 데비안 6.0(Squeeze)의 Tomcat 6을 참고하여 init.d 스크립트를 작성했었다. Tomcat과 같이실제 제작자(upstream)의 소프트웨어는 데비안 개발자가 데비안의 정책에 맞게 패키지를 만든다. init.d 스크립트를 작성할 때 그것에 맞게 ...</div>
<p>The post <a rel="nofollow" href="https://www.bitneer.dev/blog/confluence-jira-bitbucket%ec%9d%98-systemd-unit-%ec%84%a4%ec%a0%95/">Confluence, Jira, Bitbucket의 systemd unit 설정</a> appeared first on <a rel="nofollow" href="https://www.bitneer.dev">bitneer.dev</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>
  2012년 즈음에 Confluence, Jira, Stash(Bitbucket의 이전 이름)를 데비안 시스템에
  TAR.GZ Archive 파일을 사용하여 처음 설치하였다. 시작 스크립트는 공식적인 지원
  대상이 아니고 그에 대한 문서의 내용도 부실해서 직접 만들어야 했다. Confluence,
  Jira, Stash가 Tomcat을 사용했기 때문에 데비안 6.0(Squeeze)의 Tomcat 6을
  참고하여 init.d 스크립트를 작성했었다. Tomcat과 같이<em
    >실제 제작자(upstream)</em
  >의 소프트웨어는 데비안 개발자가 데비안의 정책에 맞게 패키지를 만든다. init.d
  스크립트를 작성할 때 그것에 맞게 하려고 했고 아래에 나올 내용인 사용자와 그룹
  생성, 설치 디렉토리와 홈 디렉토리가 그를 반영한 것이다.
</p>
<p>
  데비안 8(Jessie)에서 systemd가 디폴트 시작 시스템으로 완전히 들어왔다. 한동안
  데비안 7(Wheezy)에서 업그레이드를 해야 할지 주저했던 기억이 난다. 그러나
  systemd는 SysV 스크립트 파일을 분석하고 변환하는 방식으로 하위 호환성을
  제공하였다. 내가 작성한 구식의 스크립트는 살아남을 수 있었다.
</p>
<p>
  최근에 MySQL에서 PostgreSQL로 옮기는 작업을 진행하면서 init.d 스크립트도
  버리기로 하였다. 관리의 측면에서 Confluence, Jira, Bitbucket의 서비스 설정은
  init.d 스크립트보다는 systemd unit 설정 파일이 더 낫다. 업그레이드되면서 환경
  변수 등이 변한다면 init.d 스크립트도 이를 반영해야 할 경우가 생기기 때문이다.
</p>
<h5>사용자와 그룹 생성</h5>
<p>
  보안상의 이유로 데몬(서비스)은 root 관리자 계정으로 실행하지 말아야 한다. 보안
  취약점을 이용하여 악의적인 사용자가 root 권한이 있는 데몬을 사용한다면
  시스템에 재앙을 가져온다. 따라서 서비스는 일반 사용자로 실행하여야 한다.
</p>
<p>
  Confluence 서비스에서 사용할 confluence 그룹과 confluence 사용자를 생성하기
  위해 다음과 같이 한다.
</p>
<pre class="language-none line-numbers" data-line="2">
<code># groupadd confluence
# useradd confluence -M -g confluence -d /opt/share/confluence -s /bin/false</code>
</pre>
<p>
  위의 useradd 명령어에서 <strong>-d</strong> 옵션으로 홈 디렉토리는 지정하지만
  <strong>-M</strong> 옵션으로 홈 디렉토리를 생성하지 않는다. confluence
  사용자는 서비스 실행만을 위해 존재하기 때문에 홈 디렉토리를 생성할 필요는
  없다. 마찬가지로 로그인 시 사용할 쉘을 지정하는 <strong>-s</strong> 옵션에서
  <kbd>/bin/false</kbd>로 하여 로그인을 허용하지 않는다. jira와 bitbucket도 위의
  confluence가 나온 부분을 대체하여 사용자와 그룹을 만들어 줄 수 있다.
</p>
<p>데비안의 tomcat6 패키지와 비교해 보자.</p>
<pre class="language-none line-numbers" data-line="2,4">
<code># cat /etc/passwd | grep tomcat6
tomcat6:x:109:115::/usr/share/tomcat6:/bin/false
# cat /etc/passwd | grep confluence
confluence:x:1002:1002::/opt/share/confluence:/bin/false</code>
</pre>
<p>
  사용자와 그룹을 한꺼번에 삭제하고 싶다면 &#8216;deluser&#8217; 명령어를 사용한다. 다음의
  명령어는 stash 사용자와 그룹을 한 번에 제거한다.
</p>
<pre class="language-none">
<code># deluser stash</code>
</pre>

<h5>설치 디렉토리와 홈 디렉토리</h5>
<p>
  Confluence, Jira, Bitbucket을 어느 디렉토리에 설치하는 것이 좋을까? 데비안
  개발자가 패키지를 만들면서 신경 쓰지 않는 /opt, /srv, /usr/local, /home
  디렉토리가 적당해 보인다. 나는 위의 사용자 생성에서 보듯이 /opt/share 디렉토리
  안에 confluence, jira, bitbucket으로 선택했다. 데비안에서 운영체제에
  종속적이지 않은 Tomcat 같은 패키지는 /usr/share 디렉토리에 들어간다. 그래서
  /opt/share로 하였다. 이것은 취향의 문제로 여러분은 다른 곳에 설치할 수 있다.
</p>
<p>
  보안 측면을 짚어 보기 위해 좀 더 살펴본다.
  <a href="https://www.atlassian.com/software/confluence/download" target="_blank" rel="noopener noreferrer">Download Confluence Server</a
  >,
  <a href="https://www.atlassian.com/software/jira/download" target="_blank" rel="noopener noreferrer">Download Jira Software Server</a
  >,
  <a href="https://www.atlassian.com/software/bitbucket/download" target="_blank" rel="noopener noreferrer">Download Bitbucket Server</a
  >에서 TAR.GZ Archive 파일을 다운로드 할 수 있다. 다운로드한 파일을
  /opt/share로 복사한 후 다음의 작업을 한다. 여기서는 Confluence만 예제로
  보인다. Jira와 Bitbucket도 confluence가 나온 부분을 jira와 bitbucket으로
  변경하여 같은 작업을 할 수 있다.
</p>
<pre class="language-none line-numbers" data-line="4-7">
<code># cd /opt/share
# tar zxvf atlassian-confluence-&lt;version&gt;.tar.gz
# mv atlassian-confluence-&lt;version&gt; confluence
# chown -R root:root confluence
# chown -R confluence:confluence confluence/logs
# chown -R confluence:confluence confluence/temp
# chown -R confluence:confluence confluence/work</code>
</pre>
<p>
  보안을 강화하기 위해 라인 4에서 7까지 파일의 소유자와 그룹을 설정하였다.
  confluence 사용자로 실행하는 Confluence 데몬은 logs, temp, work 디렉토리에만
  쓰기 권한을 가진다. 다른 곳은 사용자와 그룹을 root 소유로 설정하였기 때문에
  confluence 사용자로 실행하는 서비스는 파일을 저장할 수 없다.
</p>
<p>
  데비안의 Tomcat 패키지 방식으로 하려면 몇 가지 작업을 더 해야 한다. logs, work
  디렉토리는 /var/lib/confluence 안에 들어가야 하고 temp 디렉토리는 /tmp 안에
  위치해야 한다. 그러나 이 디렉토리들은 중요도가 떨어지고 업그레이드할 때마다
  해주기 번거롭기 때문에 그렇게까지는 하지 않았다.
</p>
<p>
  Confluence, Jira, Bitbucket은 데이터를 사용자가 설정하는 홈 디렉토리에
  저장한다. 어디로 설정하는 것이 좋을까? /var 디렉토리는 변하는 데이터를
  저장하는 곳이기에 적당하다. 데비안의 패키지는 /var/lib 디렉토리를 사용한다.
  나는 /var/local/lib 디렉토리 안의 confluence, jira, bitbucket으로 설정했다.
  /var/local은 데비안 개발자가 관심을 두지 않는 곳이기 때문에 선택했다. 이 역시
  취향 문제다.
</p>
<p>
  Confluence의 홈 디렉토리를 생성하기 위해 다음과 같이 한다. Jira와 Bitbucket도
  confluence가 나온 부분을 변경하여 같은 작업을 할 수 있다.
</p>
<pre class="language-none line-numbers" data-line="4">
<code># mkdir -p /var/local/lib/confluence
# cd /var/local/lib
# chown confluence:confluence confluence
# chmod g-s confluence</code>
</pre>
<p>
  mkdir 명령어의 <strong>-p</strong> 옵션은 상위 디렉토리인 lib가 존재하지 않을
  때 생성하라는 의미이다. 라인 3에서 confluence 사용자로 실행하는 Confluence
  데몬이 쓸 수 있도록 사용자와 그룹의 소유주를 confluence로 설정한다. 라인 4는
  /var/local/lib/confluence 디렉토리의 스티키 비트(sticky bit)를 사용하지
  않으므로 제거한 것이다. 데비안에서 /var/local 디렉토리는 그룹에 스티키 비트가
  설정되어 있어서 디렉토리나 파일을 생성하면 스티키 비트가 붙는다.
</p>
<p>
  추가로 데이터베이스를 만들고 홈 디렉토리 설정 등을 한다면 Confluence, Jira,
  Bitbucket을 설치할 준비를 마친 것이다. 이제 이 글의 주제인 systemd unit
  설정으로 넘어가자.
</p>
<h5>systemd unit 설정</h5>
<p>
  시스템의 전원을 켜면 복잡한 여러 부트 단계를 거쳐 PID=1을 가지는 init
  프로그램이 실행된다. init 프로그램은 모든 프로세스의 최상위 조상이고 시작 시
  필요한 프로그램을 실행한다. 데비안 jessie 이후로 init 프로그램인 /sbin/init은
  /lib/systemd/systemd에 대한 심볼릭 링크이다. systemd init 프로세스는 다음의
  디렉토리에서 unit 설정 파일을 읽어 들여 <em>병렬적(parallel)</em>으로
  프로세스들을 생산한다. 병렬적이기 때문에 기존의 <em>순차적</em>인 SysV
  init보다 빠르다.
</p>
<ul>
  <li>/lib/systemd/system : 운영체제의 디폴트 설정 파일</li>
  <li>/etc/systemd/system : 시스템 관리자의 설정 파일</li>
  <li>/run/systemd/system : 실행 시간에 만들어지는 설정 파일</li>
</ul>
<p>
  unit 설정 파일의 접미사에 따라 서비스(.service), 장치(.device),
  마운트(.mount), unit 설정 파일의 그룹(.target) 등 다양한 타입이 있다.
  Confluence, Jira, Bitbucket의 서비스를 위해 /etc/systemd/system 디렉토리 안에
  .service로 끝나는 unit 설정 파일을 만들 것이다.
</p>
<p>
  Confluence의 unit 설정 파일인 /etc/systemd/system/confluence.service의 내용은
  다음과 같다.
</p>
<pre
  class="language-none line-numbers"
  data-line="7-10"
  data-label="/etc/systemd/system/confluence.service"
>
<code>[Unit]
Description=Atlassian Confluence
After=network.target

[Service]
Type=forking
User=confluence
PIDFile=/opt/share/confluence/work/catalina.pid
ExecStart=/opt/share/confluence/bin/start-confluence.sh
ExecStop=/opt/share/confluence/bin/stop-confluence.sh

[Install]
WantedBy=multi-user.target</code>
</pre>
<p>
  프로그램의 흐름을 따라가는 <em>절차적</em>인 SysV init 스크립트와 비교하면
  unit 설정 파일은 <em>선언적</em>으로 이해하기 쉽다. unit 설정 파일은 윈도우
  운영체제의 .ini 확장자를 지닌 설정 파일에서 사용하는 문법을 사용한다. 대괄호의
  절(section)로 시작하여 한 줄마다 &#8216;변수=값&#8217;으로 이루어진다. 변수는
  지시자(directive)라 부른다. unit 설정 파일은 [Unit], [Install] 절을 기본적으로
  가져야 한다. 서비스 unit 설정 파일은 추가로 [Service] 절을 반드시 포함해야
  한다.
</p>
<p>
  [Unit] 절은 unit의 일반적인 정보를 지닌다. 라인 2의 Description 지시자에는
  unit의 원하는 이름을 넣어준다. 종속성 지시자인 After는 먼저 실행돼야 하는
  unit을 지정한다. Confluence는 웹 서버이므로 시스템의 네트워크 설정이 먼저
  이루어지는 것이 필요하다. 따라서 라인 3에서 네트워크 관련 unit들은 모아 놓은
  network.target을 설정한다.
</p>
<p>
  [Install] 절은 unit을 설치하기 위한 정보로 systemd가 사용하지 않는다. 아래에서
  볼 systemctl의 enable과 disable에서 이 절을 사용하여 심볼릭 링크를 만들거나
  삭제한다. SysV의 런레벨과 비슷한 것으로 multi-user.target은 런레벨 2에서 4에
  해당한다. &#8216;<kbd>ls -al /lib/systemd/system/runlevel*</kbd>&#8216; 명령어로 확인해 볼
  수 있다.
</p>
<p>
  [Service] 절은 서비스 unit을 위한 것이다. 라인 6의 Type=forking은 라인 9의
  ExecStart에서 설정한 start-confluence.sh가 fork()를 호출할 것임을 의미한다.
  전통적인 UNIX 서비스가 행동하는 방식으로 Tomcat도 이처럼 한다. Type을
  forking으로 한다면 PIDFile의 설정을 권고하고 있다. 라인 8에서 Confluence가
  사용하는 Tomcat의 PID 파일의 위치를 설정한다. 라인 10의 ExecStop에서 서비스
  종료에 사용할 파일을 지정한다. 라인 7에서 서비스를 실행할 사용자로
  confluence를 설정한다.
</p>
<p>Jira의 unit 설정 파일은 다음과 같다.</p>
<pre
  class="language-none line-numbers"
  data-line="7-10"
  data-label="/etc/systemd/system/jira.service"
>
<code>[Unit]
Description=Atlassian Jira
After=network.target

[Service]
Type=forking
User=jira
PIDFile=/opt/share/jira/work/catalina.pid
ExecStart=/opt/share/jira/bin/start-jira.sh
ExecStop=/opt/share/jira/bin/stop-jira.sh

[Install]
WantedBy=multi-user.target</code>
</pre>
<p>Bitbucket의 unit 설정 파일은 다음과 같다.</p>
<pre
  class="language-none line-numbers"
  data-line="7-10"
  data-label="/etc/systemd/system/bitbucket.service"
>
<code>[Unit]
Description=Atlassian Bitbucket
After=network.target

[Service]
Type=forking
User=bitbucket
PIDFile=/opt/share/bitbucket/work/catalina.pid
ExecStart=/opt/share/bitbucket/bin/start-bitbucket.sh
ExecStop=/opt/share/bitbucket/bin/stop-bitbucket.sh

[Install]
WantedBy=multi-user.target</code>
</pre>

<h5>systemctl 사용한 unit 설정의 활성화, 시작, 종료 등</h5>
<p>
  다음에서 Confluence에 대한 명령문의 실행 예만 든다. Jira와 Bitbucket도
  confluence가 나온 부분을 jira와 bitbucket으로 변경하여 실행할 수 있다. 명령문
  실행에서 서비스를 나타내는 .service 접미사는 생략할 수 있다. 예를 들면
  confluence.service 대신 confluence를 사용하여 타이핑을 줄일 수 있다. bash에서
  &lt;TAB&gt; 키로 자동 완성 기능을 사용한다면 큰 의미는 없다.
</p>
<p>
  unit 설정 파일을 새로 만들었거나 변경했다면 systemd가 그것을 알 수 있게 다음의
  명령어를 실행한다.
</p>
<pre class="language-none">
<code># systemctl daemon-reload</code>
</pre>
<p>
  시스템 부팅 시에 서비스를 실행하려면 다음의 명령어를 실행한다. [Install] 절의
  WantedBy 지시자 값으로 설정한 multi-user.target의 디렉토리에서 심볼릭 링크로
  연결된다.
</p>
<pre class="language-none line-numbers" data-line="2">
<code># systemctl enable confluence.service
Created symlink /etc/systemd/system/multi-user.target.wants/confluence.service → /etc/systemd/system/confluence.service.</code>
</pre>
<p>
  다음의 명령어로 서비스를 시작(start), 종료(stop)하고 서비스의 상태(status)를
  본다.
</p>
<pre class="language-none">
<code># systemctl start confluence.service
# systemctl stop confluence.service
# systemctl status confluence.service</code>
</pre>
<p>
  서비스에 문제가 발생하면 다음의 명령어를 실행하여 무엇이 문제인지 확인해 본다.
</p>
<pre class="language-none">
<code># journalctl -xe</code>
</pre>

<h5>관련 소스 코드</h5>
Confluence, Jira, Bitbucket의 init.d 스크립트
<ul>
  <li>
    <a href="https://github.com/bitneer/bitneer.dev/blob/master/scripts/confluence" target="_blank" rel="noopener noreferrer">https://github.com/bitneer/bitneer.dev/blob/master/scripts/confluence</a
    >
  </li>
  <li>
    <a href="https://github.com/bitneer/bitneer.dev/blob/master/scripts/jira" target="_blank" rel="noopener noreferrer">https://github.com/bitneer/bitneer.dev/blob/master/scripts/jira</a
    >
  </li>
  <li>
    <a href="https://github.com/bitneer/bitneer.dev/blob/master/scripts/bitbucket" target="_blank" rel="noopener noreferrer">https://github.com/bitneer/bitneer.dev/blob/master/scripts/bitbucket</a
    >
  </li>
</ul>
<h5>참고 자료</h5>
<ul>
  <li>
    <a href="https://confluence.atlassian.com/confkb/run-confluence-as-a-systemd-service-on-linux-937177781.html" target="_blank" rel="noopener noreferrer">Run Confluence as a systemd service on linux</a
    >
  </li>
  <li>
    <a href="https://confluence.atlassian.com/jirakb/run-jira-as-a-systemd-service-on-linux-979411854.html" target="_blank" rel="noopener noreferrer">Run Jira as a systemd service on linux</a
    >
  </li>
  <li>
    <a href="https://confluence.atlassian.com/bitbucketserver/running-bitbucket-server-as-a-linux-service-776640157.html" target="_blank" rel="noopener noreferrer">Running Bitbucket Server as a Linux service</a
    >
  </li>
  <li>
    <a href="https://wiki.debian.org/systemd" target="_blank" rel="noopener noreferrer">systemd &#8211; Debian Wiki</a
    >
  </li>
  <li>
    <a href="https://wiki.debian.org/systemd/Services" target="_blank" rel="noopener noreferrer">systemd/Services &#8211; Debian Wiki</a
    >
  </li>
  <li>
    <a href="https://manpages.debian.org/buster/systemd/systemd.service.5.en.html" target="_blank" rel="noopener noreferrer">systemd.service(5) — systemd — Debian buster — Debian Manpages</a
    >
  </li>
  <li>
    <a href="https://manpages.debian.org/buster/systemd/systemd.exec.5.en.html" target="_blank" rel="noopener noreferrer">systemd.exec(5) — systemd — Debian buster — Debian Manpages</a
    >
  </li>
  <li>
    <a href="https://manpages.debian.org/buster/systemd/systemd.unit.5.en.html" target="_blank" rel="noopener noreferrer">systemd.unit(5) — systemd — Debian buster — Debian Manpages</a
    >
  </li>
</ul>
<p>The post <a rel="nofollow" href="https://www.bitneer.dev/blog/confluence-jira-bitbucket%ec%9d%98-systemd-unit-%ec%84%a4%ec%a0%95/">Confluence, Jira, Bitbucket의 systemd unit 설정</a> appeared first on <a rel="nofollow" href="https://www.bitneer.dev">bitneer.dev</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
