'쓸만한지식'에 해당되는 글 81건
- 2014.04.01 GitLab 아바타 이미지 안나올때
- 2014.03.31 이클립스로 GitLab 연결하기 (egit 이용) 2
- 2014.03.27 Ubuntu GitLab 설치하기 with apache, mysql
- 2014.03.18 Linux 서버에서 java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment 에러날때 1
- 2014.02.18 jetty 7.x 에서 JNDI Oracle Datasource 설정하기
GitLab 아바타 이미지 안나올때
참고로 나는 GitLab + Apache 환경에서 돌리고 있다.
아바타 이미지가 안나오는 원인은 뭐 여러가지 있겠으나, 나 같은 경우는 이미지 요청 URL 을 아파치가 처리하지 않아서 아바타 이미지가 안보였다.
※ 아바타 이미지 URL : /uploads/user/avatar/xxxx 요런 URL 로 요청한다.
아무튼 apache 설정을 살짝 수정해 줘야된다.
나는 GitLab을 쌩 도메인(ex) http://stove99.tistory.com)으로 설치하지 않고 서브디렉토리 형식으로 설치했다. (http://stove99.tistory.com/git)
요렇게 설치하는건 이전 포스트에 작성했었다.
아무튼 이전 포스트 내용을 기반으로 쪽바로 수정을 할려면 /etc/apache2/sites-enabled/git 파일을 수정하면 된다.
파일내용
ProxyPass /git/uploads ! <Location /git/> ProxyPass http://127.0.0.1:9292/git/ ProxyPassReverse http://127.0.0.1:9292/git/ </Location>
<Location> 바깥쪽에 /git/uploads URL 에 대해서는 아파치에서 처리할거라고 ProxyPass /git/uploads ! 요런 설정을 추가해 주면 된다.
끝~~
'쓸만한지식' 카테고리의 다른 글
Jetty 로 개발할때 org.eclipse.jetty.util.Utf8Appendable$NotUtf8Exception: Not valid UTF8! 익셉션 처리 (0) | 2014.05.14 |
---|---|
Oracle Client 다운로드 받기 (0) | 2014.04.11 |
이클립스로 GitLab 연결하기 (egit 이용) (2) | 2014.03.31 |
Ubuntu GitLab 설치하기 with apache, mysql (0) | 2014.03.27 |
Linux 서버에서 java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment 에러날때 (1) | 2014.03.18 |
이클립스로 GitLab 연결하기 (egit 이용)
동영상 중간에 ssh 로 연결할때 연결 에러나는데 왠지 egit 버그 같기도 하다. 우째 해결하는지 알아내면 다음 포스팅에 작성하겠다.
ssh 로 연결이 아예 안되는게 아니라 어째저째 하다 보면 연결되긴 된다. -_-
ssh 로 연결할려면 ssh key 등록하고 요렇게 설정하면 된다.
Authentication 쪽 User 에는 git 이고 패스워드는 입력안해도 된다.
아무튼 동영상 맹근거 *(-_-)*
화질 720P 로 해서 전체화면으로 하면 잘 보인다.
'쓸만한지식' 카테고리의 다른 글
Oracle Client 다운로드 받기 (0) | 2014.04.11 |
---|---|
GitLab 아바타 이미지 안나올때 (0) | 2014.04.01 |
Ubuntu GitLab 설치하기 with apache, mysql (0) | 2014.03.27 |
Linux 서버에서 java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment 에러날때 (1) | 2014.03.18 |
jetty 7.x 에서 JNDI Oracle Datasource 설정하기 (0) | 2014.02.18 |
Ubuntu GitLab 설치하기 with apache, mysql
svn만 주구장창 써오다가 어느날 문득 시대에 너무 뒤처지는 느낌이라 git 를 써보고 싶었다. (심지어 회사에서는 cvs 를 쓴다)
그냥 개인적으로 로컬 git 리포지토리만 썼었는데 팀원이 쪼매 생기는 바람에 원격 리포지토리도 맹글 필요가 생겼졌다.
이것저것 알아봤는데 Window 용 git 서버도 있지만, 왠지 매우 있어보이는 GitLab 을 써보고 싶어서 Ubuntu 에다 설치해 보기로 했다.
먼저 기존에 Ubuntu 서버가 있으면 좋고, 아니면 컴퓨터를 하나 받아서 간지나게 전용 서버를 맹글어도 되고, 아니면 VirtualBox 에다 Ubuntu를 깔아도 된다.
설치과정중 이미 설치된 것들은 과감하게 스킵해도 될것같다.
설치할때 참고한 URL
공식 설치 가이드 : https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md
웹D 라는 분의 훌로구 : http://webdir.tistory.com/224
설치한 Ubuntu 버전 : Ubuntu 12.04.4 LTS
뭐 내용은 참고한 URL에 있는 내용과 거의 비슷하다.
단지 나는 개인적인 여건상 git.example.com 과 같이 간지나는 URL 을 쓸 수가 없어서
www.example.com/git 요런식으로 기존 도메인의 서브 디렉토리로 접근할 수 있도록 하는점만 다를뿐이다.
사실 이것 때문에 살짝 삽질을 많이 하긴 했다.
아무튼 설치하는게 apt-get install 요렇게 딸랑하는 설치에 비교하면 무척 번거롭지만 설치해볼만한 가치는 있을것 같다.
자연스럽게 통합된 Git Server + Issue + Wiki 를 가질 수 있게된다.
최신 상태로 패키지 업데이트(해도 별로 손해 볼건 없을것 같으니까 일단 함)
sudo apt-get update -y sudo apt-get upgrade -y
설치과정에 필요한 패키지 설치
sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate
Git 설치
# Git 버전은 1.7.10 이상 버전이 설치되야 한다고 한다. # Ubuntu 에서 그냥 쌩으로 apt-get 으로 설치하면 1.7.9 버전이 설치된다. # 혹시 최신버전이 설치되 있을 수 있을 수 있으니까 git --version 으로 한번 확인해 보고 없으면 아래 과정을 따라하면 된다. # ppa 추가 # add-apt-repository 명령을 한번 해보고 없으면 python-software-properties 추가 설치 후 수행 sudo apt-get install -y python-software-properties sudo add-apt-repository ppa:git-core/ppa sudo apt-get update # git 설치 sudo apt-get install -y git-core
루비 설치
# git 과 마찬가지로 apt-get 으로 ruby 를 설치하면 옛날 후진버전으로 설치가 된다. # rvm 같은 걸로 최신버전을 손쉽게 설치할 수 있지만 공식문서에서는 rvm 으로 설치하는걸 별로 추천하지는 않았다. # 루비 최신 소스를 내려받아서 컴파일 해서 설치하기 # 루비 최신 버전은 ftp://ftp.ruby-lang.org/pub/ruby/ 요기가서 보면 확인할 수 있다. # 최신 버전에 맞게 아래 url을 적당하 바꿔서 설치하면 된다. mkdir /tmp/ruby && cd /tmp/ruby curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.gz | tar xz cd ruby-2.1.1 ./configure --disable-install-rdoc #쪼매 시간이 걸린다. make sudo make install sudo gem install bundler --no-ri --no-rdoc
사용자 추가
# 왠만하면 사용자 이름은 git 으로 하길 바란다. 설정 파일들 보니까 git 이 아니면 상당히 설치하기가 힘들어 질것같다. sudo adduser --disabled-login --gecos 'GitLab' git
GitLab Shell 설치
# 대충 보니까 GitLab WebUI 에서 요걸 호출해서 뭘 하는것 같다. 설치하자. # https://gitlab.com/gitlab-org/gitlab-shell 에 가보면 최신버전을 확인할 수 있다. # 최신버전 확인 후 아래 url 들을 눈치껏 적당히 바꿔주면 된다. cd /home/git/ sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-shell.git -b v1.9.1 cd /home/git/gitlab-shell # 설정 sudo -u git -H cp config.yml.example config.yml # 요파일에서 gitlab_url 어쩌고 하는 부분을 찾아 접속할 url을 써주면 된다. # ex) gitlab_url: "http://stove99.tistory.com/git" 도메인이 없으면 http://127.0.0.1/git 요런식으로 ip로 해도 상관없다. sudo -u git -H vi config.yml # GitLab Shell 설치 sudo -u git -H ./bin/install
mysql 설치
# 기존에 mysql 이 설치되 있다면 넘어가도 좋지만 # mysql-client 요거랑 libmysqlclient-dev 요거는 설치 안됐을 수도 있으니깐 꼭설치! # 나는 기존에 mysql 이 설치되 있어서 과감히 뛰어넘었지만 # mysql-client, libmysqlclient-dev 요거 설치안하는 바람에 뒤 과정에서 에러나서 삽질했음 # mysql 설치중 설정할 root 비밀번호 물어보는데 적당한 걸로 설정하면 됨. sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev #설치 완료후 mysql 접속 mysql -u root -p # USER 생성 CREATE USER 'git'@'localhost' IDENTIFIED BY '원하는 비밀번호'; # DB 생성 CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; # DB 권한 설정 GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'git'@'localhost'; exit # 방금 추가한 mysql 계정 접속 쪽바로 잘되나 확인 sudo -u git -H mysql -u git -p -D gitlabhq_production exit
GitLab 설치
# GitLab-shell 과 마찬가지로 # https://gitlab.com/gitlab-org/gitlab-ce.git 요기가서 최신버전 확인해서 URL 눈치껏 바꿔준다. # 현재 최신버전은 6.7.2 cd /home/git sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-7-stable gitlab cd /home/git/gitlab #설정(할게 쫌 됨) sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml # which git 으로 git 위치 확인 # host: localhost => host: stove99.tistory.com (자신의 환경에 맞게 도메인이나 ip로 변경) # relative_url_root: /gitlab 주석 제거 후 # relative_url_root: /git 로 변경 (나는 stove99.tistory.com/git 으로 접속하고 싶으니깐) # git: 아래쪽 bin_path: /usr/bin/git 이 which git 해서 알아낸 설치경로랑 똑같은지 확인 sudo -u git -H vi config/gitlab.yml # ENV['RAILS_RELATIVE_URL_ROOT'] = "/gitlab" 주석해제 후 # ENV['RAILS_RELATIVE_URL_ROOT'] = "/git" 으로 변경 # listen 어쩌고 하는 두줄 주석처리 후 listen "127.0.0.1:9292" # 9292 는 내가 해본거고 다른포트 쓸려면 다른포트 적어주면 됨. sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb # config.relative_url_root = "/gitlab" 주석제거 후 # config.relative_url_root = "/git" 로 변경 sudo -u git vi config/application.rb sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb # 기타 잡다구리 설정 sudo -u git -H mkdir /home/git/gitlab-satellites sudo -u git -H mkdir tmp/pids/ sudo -u git -H mkdir tmp/sockets/ sudo chmod -R u+rwX tmp/pids/ sudo chmod -R u+rwX tmp/sockets/ sudo -u git -H mkdir public/uploads sudo chmod -R u+rwX public/uploads sudo -u git -H git config --global user.name "Stove" sudo -u git -H git config --global user.email "stove@naver.com" sudo -u git -H git config --global core.autocrlf input
mysql 접속설정 및 초기 데이터 입력
sudo -u git cp config/database.yml.mysql config/database.yml # production: 아래에 password: "비밀번호" 설정 # 비밀번호는 mysql 에서 새로 추가한 git 계정 비밀번호를 적어주면 된다. sudo -u git vi config/database.yml sudo -u git -H chmod o-rwx config/database.yml # 시간 살짝 걸림 sudo -u git -H bundle install --deployment --without development test postgres aws # 초기 데이터 입력 # 명령어 입력하면 뭐라고 물어보는데 yes 입력 후 엔터치면 됨. sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
GitLab 서비스 등록및 시작후로그램 추가
# service gitlab start 요래 하기 위한 스크립트 생성 sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab # 시작할때 start 되도록 처리 sudo update-rc.d gitlab defaults 21 # 뭐하는건진 잘 모름 기냥 했음. sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
설정이 쪽바로 됐나 확인(url, git path 같은거 맞는지 확인)
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
GitLab 서비스 시작
sudo service gitlab start
Compile assets (뭐하는건지 잘 모름, 있길래 그냥 했음)
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
여기까지하면 일단 GitLab 설치는 다 했다.
이제 아파치랑 연동해서 웹으로 접근할 수 있도록 해야 한다.
아파치 설치 안돼 있으면 설치
sudo apt-get install apache
passenger 설치(자바로 치면 mod_jk 같은거 같다)
sudo apt-get install apache2-prefork-dev libapr1-dev libaprutil1-dev sudo gem install passenger --no-rdoc --no-ri # 아래 명령어 입력하면 뭐 물어보는거 같긴한데 내 경우 화면이 깨져서 뭔소린지 몰르겠다. # 그냥 계속 엔터 치면 된다. # 컴파일 끝나고 스크롤 살짝 올려보면 어째어째 설정하라고 설명으로 알려줌 # 여기서 which ruby 로 ruby 경로 알아내서 PassengerRuby 부분에 있는 경로랑 같은지 확인바람 sudo passenger-install-apache2-module # passenger 모듈 apache에 추가 sudo vi /etc/apache2/mods-available/passenger.load #파일내용(자신의 경로에 맞는지 확인 바람, 위에서 설명한대로 passenger 설치과정에서 요런거 다 알려줌.) LoadModule passenger_module /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.40/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.40 PassengerDefaultRuby /usr/local/bin/ruby </IfModule> #저장후 모듈 enable sudo a2enmod passenger
proxy, proxy_http mod 활성화
sudo a2enmod proxy sudo a2enmod proxy_http
gitlab 사이트 등록
sudo ln -s /home/git/gitlab/public/ /var/www/git sudo vi /etc/apache2/sites-available/git # 파일내용 ProxyPass /git/uploads ! #아바타 이미지 나오게 /git/uploads 요청은 apache에서 처리 <Location /git/> ProxyPass http://127.0.0.1:9292/git/ ProxyPassReverse http://127.0.0.1:9292/git/ </Location>
site 활성화
sudo a2ensite git
apache restart
sudo service apache2 restart
마지막으로 gitlab에서 관리자가 계정을 생성하면 계정 email 로 비밀번호를 발송하는데 요것 때문에 메일서버도 필요하다.
메일서버 설치방법은 요기 참고 : http://webdir.tistory.com/227
※ 설치하고 이것저것 만져보니 쪼금 귀찮아 지긴 하지만, 굳이 메일서버는 안깔아도 되긴된다.
※ 사용자 계정 생성후 다시 편집 화면으로 들어가면 관리자가 임의로 비밀번호를 설정할 수 있고
※ 추가된 사용자가 로그인 했을때 비밀번호를 변경하게 시킨다.
요렇게 해주면 모든 설정이 끝난다.
별탈없이 무난하게 설치가 다 끝났다면
http://stove99.tistory.com/git 으로 접속해 보면 뽓 하고 접속이 된다.
ID : root
password : 5iveL!fe
접속해서 이것저것 해보자.
GitLab 사용법은 다음 기회에~~
'쓸만한지식' 카테고리의 다른 글
GitLab 아바타 이미지 안나올때 (0) | 2014.04.01 |
---|---|
이클립스로 GitLab 연결하기 (egit 이용) (2) | 2014.03.31 |
Linux 서버에서 java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment 에러날때 (1) | 2014.03.18 |
jetty 7.x 에서 JNDI Oracle Datasource 설정하기 (0) | 2014.02.18 |
java.lang.NoSuchMethodError: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext; 에러날때 (0) | 2014.02.14 |
Linux 서버에서 java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment 에러날때
개발환경인 윈도우에서는 쌩쌩 잘 돌아가던게 리눅스 서버에 올리고 이것저것 해 보다보니
java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment 요런 에러가 났다.
처음에는 JDK 버전이 후져서 그런가 했더니, 알고보니 리눅스 환경 때문에 나는 에러 같았다.(정확히는 잘 모름. 영어가 후달려서)
나의 경우 Thumbnailator 라는 라이브러리로 이미지 썸네일을 맹글었는데 요기서 에러가 발생했다.
아무튼 리눅스 서버든 유닉스 서버든 java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment 요게 뽀잉 뜰때 에러를 해결할려면
시스템 프로퍼티 java.awt.headless 요걸 true 로 설정해 주면 된다.
톰캣같은 경우는 catalina.sh 파일 제일 위에다 요렇게 추가 시키고 ps -eaf | grep java 로 확인해 보면 -Djava.awt.headless=true 요렇게 추가돼 있다.
CATALINA_OPTS="-Djava.awt.headless=true"
제우스 같은 경우는 (내가 배포해야 되는 WAS 가 제우스기 때문에 -_-)
config 디렉토리 디벼보면 JEUSMain.xml 파일이 있는데 요걸 바로 수정해 주거나 아니면 webadmin 을 이용해서 수정해 주면 된다.
<jeus-system xmlns="http://www.tmaxsoft.com/xml/ns/jeus"> <node> ... ... <engine-container> <name>testContainer</name> <id>121</id> <base-port>11011</base-port> <command-option>-Xms256m -Xmx512m -Djava.awt.headless=true</command-option> <engine-command> <type>servlet</type> <name>test</name> </engine-command> <sequential-start>true</sequential-start> </engine-container> ... ... </jeus-system>
죠렇게 command-option 에다 추가할것들 추가해 주거나, webadmin 화면에서 할려면 요렇게 해도 결과적으로는 똑같다.
※ 설정을 바꿨으면 WAS 를 리스탓트 해줘야 된다.
리스탓트 후 다시 해보면 기가 막히게 다시 잘된다. 잇힝
'쓸만한지식' 카테고리의 다른 글
이클립스로 GitLab 연결하기 (egit 이용) (2) | 2014.03.31 |
---|---|
Ubuntu GitLab 설치하기 with apache, mysql (0) | 2014.03.27 |
jetty 7.x 에서 JNDI Oracle Datasource 설정하기 (0) | 2014.02.18 |
java.lang.NoSuchMethodError: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext; 에러날때 (0) | 2014.02.14 |
Eclipse juno 툴바에 안드로이드 관련 버튼이 없을때 (2) | 2013.06.20 |
jetty 7.x 에서 JNDI Oracle Datasource 설정하기
먼저 Datasource 를 설정하기 위해 당연히 WEB-INF/lib 에 오라클 jdbc 드라이버 jar 파일이 들어가 있어야 된다.
JNDI 설정하기
1. WEB-INF/jetty-web.xml 파일 추가
jetty-web.xml
<?xml version="1.0"?> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> <Configure class="org.eclipse.jetty.webapp.WebAppContext"> <New class="org.eclipse.jetty.plus.jndi.Resource"> <Arg></Arg> <Arg>JNDI 이름</Arg> <Arg> <New class="oracle.jdbc.pool.OracleConnectionPoolDataSource"> <Set name="URL">jdbc:oracle:thin:@아이피:포트:디비이름</Set> <Set name="User">아이디</Set> <Set name="Password">비밀번호</Set> </New> </Arg> </New> </Configure>
이것저것 찾아보니 요렇게 설정한 다음에 web.xml 파일에 <resource-ref> 부분을 추가해 주라고 하던데 테스트 해보니 굳이 추가 안해줘도 된다.
2. JSP 에서 쪽바로 되는지 테스트
<%@page import="java.sql.ResultSet"%> <%@page import="java.sql.Connection"%> <%@page import="javax.sql.DataSource"%> <%@page import="javax.naming.InitialContext"%> <%@page import="javax.naming.Context"%> <% Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("JNDI 이름"); // 이름을 myds 로 설정 했다면 ctx.lookup("myds"); 요렇게 // 이름을 jdbc/myds 로 설정 했다면 ctx.lookup("jdbc/myds"); 요렇게 lookup 하면된다. Connection conn = ds.getConnection(); ResultSet rs = conn.prepareStatement("select sysdate from dual").executeQuery(); while( rs.next() ){ out.print(rs.getString("sysdate")); } %>
※ JNDI 트리 확인해 보기
package com.tistory.stove99; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NameClassPair; import javax.naming.NamingEnumeration; import javax.naming.NamingException; public class JNDIUtil { public final static boolean INCREASE = true; public final static boolean DECREASE = false; private int level = 0; private Context context = null; public JNDIUtil() throws NamingException{ context = new InitialContext(); } public void print(){ print(""); } public void print(String name){ try{ print(context.list(name), name); }catch (NamingException e){} } private void print(NamingEnumeration pairs, String parent) throws NamingException{ while (pairs.hasMoreElements()) { NameClassPair pair = (NameClassPair)pairs.nextElement(); print(pair); indent(JNDIUtil.INCREASE); print((parent.length() == 0) ? pair.getName() : parent + "/" + pair.getName()); indent(JNDIUtil.DECREASE); } } private void print(NameClassPair entry){ for (int i = 0; i < level; i++) { System.out.print(" "); } System.out.println("-->" + entry); } private void indent(boolean increase){ if(increase) level += 4; else level -= 4; } }
JSP 쪽에서 요 클래스를 땡겨다 실행해 보면 콘솔창에서 JNDI 구조를 확인해 볼 수 있다.
<%@page import="com.tistory.stove99.JNDIUtil"%> <% new JNDIUtil().print(); %>
'쓸만한지식' 카테고리의 다른 글
Ubuntu GitLab 설치하기 with apache, mysql (0) | 2014.03.27 |
---|---|
Linux 서버에서 java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment 에러날때 (1) | 2014.03.18 |
java.lang.NoSuchMethodError: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext; 에러날때 (0) | 2014.02.14 |
Eclipse juno 툴바에 안드로이드 관련 버튼이 없을때 (2) | 2013.06.20 |
Windows 8 에서 Android SDK Manager 및 AVD Manager 가 실행이 안될때 (5) | 2013.06.20 |