iptables 명령어

iptables 명령어

현재 목록 확인

$ sudo iptables -L

규칙 추가

$ sudo iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP

설명: 들어오는 패킷이 127.0.0.1 의 아이피를 가지고 있고 protocol 이 icmp 면 버려라.

 

번호 확인

$ sudo iptables -L --line-numbers

삭제

$ sudo iptables -D INPUT 3

#iptables #command

CentOS7에 Discourse 설치 및 서비스 시작하기

1. redis install

$> sudo yum install -y epel-release
$> sudo rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
$> sudo yum --enablerepo=remi update remi-release
$> sudo systemctl start redis.service
$> sudo systemctl enable redis.service
$> sudo systemctl status redis.service

status 실행 후

● redis.service - Redis persistent key-value database
   Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/redis.service.d
           └─limit.conf
   Active: active (running) since Thu 2016-06-30 16:31:27 KST; 1 weeks 3 days ago

위처럼 active 상태가 나타나면 정상 동작 중이다.

2. postgresql 설치

$> sudo yum install -y postgresql-server postgresql-contrib postgresql-libs postgresql-devel
$> sudo postgresql-setup initdb
$> sudo systemctl start postgresql
$> sudo systemctl enable postgresql
$> sudo systemctl status postgresql

postresql 도 위의 redis와 마찬가지로 active 상태가 나오면 정상동작 중이다.

3. rvm install for multi users

루비 설치가 필요하다. 상세 내용은 예전 포스팅을 참조한다.

http://weeppp.com/?p=93

$> sudo gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
$> sudo curl -sSL https://get.rvm.io | sudo bash -s stable

rvm 그룹에 자신의 user id를 추가한다.

$> sudo vi /etc/group
...

rvm:x:505:user,user2,user3

 

logout 후 재접속 한다. 환경 설정 리로드를 위함

# restart
$> type rvm | head -n 1
rvm is a function

위의 내용이 출력되면 정상 설치

$> rvm install 2.3.1
$> rvm use 2.3.1@newgemset --create --default
$> gem update
$> gem install bundler

4. Node install

$> curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
# exit the terminal and open it again

logout 후에 다시 재접속한다.

$> nvm install 6.2.0
$> nvm alias default 6.2.0
$> npm install -g svgo phantomjs-prebuilt

 

5. discourse install

하단 링크 참조

https://github.com/discourse/discourse/blob/master/docs/DEVELOPER-ADVANCED.md

필요한 라이브러리들 설치

$> sudo yum install -y expect git-core ImageMagick* advancecomp gifsicle jhead jpegoptim optipng pngcrush pngquant

 

db 설정

여기서는 development, production database를 모두 만든다.

하단 ‘password’ 부분에 원하는 암호를 입력한다.

$> whoami > /tmp/username
$> sudo su postgres
$> createuser --createdb --superuser -Upostgres $(cat /tmp/username)
$> psql -c "ALTER USER $(cat /tmp/username) WITH PASSWORD 'password';"
$> psql -c "create database discourse_development owner $(cat /tmp/username) encoding 'UTF8' TEMPLATE template0;"
$> psql -c "create database discourse_test owner $(cat /tmp/username) encoding 'UTF8' TEMPLATE template0;"
$> psql -c "create database discourse owner $(cat /tmp/username) encoding 'UTF8' TEMPLATE template0;"
$> psql -d discourse_development -c "CREATE EXTENSION hstore;"
$> psql -d discourse_development -c "CREATE EXTENSION pg_trgm;"
$> psql -d discourse -c "CREATE EXTENSION hstore;"
$> psql -d discourse -c "CREATE EXTENSION pg_trgm;"
$> exit

 

discourse 설치

$> git clone https://github.com/discourse/discourse.git ~/discourse
$> cd ~/discourse
$> bundle install
$> bundle exec rake db:create db:migrate db:test:prepare

개발 모드로 실행 확인

$> bundle exec sidekiq -d -L log/sidekiq.log -C config/sidekiq.yml
$> thin start

 

이제 배포판을 설치해보려고 한다.

실제 이 포스팅은 production 모드 설치를 위해 쓰고 있는 것이므로 지금부터가 진짜다;;

 

설정 파일 생성

$> cd $(discourse_home)/config
$> cp discourse_defaults.conf discourse.conf

설정파일 수정

$> vi discourse.conf
# username accessing database
db_username = user_id

# password used to access the db
db_password = password

...

# hostname running the forum
hostname = "weeppp.com"

...

# enable if you really need to serve assets in prd
serve_static_assets = true

sidekiq 설정

$> vi sidekiq.yml
---
:pidfile: tmp/pids/sidekiq.pid
staging:
:concurrency: 10
production:
:concurrency: 20
development:
:concurrency: 10
:queues:
- [critical,4]
- [default, 2]
- [low]

production mode db생성

$> cd ~/discourse
$> RAILS_ENV=production bundle exec rake db:create db:migrate db:test:prepare

nil:class 에러가 나오던데 별 문제는 아니었던 것 같다.

관련 포스트가 meta.discourse.org 에 있었던 것 같으니 찾아보길 바란다.

sidekiq production mode 실행

$> bundle exec sidekiq -d -L log/sidekiq.log -C config/sidekiq.yml -e production

관리자 테스트 계정 생성

$> cd ~/discourse
$> cp db/api_test_seeds.rb db/seeds.rb
$> RAILS_ENV=production bundle exec rake db:seed
$> RAILS_ENV=production rails c
> u = User.last
> u.activate
> u.save
> quit

80포트로 실행하기 위해서는 root 권한이 필요한데 이때 postgresql 인증 문제가 발생한다.

postgresql 인증설정 변경이 필요하다. 하단 링크 참조

http://stackoverflow.com/questions/18664074/getting-error-peer-authentication-failed-for-user-postgres-when-trying-to-ge

postgresql 설정 변경

$> sudo /var/lib/pgsql/data/pg_hba.conf
local   all             postgres                                peer

Should be

local   all             postgres                                md5
$> sudo systemctl restart postgresql

에셋 빌드

$> RAILS_ENV=production bundle exec rake assets:precompile

thin 서버 실행

$> rvmsudo rails server thin -b 0.0.0.0 -p 80 -e production

 

 

 

CentOS 7에 php7+Codeigniter(ciboard)+nginx 설치하기

  • ISO 파일 다운로드

http://ftp.daumkakao.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso

  • MariaDB 설치

    • 어플 설치
      $ sudo yum install -y mariadb mariadb-server
    • MariaDB 실행
      $ sudo systemctl start mariadb
      
    • DB 초기 설정
      $ sudo mysql_secure_installation
      mysql_secure_installation prompts:
      Enter current password for root (enter for none):
      OK, successfully used password, moving on...
      
      Setting the root password ensures that nobody can log into the MariaDB
      root user without the proper authorisation.
      
      New password: password
      Re-enter new password: password
      Password updated successfully!
      Reloading privilege tables..
       ... Success!
      
    • mariaDB 서비스 등록
      $ sudo systemctl enable mariadb
    • db 인코딩 설정
        • client side
      $ sudo vi /etc/my.cnf.d/client.cnf
      [client]
      default-character-set=utf8
        • server side
      $ sudo vi /etc/my.cnf.d/server.cnf
      [mysqld]
      collation-server = utf8_unicode_ci
      init-connect='SET NAMES utf8'
      character-set-server = utf8
        • 재실행
      $ sudo systemctl restart mariadb
  • Nginx 설치

      • 저장소 설치
    $ sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    
    
      • nginx 설치
    $ sudo yum install nginx
      • nginx 실행 및 서비스 등록
    $ sudo systemctl start nginx
    $ sudo systemctl enable nginx
  • PHP 7 설치

    yum install -y epel-release
    rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
    yum --enablerepo=remi update remi-release
    yum --enablerepo=remi-php70 install -y php php-fpm php-mysql php-gd php-common php-cli php-json php-opcache php-devel php-imagick
      • php 설정
    $ sudo vi /etc/php.ini
    
    cgi.fix_pathinfo=0
      •  php fpm 설정
    $ sudo vi /etc/php-fpm.d/www.conf
    listen = /var/run/php-fpm/php-fpm.sock
    
    listen.owner = nginx
    listen.group = nginx
    
    user = nginx
    group = nginx
    
  • Nginx 설정

    $  sudo vi /etc/nginx/nginx.conf
    server {
     listen 80 default_server;
     listen [::]:80 default_server;
     server_name server_domain_name_or_IP;
     root /usr/share/nginx/html;
     index index.php index.html;
    
     # Load configuration files for the default server block.
     include /etc/nginx/default.d/*.conf;
    
     location / {
       try_files $uri $uri/ /index.php?/$request_uri;
     }
    
     error_page 404 /404.html;
     location = /40x.html {
     }
    
     error_page 500 502 503 504 /50x.html;
     location = /50x.html {
     }
    
     location ~ .php$ {
       fastcgi_split_path_info ^(.+.php)(/.+)$;
       fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
     }
     location ~ /.ht {
       deny all;
     }
    }
      • Nginx 재실행
    $ sudo systemctl restart nginx

 

결과화면

설치 결과화면
결과화면

 

 

리눅스에서 git ssh접속시 password 입력하지 않기

예전 포스팅에서 git 서버 구축하고 ssh로 접속하는 것 까지 포스팅했었다.

그런데 linux에서 git를 커맨드로 직접 다루려니 비번을 자꾸 물어봐서 너무 스트레스를 받았다.

그래서 ssh를 패스워드 대신 공개키 기반 인증으로 사용하기로 했다.

1. 클라이언트 설정(리눅스)

$ ssh-keygen -t rsa -b 4096 -C "weep@weeppp.com"

본인의 이메일을 입력하고 위 명령 실행하면 키가 생성되는데

첫번째 입력은 key의 이름이고, 두번째는 비밀번호 설정 유무인데, 입력안할꺼면 엔터치면 된다.

git.key  git.key.pub

필자는 git.key라는 이름으로 생성했더니 이렇게 두개의 파일이 생성되었다.

첫번째는 개인키고, 두번째 pub 확장자 파일은 public key, 즉 공개키이다.

두개의 파일을 ~/.ssh 폴더에 위치시킨다. 폴더가 없으면 생성한다.

 

다음으로 ssh-agent 실행유무를 확인하자.

$ eval $(ssh-agent -s)
  Agent pid 2933

위처럼 pid가 나온다면 정상적으로 실행중인 것이다.

$ ssh-add ~/.ssh/git.key

위의 명령이 정상적으로 실행되었다면 이제 password대신 rsa키를 이용해서 ssh접속이 가능해진 것이다.

 

2. 서버 설정

클라이언트의 설정만으로는 물론 서버에 접속이 가능할리가 없다.

클라이언트에서 생성한 공개키를 서버에 복사하자.

여기서는 귀찮으니까 vi를 이용해서 클립보드에 옮겼다.

$ vi ~/.ssh/git.key.pub

cat으로 해도 되고, 파일을 서버로 복사해서 “>>” 명령을 이용해서 append시켜도 되니 취향대로 한다.

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEAyKnGRx/DsvDonZQxe4r39XOxlm5BLhx+ksjEubNNq1PWL5Z5XP/96xzf7PwY6C4SXKRc/vnrgqynL4qmcWbU/qXgEqazybTp76egttjRXI7NVKOXeh02pTI67MiEJYRTxcgwP1FS1YerVnBZb79odnAVZZ0utyGU6HZIWgnEk0YL8waygHZFke1PWN+clZedtGDjhO1CfcxmDWmiWWJFtJ/DJHo3nFGP8noQy+Fm/LWSyxwvFqsL6vLi1zftC4NqMfwbvUDNXfaRFjkRdfiq1rgn4Sx/48cs2KhH2utZh5Q21wzFYdEAFAnSlDKtZDmukx/WfcrLkid+yG53Vkv0RmGBe+k1pOaa97X6WFG+7vHhYRY8anQIDie4A56MDfwGRZi0eklxXfVn2dtOKnSXLZxCMucADHJwaT0xE9ANUq7Je+jgoONsCyyDWVpPOMEVF49t4DKbEJux7Ncir0jJ4sid3u4upjar7QNZHnOLEfiOHDoJ2km4+fXizwBqwnPytmkEjbiGuxpQrymQfbcEHsXFjNhRgFTE4u3PYpRyMxaSpE7dHrfH3ZLPSjFtAh39l6Whe2hds3oNr3VwwpRJERzQERhicu6oKHP8s9r2Qlhb4dwYbbLV1Q/TuV1PcMWXUz/Z3SuKelZ9czebkkFhfJXzDDaBNEj4+9i+h1jFXqk= weep@weeppp.com

내가 생성한 공개키이다.

일단 본인의 공개키를 잘 복사해둔다.

 

여기서부터가 진짜 서버설정이다.

서버의 git user 의 홈디렉토리로 이동한다.

$ cd /home/git
$ mkdir .ssh
$ touch .ssh/authorized_keys

git홈에 .ssh 디렉토리를 만들고 공개키들을 저장하는 파일을 만든다.

이때 root로 작업했다면 소유자를 변경해주자.

$ chown -R git.git /home/git/.ssh

authorized_keys에 복사한 공개키를 넣으면 끝.

 

이제 클라이언트에서 git push나 git pull을 해보자

비밀번호를 묻지않으면 성공이다.

 

참고 사이트

MariaDB 설치 하기 for CentOS 6.4

MariaDB 설치 하기 for CentOS 6.4

mysql 버전이 5.1이어서 버전업을 마음먹었다.
그런데 5.6으로 올리느니 마리아DB로 갈아타고 싶어졌다.

자 마리아 DB를 설치하자.

1. 기존 mysql을 제거한다.

yum remove mysql mysql-server

2. 기존 mysql 디렉토리를 제거한다. 여기서는 백업을 해뒀다. 워드프레스 db를 살릴려고~

cp -rf /var/lib/mysql /var/lib/mysql_
rm -rf /var/lib/mysql

3. Maria DB의 yum설치를 위해서 repository 파일 추가를 한다.
공식사이트를 참고하자.

vi /etc/yum.repos.d/MariaDB.repo

4. 아래 내용 파일에 추가.

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

5. install MariaDB
아래 Maria-devel은 개발용이다. 필요없으면 설치하지 말자.

sudo yum install MariaDB-server MariaDB-client MariaDB-devel

6. maria db server 실행

sudo /etc/init.d/mysql restart

7. maria db 접속 확인

mysql -uroot

ps. 나처럼 기존 mysql database가 있는 경우는 아까 백업해둔 곳에서 db를 카피한다.

cp -rp /var/lib/mysql_backup/database_name /var/lib/mysql
chown -R mysql.mysql /var/lib/mysql/database_name

그대로 db사용이 가능하다. 마리아 db 설치 끝.

[python] 파이썬 2.7.6 설치 with CentOS 6.5

centos에 파이썬이 기본적으로 설치되어 있는데 버전이 2.6이다.
파이썬 2.7을 설치해보자.

파이썬 설치를 해보자.
python 2.7.6 install with CentOS 6.5

먼저 필요 라이브러리 설치

yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

wget으로 파이썬 설치파일 다운로드

wget http://python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz

xz파일이다. xz 압축을 풀기위해서 xz설치

yum install xz

압축 해제

tar xvfJ Python-2.7.6.tar.xz

폴더 이동.

cd Python-2.7.6.tar.xz

빌드하자

./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make
sudo make altinstall

파이썬 설치 완료

이제 PATH를 확인하자.

env | grep PATH

기본으로 /usr/local/bin이 /usr/bin보다 앞에 나와있다.

기존 파이썬이 설치된 디렉토리로 이동

cd /usr/bin

기존 파이썬 파일명 변경

sudo mv python python.old

리눅스 터미널에 재접속해서 python 2.7이 정상적으로 설치되었는지 확인

python
Python 2.7.6 (default, Apr 27 2015, 17:35:43)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

ruby rbenv install 2.0.0-p247 fail for Centos

rbenv 를 이용해서 ruby 2.0.0 p247을 설치할 때 에러가 발생한다. centos 6.5에서 발생했다.

해결법을 기록해둔다. 참고가 되길 바란다.

ref web site

rbenv install 2.0.0-p247

위의 명령을 실행했을 때 아래 상황 발생

problem:

BUILD FAILED

Inspect or clean up the working tree at /tmp/ruby-build.20150424111036.5089
Results logged to /tmp/ruby-build.20150424111036.5089.log

Last 10 log lines:
ossl_pkey_ec.c:821: error: for each function it appears in.)
make[2]: *** [ossl_pkey_ec.o] Error 1
make[2]: Leaving directory `/tmp/ruby-build.20150424111036.5089/ruby-2.0.0-p247/ext/openssl'
make[1]: *** [ext/openssl/all] Error 2
make[1]: *** Waiting for unfinished jobs....
installing default callback libraries
linking shared-object dl/callback.so
make[2]: Leaving directory `/tmp/ruby-build.20150424111036.5089/ruby-2.0.0-p247/ext/dl/callback'
make[1]: Leaving directory `/tmp/ruby-build.20150424111036.5089/ruby-2.0.0-p247'
make: *** [build-ext] Error 2

solution:

1. Create “patch.diff” file.
2. Copy the content below.

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 41807)
+++ ChangeLog	(revision 41808)
@@ -1,3 +1,16 @@
+Sat Jul  6 07:37:43 2013  Martin Bosslet  <Martin.Bosslet@gmail.com>
+
+	* ext/openssl/ossl_pkey_ec.c: Ensure compatibility to builds of
+	  OpenSSL with OPENSSL_NO_EC2M defined, but OPENSSL_NO_EC not
+	  defined.
+	* test/openssl/test_pkey_ec.rb: Iterate over built-in curves
+	  (and assert their non-emptiness!) instead of hard-coding them, as
+	  this may cause problems with respect to the different availability
+	  of individual curves in individual OpenSSL builds.
+	  [ruby-core:54881] [Bug #8384]
+
+	  Thanks to Vit Ondruch for providing the patch!
+
 Sat Jul  6 07:12:39 2013  Martin Bosslet  <Martin.Bosslet@gmail.com>
 
 	* test/openssl/test_x509crl.rb: Remove unused variable.
Index: ext/openssl/ossl_pkey_ec.c
===================================================================
--- ext/openssl/ossl_pkey_ec.c	(revision 41807)
+++ ext/openssl/ossl_pkey_ec.c	(revision 41808)
@@ -762,8 +762,10 @@
                 method = EC_GFp_mont_method();
             } else if (id == s_GFp_nist) {
                 method = EC_GFp_nist_method();
+#if !defined(OPENSSL_NO_EC2M)
             } else if (id == s_GF2m_simple) {
                 method = EC_GF2m_simple_method();
+#endif
             }
 
             if (method) {
@@ -817,8 +819,10 @@
 
             if (id == s_GFp) {
                 new_curve = EC_GROUP_new_curve_GFp;
+#if !defined(OPENSSL_NO_EC2M)
             } else if (id == s_GF2m) {
                 new_curve = EC_GROUP_new_curve_GF2m;
+#endif
             } else {
                 ossl_raise(rb_eArgError, "unknown symbol, must be :GFp or :GF2m");
             }
Index: test/openssl/test_pkey_ec.rb
===================================================================
--- test/openssl/test_pkey_ec.rb	(revision 41807)
+++ test/openssl/test_pkey_ec.rb	(revision 41808)
@@ -7,28 +7,28 @@
     @data1 = 'foo'
     @data2 = 'bar' * 1000 # data too long for DSA sig
 
-    @group1 = OpenSSL::PKey::EC::Group.new('secp112r1')
-    @group2 = OpenSSL::PKey::EC::Group.new('sect163k1')
-    @group3 = OpenSSL::PKey::EC::Group.new('prime256v1')
+    @groups = []
+    @keys = []
 
-    @key1 = OpenSSL::PKey::EC.new
-    @key1.group = @group1
-    @key1.generate_key
+    OpenSSL::PKey::EC.builtin_curves.each do |curve, comment|
+      group = OpenSSL::PKey::EC::Group.new(curve)
 
-    @key2 = OpenSSL::PKey::EC.new(@group2.curve_name)
-    @key2.generate_key
+      key = OpenSSL::PKey::EC.new(group)
+      key.generate_key
 
-    @key3 = OpenSSL::PKey::EC.new(@group3)
-    @key3.generate_key
-
-    @groups = [@group1, @group2, @group3]
-    @keys = [@key1, @key2, @key3]
+      @groups << group
+      @keys << key
+    end
   end
 
   def compare_keys(k1, k2)
     assert_equal(k1.to_pem, k2.to_pem)
   end
 
+  def test_builtin_curves
+    assert(!OpenSSL::PKey::EC.builtin_curves.empty?)
+  end
+
   def test_curve_names
     @groups.each_with_index do |group, idx|
       key = @keys[idx]

3. Create “fedora.configure” file
4. Copy the content below.

#!/bin/sh
patch -p0 -i /tmp/patch.diff
exec ./configure "$@"

5. Execute this command.

RUBY_CONFIGURE=/home/user/fedora-configure rbenv install 2.0.0-p247

6. check ruby version.

rbenv versions

RVM install for multi user

How to install RVM for multi user.

RVM 설치하기
참고:

다중사용자 설정

sudo curl -sSL https://get.rvm.io | sudo bash -s stable

아래 내용처럼 나올 경우

Downloading https://github.com/rvm/rvm/archive/1.26.11.tar.gz
Downloading https://github.com/rvm/rvm/releases/download/1.26.11/1.26.11.tar.gz.                                    asc
gpg: Signature made Tue 31 Mar 2015 06:52:13 AM KST using RSA key ID BF04FF17
gpg: Can't check signature: No public key
Warning, RVM 1.26.0 introduces signed releases and automated check of signatures                                     when GPG software found.
Assuming you trust Michal Papis import the mpapis public key (downloading the si                                    gnatures).

GPG signature verification failed for '/usr/local/rvm/archives/rvm-1.26.11.tgz'                                     - 'https://github.com/rvm/rvm/releases/download/1.26.11/1.26.11.tar.gz.asc'!
try downloading the signatures:

    sudo gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A170                                    3113804BB82D39DC0E3

or if it fails:

    command curl -sSL https://rvm.io/mpapis.asc | sudo gpg2 --import -

the key can be compared with:

    https://rvm.io/mpapis.asc
    https://keybase.io/mpapis

공개키가 없다고 하니 공개키를 받아줘야할 듯.
콘솔 창에 나온데로 실행한다.

sudo gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

그리고 다시 첫번째 명령 실행

rvm이 잘 설치되었는지 아래 명령을 통해 확인한다.

type rvm | head -n 1

rvm is a function
이라고 나오면 정상

rvm을 사용할 계정을 rvm group에 포함시킨다.

sudo vi /etc/group

...

rvm:x:505:user,user2,user3

이제 rvm을 사용할 계정으로 다시 로그인 한다.
로그인을 다시 하는 이유는 rvm이 로그인 시간정보를 가지고 유효한 유저인지 판별하기 때문인 듯 하다. 공식사이트에서 확인해보시길.

설치 가능 목록 확인

rvm list known

2.0.0 설치

rvm install 2.0.0

여러 유저가 사용하므로 ruby에서 참조하는 gem을 다르게 할 수 있다.

rvm use 2.0.0@newgemset --create --default

newgemset 이라는 gem set을 만들어서 기본으로 사용하라는 명령이다. 이름은 마음대로 바꾸자.

나만의 Git 서버 설정하기

나만의 기트 서버를 설치해보자. ssh와 연동하기

 

Git server 설정하기.

 

centos 에 설치하기

git server 의존 패키지 설치

yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel

git 설치

yum install git-core

리눅스에 git 계정 만들기

adduser git
passwd git
cd /opt
mkdir git
chown git.git git
cd /opt/git
sudo vi ReadMe

아래 내용을 위의 ReadMe파일에 넣어두고 앞으로 쭉 사용하자~

#create repository
git init --bare --shared my_project.git
chown -R git.git my_project.git

모든 유저들이 서버에 저장할 때 git계정을 이용할 수 있도록 설정해준다.

sudo vi /etc/passwd

위 명령 후 아래 내용을 찾는다.

git:x:502:503::/home/git:/bin/bash
which git-shell

명령으로 git-shell 위치를 확인한다.

/bin/bash 를 위에 나온 결과값(여기서는 /usr/bin/git-shell)로 변경한다

변경 후 부터는 git 계정은 Git 저장소에 Push하고 Pull하는 것만 가능하고 리눅스의 쉘에는 접근할 수 없다.

——– 샘플 프로젝트 설정 ——–

서버 설정이 끝났으니 샘플 프로젝트를 하나 만들어보자.

방금 만들었던 ReadMe를 읽고 아래 명령을 처보자.

cd /opt/git
sudo git init --bare --shared my_project.git
sudo chown -R git.git my_project.git

클리이언트에서 나의 git 서버와 연동을 해본다.

SourceTree를 사용할 경우
“복제 / 생성” -> “소스 경로 / URL” 에 아래 값 입력

ssh://git@weeppp.com/opt/git/my_project.git

포트가 다를 경우
ssh://git@weeppp.com:[PORT]/opt/git/my_project.git

이제 git를 이용하면 된다.