2017년 3월 30일 목요일
2017년 3월 29일 수요일
[MS-SQL] Mssql Cursor(커서) 사용하기 2 - (mssql 커서(cursor) 응용)
1. Cursor(커서) 를 이용한 결과 값 출력
- USERTABLE 의 SELECT 값을 CURSOR 을 이용하여 출력을 하는데 이때, PRINT 함수를
이용하여 메시지로 꾸며서 출력을 하겠습니다.
- USERTABLE SELECT 값
- CURSOR 을 이용하여 PRINT 함수로 출력
* Query 문 분석
- SQL 문을 한줄 씩 살펴 보겠습니다.
+ DECLARE @temp_username NVARCHAR(50), @temp_tel NVARCHAR(50)
-> 커서 에서 반환하는 유저이름, 유저전화번호를 저장할 변수를 생성합니다.
+ DECLARE test_cur CURSOR FOR SELECT USERNAME, TEL FROM USERTABLE
-> 커서 생성 및 커서에 대입할 SELECT 구문을 작성 합니다.
+ OPEN test_cur
-> 커서 사용 준비를 합니다.
+ FETCH NEXT FROM test_cur INTO @temp_username, @temp_tel
-> 커서에서 첫번째 행 값을 읽어 변수에 대입합니다.
+ PRINT '----- CURSOR DOCUMENT START -----'
-> PRINT 함수를 사용하여 문서 시작을 알립니다.
+ WHILE @@FETCH_STATUS = 0
-> @@FETCH_STATUS 는 FETCH 문의 실행 상태를 반환 합니다. ( 0 : 수행, -1 : 실패, -2 : 행 없음)
즉 FETCH NEXT 문이 성공적으로 수행되면 WHILE 문이 수행되며 실패, 또는 커서의 행을 모두 반환하여
행이 없을 경우 WHILE 문이 종료 됩니다.
+ PRINT '유저이름 || 유저전화번호'
PRINT '[ ' + @temp_username + ' ] || [ ' + @temp_tel + ' ]'
-> 변수에 저장된 값을 PRINT 함수를 이용하여 출력합니다.
+ FETCH NEXT FROM test_cur INTO @temp_username, @temp_tel
-> 커서에서 다음행을 불러와 변수에 대입합니다.
+ CLOSE test_cur
-> OPEN 된 커서를 닫습니다.
+ DEALLOCATE test_cur
-> 커서에 할당된 리소스를 제거 합니다.
[MSSQL] PROCEDURE(프로시저)와 CURSOR(커서)의 활용
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- 실행문
-- EXEC TEST_PROCEDURE '강길동', '05600000'
-- 현재의 DATABASE에 아래에서 선언한 내용이 없기 때문에 프로시저를 생성하면 오류 발생하므로
-- 아래의 구문에 맞게 DATABASE를 생성하거나 이미 만들어 놓은 DATABASE에 맞게 아래의 PROCEDURE내용을 바꿔야 함
CREATE PROCEDURE [dbo].[TEST_PROCEDURE] -- 프로시저를 생성할 때 사용(생성하고 또 실행하게 될 경우 이미 존재했다면서 오류 발생)
ALTER PROCEDURE [dbo].[TEST_PROCEDURE] -- 프로시저의 내용을 변경할 때 사용(CREATE를 한번 실행한 후 계속 ALTER로 사용하면 됨)
--프로그램에서 넘겨 받을 변수선언
@strName VARCHAR(10) = '', -- 1. 이름
@strNumber VARCHAR(10) = '', -- 2. 번호
--프로그램으로 넘겨줄 변수선언
@Rtn INT = 0 OUTPUT, -- 3. 리턴 값(숫자)
@Msg VARCHAR(255) = '' OUTPUT -- 4. 리턴 값(문자)
AS
BEGIN
DECLARE @strTEL VARCHAR(11); -- 일반 변수
-- 변수 초기화(SET명령어는 해당 변수에 값을 넣어준다)
SET @Msg = '프로시저를 시작했습니다.'
-- 이처럼 SELECT문의 결과를 SET명령어를 사용하여 변수에 저장할 수 있음
SET @strTEL = (SELECT HACKBUN
FROM STUDENT
WHERE STUDENT_NAME = @strName
AND STUDENT_NUMBER = @strNumber)
-- CURSOR 생성
DECLARE CURSOR_NAME CURSOR FOR
-- CURSOR안에서 사용할 값을 SETTING
SELECT STUDENT_TEL
FROM STUDENT
WHERE STUDENT_NAME = @strName
AND SEQ = @strNumber
OPEN CURSOR_NAME --CURSOR_NAME은 임시로 만든 이름으로 사용자에 맞게 변경해주어도 된다
--다만 FETCH문도 동일하게 바꿔주어야 하며, CLOSE, DEALLOCATE문에도 같은 이름을 사용해야 한다
FETCH NEXT FROM CURSOR_NAME INTO @strTEL----------------- 1
-- FETCH_STATUS의 값이 성공(0)일때 WHILE문 실행
WHILE @@FETCH_STATUS = 0 BEGIN
INSERT INTO ADDRESS (STUDENT_NAME, ADDRESS, TEL)
VALUES (@strName, '대한민국', @strTEL);
-- 이 부분에 새로운 CURSOR를 생성해서 사용해도 된다
-- 즉, 다중 CURSOR문이 가능
-- 이 안에 CURSOR를 생성하게 되면 결과는
-- 첫번째 CURSOR에서 생성되는 값을 두번째 CURSOR에서 또 사용할 수 있어서 후처리를 할 때 편하다
FETCH NEXT FROM CURSOR_NAME INTO @strTEL------------------2
END;
-- 1, 2번의 INTO뒤에 있는 변수는 CURSOR를 생성할 때 받는 값을 저장할 변수로써,
-- 생성 부분의 SELECT문의 결과 개수와 1, 2의 FETCH문의 개수가 일치해야 됨
-- 1, 2번은 똑같아야 한다.
CLOSE CURSOR_NAME -- CURSOR 닫기
DEALLOCATE CURSOR_NAME -- CURSOR 해체
SET @Msg = '정상적으로 처리가 되었을까요??'
END
set QUOTED_IDENTIFIER ON
go
-- 실행문
-- EXEC TEST_PROCEDURE '강길동', '05600000'
-- 현재의 DATABASE에 아래에서 선언한 내용이 없기 때문에 프로시저를 생성하면 오류 발생하므로
-- 아래의 구문에 맞게 DATABASE를 생성하거나 이미 만들어 놓은 DATABASE에 맞게 아래의 PROCEDURE내용을 바꿔야 함
CREATE PROCEDURE [dbo].[TEST_PROCEDURE] -- 프로시저를 생성할 때 사용(생성하고 또 실행하게 될 경우 이미 존재했다면서 오류 발생)
ALTER PROCEDURE [dbo].[TEST_PROCEDURE] -- 프로시저의 내용을 변경할 때 사용(CREATE를 한번 실행한 후 계속 ALTER로 사용하면 됨)
--프로그램에서 넘겨 받을 변수선언
@strName VARCHAR(10) = '', -- 1. 이름
@strNumber VARCHAR(10) = '', -- 2. 번호
--프로그램으로 넘겨줄 변수선언
@Rtn INT = 0 OUTPUT, -- 3. 리턴 값(숫자)
@Msg VARCHAR(255) = '' OUTPUT -- 4. 리턴 값(문자)
AS
BEGIN
DECLARE @strTEL VARCHAR(11); -- 일반 변수
-- 변수 초기화(SET명령어는 해당 변수에 값을 넣어준다)
SET @Msg = '프로시저를 시작했습니다.'
-- 이처럼 SELECT문의 결과를 SET명령어를 사용하여 변수에 저장할 수 있음
SET @strTEL = (SELECT HACKBUN
FROM STUDENT
WHERE STUDENT_NAME = @strName
AND STUDENT_NUMBER = @strNumber)
-- CURSOR 생성
DECLARE CURSOR_NAME CURSOR FOR
-- CURSOR안에서 사용할 값을 SETTING
SELECT STUDENT_TEL
FROM STUDENT
WHERE STUDENT_NAME = @strName
AND SEQ = @strNumber
OPEN CURSOR_NAME --CURSOR_NAME은 임시로 만든 이름으로 사용자에 맞게 변경해주어도 된다
--다만 FETCH문도 동일하게 바꿔주어야 하며, CLOSE, DEALLOCATE문에도 같은 이름을 사용해야 한다
FETCH NEXT FROM CURSOR_NAME INTO @strTEL----------------- 1
-- FETCH_STATUS의 값이 성공(0)일때 WHILE문 실행
WHILE @@FETCH_STATUS = 0 BEGIN
INSERT INTO ADDRESS (STUDENT_NAME, ADDRESS, TEL)
VALUES (@strName, '대한민국', @strTEL);
-- 이 부분에 새로운 CURSOR를 생성해서 사용해도 된다
-- 즉, 다중 CURSOR문이 가능
-- 이 안에 CURSOR를 생성하게 되면 결과는
-- 첫번째 CURSOR에서 생성되는 값을 두번째 CURSOR에서 또 사용할 수 있어서 후처리를 할 때 편하다
FETCH NEXT FROM CURSOR_NAME INTO @strTEL------------------2
END;
-- 1, 2번의 INTO뒤에 있는 변수는 CURSOR를 생성할 때 받는 값을 저장할 변수로써,
-- 생성 부분의 SELECT문의 결과 개수와 1, 2의 FETCH문의 개수가 일치해야 됨
-- 1, 2번은 똑같아야 한다.
CLOSE CURSOR_NAME -- CURSOR 닫기
DEALLOCATE CURSOR_NAME -- CURSOR 해체
SET @Msg = '정상적으로 처리가 되었을까요??'
END
2017년 3월 12일 일요일
カーネルのバージョン確認
カーネルのバージョン確認
$ cat /proc/version Linux version 2.6.32-28-generic (buildd@allspice) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #55-Ubuntu SMP Mon Jan 10 23:42:43 UTC 2011もしくは、次のように確認できます。
$ uname -a Linux desktop 2.6.32-28-generic #55-Ubuntu SMP Mon Jan 10 23:42:43 UTC 2011 x86_64 GNU/Linux
各デバイス毎の確認方法
Debian GNU/Linuxの場合
$ cat /etc/debian_version 4.0
Ubuntuの場合
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=10.04 DISTRIB_CODENAME=lucid DISTRIB_DESCRIPTION="Ubuntu 10.04.1 LTS"
CentOS / RedHat Enterprise Linuxの場合
$ cat /etc/redhat-release CentOS release 5.2 (Final)
Fedoraの場合
$ cat /etc/fedora-release Fedora release 9 (Sulphur)
SUSE Linuxの場合
$ cat /etc/SuSE-release SUSE Linux Enterprise Server 10 (x86_64) VERSION=10 PATCHLEVEL=1
Installing Gnome-3 desktop on FreeBSD 11
Installing Gnome-3 desktop on FreeBSD 11
Written by Johnson D
FreeBSD 11 can be downloaded from this link. Install FreeBSD according to your requirements, and once the installation is complete, use the following steps to install Gnome3 desktop evironment.
You can find more details and documentation about Gnome 3 here.
Update the package list
pkg update
Upgrade the packages, in case there are updates available
pkg upgrade
Install the packages required.
pkg install gnome-desktop gdm xorg xf86-video-fbdev
Add the following lines to /etc/rc.conf to enable mouse daemon, dbus daemon and hal daemon.
gnome_enable="YES" moused_enable="YES" dbus_enable="YES" hald_enable="YES" gdm_enable="YES"
Reboot the machine. Now the machine will boot into GDM login screen, where you can login to Gnome 3 session. You will get a screen similar to the image below.
2017년 3월 9일 목요일
telnet サーバーを CentOS7にインストールする
telnet サーバーを CentOS7にインストールする
#systemctl enable telnet.socket ←自動起動をONにします
#systemctl start telnet.socket
※ローカルでTelnetが可能かチェックします。
#telnet localhost
※Firewallの設定を変更し、ローカルからのTelnetを許可します。
#firewall-cmd –permanent –add-rich-rule=’rule family=”ipv4″ source address=”192.168.24.0/24″ service name=”telnet” log prefix=”telnet” level=”info” limit value=”1/m” accept’
※Firewallの設定を反映させます
#firewall-cmd –reload
nslookupの概要
DNSを調査する時に利用するnslookupについて説明します。
nslookupの概要
nslookupはDNSを利用してFQDNからIPアドレスに変換出来るか等を確認出来るコマンドです。Windowsではコマンドプロンプトで実行出来ます。
nslookup FQDNと入力する事で、IPアドレスを確認する事が出来ます。
http://beginners-network.com/nslookup.html
nslookupの概要
nslookup FQDNと入力する事で、IPアドレスを確認する事が出来ます。
http://beginners-network.com/nslookup.html
CentOSにSSH、Telnet、FTPをインストールする方法のまとめ。
■Telnetのインストール
Telnetのインストールはyumを使う。
chkconfigを使う。
chkconfigはサービスの自動起動を制御するプログラムのこと。
オプション--listは現在のすべての設定を出力する。
■SSHのインストール
SSH(Secure SHell)はリモートコンピュータとの通信を暗号化や認証を用いて安全に行うためのプロトコルのこと。
openssh-serverをインストールする方法は以下の通り。
外部からのSSHに関連する通信を許可する必要がある。
そのためにはiptablesを設定する必要がある。
鍵セットの作成にはssh-keygenコマンドを使う必要があり、このコマンドはopensshパッケージとopenssh-clientsパッケージをインストールすることで使用可能になる。
鍵セットを作成する。
作成した公開鍵をauthrized_keysとして手元に持ってくる。
まず配布用公開鍵の作成。
また、
SSHv2を使用した通信を指定する場合は-2、
SSHv1を使用した通信を指定する場合は-1
をオプションに指定する。
手元に公開鍵を持ってくる方法で、1番いいのは直接USBなどを指して物理媒体で移行する方法だ。
しかし、今回はFTPをインストールして、FTPで取得してみる。
まずはFTPのインストールから。
あとはPuFFYを使ってsshで対象のサーバに接続すると、ssh通信ができた!!
参考にした本はこちら。
Telnetのインストールはyumを使う。
[root@localhost ~]# yum install telnet-server途中で以下のように聞かれるが、そのときは[y]を入力する
Is this ok [y/N]:
■Telnetサービスを自動で起動させる方法。
chkconfigを使う。
chkconfigはサービスの自動起動を制御するプログラムのこと。
オプション--listは現在のすべての設定を出力する。
[root@localhost ~]# chkconfig --list NetworkManager 0:off 1:off 2:on 3:on 4:on 5:on 6:off abrtd 0:off 1:off 2:off 3:on 4:off 5:on 6:off acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off avahi-daemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off bluetooth 0:off 1:off 2:off 3:on 4:on 5:on 6:off cgconfig 0:off 1:off 2:off 3:off 4:off 5:off 6:offサービスを追加するための書式。
# chkconfig --add telnet # chkconfig --list telnet telnet off
chkconfigの設定を切り替える書式
chkconfig --level <levels> <service> on|off|reset上記の書式にしたがって、Telnetの設定をonにする。
[root@localhost ~]# chkconfig --level 35 telnet on [root@localhost ~]# chkconfig --list telnet telnet on
ランレベル3,5でtelnetがonになった。
■SSHのインストール
SSH(Secure SHell)はリモートコンピュータとの通信を暗号化や認証を用いて安全に行うためのプロトコルのこと。
openssh-serverをインストールする方法は以下の通り。
[root@localhost ~]# yum install openssh-server.x86_64パケットフィルタリングの設定が行われている場合、SSHの接続を許可するには、
外部からのSSHに関連する通信を許可する必要がある。
そのためにはiptablesを設定する必要がある。
# vi /etc/sysconfig/iptablesで、以下を追記する。(ついでにtelnetも追記)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUt -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT
公開鍵認証を行うためには、秘密鍵と公開鍵のペアである鍵セットを作成し、SSHサーバに公開鍵を登録する必要がある。
鍵セットの作成にはssh-keygenコマンドを使う必要があり、このコマンドはopensshパッケージとopenssh-clientsパッケージをインストールすることで使用可能になる。
鍵セットを作成する。
[sysmgr@localhost ~]$ ssh-keygen -t rsaデフォルトだと、.sshディレクトリに鍵セットが作成される。
作成した公開鍵をauthrized_keysとして手元に持ってくる。
まず配布用公開鍵の作成。
[sysmgr@localhost .ssh]$ cat id_rsa.pub >> authorized_keys [sysmgr@localhost .ssh]$ chmod 600 authorized_keys
まずはサーバ上で接続の確認
[sysmgr@localhost .ssh]$ ssh localhostローカルのホストのユーザ名と接続先のホストのユーザ名が異なる場合は、-lオプションを利用するか、@という形でユーザ名を指定する。
また、
SSHv2を使用した通信を指定する場合は-2、
SSHv1を使用した通信を指定する場合は-1
をオプションに指定する。
手元に公開鍵を持ってくる方法で、1番いいのは直接USBなどを指して物理媒体で移行する方法だ。
しかし、今回はFTPをインストールして、FTPで取得してみる。
まずはFTPのインストールから。
[root@localhost ~]# yum install vsftpdvsftpdの自動起動をonにする。
[root@localhost ~]# chkconfig --list vsftpd vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@localhost ~]# chkconfig --level 35 vsftpd on [root@localhost ~]# [root@localhost ~]# chkconfig --list vsftpd vsftpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
また、vsftpdサービスを開始する。
[root@localhost ~]# /etc/init.d/vsftpd start Starting vsftpd for vsftpd: [ OK ]
SELinuxの設定で、匿名ユーザがファイルの読み書きができるようにする設定を行う。
[root@localhost log]# setsebool -P ftp_home_dir 1 [root@localhost log]# getsebool ftp_home_dir ftp_home_dir --> on
これでFTPができるようになるので、手元に[authorized_keys]をダウンロードする。
あとはPuFFYを使ってsshで対象のサーバに接続すると、ssh通信ができた!!
参考にした本はこちら。
2017년 3월 7일 화요일
ファーエンドテクノロジー株式会社
https://www.farend.co.jp/
ファーエンドテクノロジー株式会社
ファーエンドテクノロジー株式会社
インターネット上の技術・知識を活用してよりよい社会の実現を目指すインターネットサービス企業です。
Redmine 3.2をCentOS 7.1にインストールする手順
Redmine 3.2をCentOS 7.1にインストールする手順
より新しいバージョンのRedmineのインストール記事があります。下記をご覧ください。
最小構成でインストールしたCentOS 7.1にRedmine 3.2をインストールする手順です。
このページに記載した手順を自動的に実行するAnsibleのplaybookを公開しています。ぜひご利用ください。インストール直後のCentOS 7でコマンドを数個入力するだけでRedmineが構築できます。
https://github.com/farend/redmine-centos-ansible
※Ubuntu版の記事もあります ▶ RedmineをUbuntuにインストールする手順https://github.com/farend/redmine-centos-ansible
本手順で作成される環境
本手順で作成される環境は以下のとおりです。ソフトウェア | バージョン |
---|---|
Redmine | Redmine 3.2.0 |
OS | CentOS 7.1 |
データベース | PostgreSQL 9.2.14 |
webサーバ | Apache 2.4.6 (Railsの実行にはPassengerを使用) |
Ruby | 2.2.3 |
CentOSの設定
SELinuxを無効にする
エディタで/etc/sysconfig/selinux
を開き、 SELINUX=
の値を disabled
に変更してください。# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted変更後、CentOSを再起動して下さい。
reboot再起動後、
getenforce
コマンドを実行してSELinuxが無効になったことを確認してください。 Disabled
と表示されればSELinuxは無効になっています。getenforce Disabled
firewalldでHTTPを許可
CentOS 7.1の初期状態ではFirewalld(ファイアウォール)が有効になっており、外部からサーバ上の80/tcpポート(HTTP)に接続することができません。クライアントのwebブラウザからアクセスできるようFirewalldの設定を変更します。デフォルトzoneにhttpを追加する:
firewall-cmd --zone=public --add-service=http --permanent success追加した設定を反映:
firewall-cmd --reload successhttpでのアクセスが許可されたか確認:
firewall-cmd --zone=public --list-services
dhcpv6-client http ssh
必要なパッケージのインストール
Redmineを使用するにあたり、必要なパッケージのインストールを行います。開発ツール(Cコンパイラ等)のインストール
yum -y groupinstall "Development Tools"
RubyとPassengerのビルドに必要なヘッダファイルなどのインストール
yum -y install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel libffi-devel
PostgreSQLとヘッダファイルのインストール
yum -y install postgresql-server postgresql-devel
Apacheとヘッダファイルのインストール
yum -y install httpd httpd-devel
ImageMagickとヘッダファイル・日本語フォントのインストール
yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts
ImageMagickと日本語フォントはガントチャートをPNG形式の画像にエクスポートする機能、添付ファイルのサムネイル画像を作成するのに使われます。これらのインストールを行わなくてもRedmineの実行は可能です。
Rubyのインストール
ソースコードのダウンロード
RubyのオフィシャルサイトのダウンロードページからRuby2.2の最新のソースコードをダウンロードしてください。http://www.ruby-lang.org/ja/downloads/
curl -O https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz
Rubyのビルド
ダウンロードしたRubyのtarballを展開し、Rubyのビルドとインストールを行ってください。tar xvf ruby-2.2.3.tar.gz cd ruby-2.2.3 ./configure --disable-install-doc make make install cd ..
configure
実行時に--disable-install-doc
を指定することでRubyのドキュメントのインストールを回避でき作業時間を短縮できます。ruby -v
を実行してRubyのバージョンを表示させ、Rubyがインストールできたことを確認してください。ruby -v ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]
bundlerのインストール
Ruby用のパッケージ管理ツールであるbundlerをインストールします。Redmineが使用するgemパッケージをインストールするのに使用します。gem install bundler --no-rdoc --no-ri
--no-rdoc --no-ri
はドキュメントのインストールを省略するためのオプションです。
PostgreSQLの設定
データベースクラスタの新規作成
postgresql-setup initdb
RedmineからPostgreSQLに接続するための設定を追加
エディタで/var/lib/pgsql/data/pg_hba.conf
を開き、 "Put your actual configuration here" と書かれている箇所を探して以下のように設定を2行追加してください。# Put your actual configuration here # ---------------------------------- # # If you want to allow non-local connections, you need to add more # "host" records. In that case you will also need to make PostgreSQL # listen on a non-local interface via the listen_addresses # configuration parameter, or via the -i or -h command line switches. host redmine redmine 127.0.0.1/32 md5 host redmine redmine ::1/128 md5
PostgreSQLの起動および自動起動の設定
service postgresql start systemctl enable postgresql
PostgreSQLのディレクトリに移動
cd /var/lib/pgsql
Redmine用ユーザーの作成
sudo -u postgres createuser -P redmine Enter password for new role: (PostgreSQLの redmine用ユーザーに設定するパスワードを入力) Enter it again: (パスワード再入力)※ PostgreSQLのユーザー redmine には任意のパスワードを設定してください。このパスワードは後述のdatabase.ymlの設定で使用します。
Redmine用データベースの作成
sudo -u postgres createdb -E UTF-8 -l ja_JP.UTF-8 -O redmine -T template0 redmine
PostgreSQLのディレクトリから元のディレクトリに戻る
cd -
Redmineのインストール
Redmineのダウンロード
svn
コマンドを使ってRedmine 3.2.xの最新ソースコード一式をRedmineのデプロイ先のディレクトリにダウンロードしてください。以下の実行例では /var/lib/
直下のディレクトリ redmine
にソースコード一式をダウンロードします。svn co http://svn.redmine.org/redmine/branches/3.2-stable /var/lib/redmine
svnコマンドを使うのではなくtarballを下記URLからダウンロードすることもできますが、svnコマンドを使う方が手間が少なく簡単です。
http://www.redmine.org/projects/redmine/wiki/Download
http://www.redmine.org/projects/redmine/wiki/Download
データベースへの接続設定
Redmineからデータベースへ接続するための設定を記述したファイルを作成します。以下の内容でRedmineのインストールディレクトリ(例:
/var/lib/redmine
)以下に config/database.yml
を作成してください。production: adapter: postgresql database: redmine host: localhost username: redmine password: "********" encoding: utf8※ ******** 部分は、PostgreSQL上に作成したredmine用ユーザーのパスワードです。
※
config/database.yml.example
に設定例が記載されているので参考にしてください。
設定ファイル config/configuration.yml
の作成
Redmineからメールサーバへ接続するための設定や日本語フォントファイルのパスを記述した設定ファイルを作成します。以下の内容でRedmineのインストールディレクトリ以下に
config/configuration.yml
ファイルを作成してください。production: email_delivery: delivery_method: :smtp smtp_settings: address: "localhost" port: 25 domain: "example.com" rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf※
example.com
の部分は、Redmineを実行するサーバのFQDNとしてください。※
config/configuration.yml.example
に設定例が記載されているので参考にしてください。
※ メールが送信されるようにするためには別途MTAのセットアップが必要です。configuration.yml
ではアップロードされたファイルの保管場所や、データベースの暗号化なども設定できます。詳しくは configuration.yml の設定項目 をご覧ください。Redmineのインストールディレクトリへ移動
cd /var/lib/redmine
gemパッケージのインストール
Rubyのパッケージ管理ツール「bundler」を使用してRedmineが依存するgemパッケージをインストールします。Redmineのインストールディレクトリで以下のコマンドを実行してください。bundle install --without development test --path vendor/bundle
Redmineの初期設定と初期データ登録
Redmine動作に関する初期設定と初期データの登録を行います。下記のコマンドはRedmineのインストールディレクトリで実行してください。セッション改ざん防止用秘密鍵の作成
下記コマンドを実行してください。bundle exec rake generate_secret_token /var/lib/redmine/vendor/bundle/ruby/2.2.0/gems/htmlentities-4.3.1/lib/htmlentities/mappings/expanded.rb:465: warning: duplicated key at line 466 ignored: "inodot"
データベースのテーブル作成
config/database.yml
で指定したデータベースにテーブルを作成します。RAILS_ENV=production bundle exec rake db:migrate
デフォルトデータの登録
作成したテーブルにデフォルトデータのロードを行います。この操作によりトラッカー、優先度、ステータス、ロール、ワークフローなどの初期値が登録されます。RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data /var/lib/redmine/vendor/bundle/ruby/2.2.0/gems/htmlentities-4.3.1/lib/htmlentities/mappings/expanded.rb:465: warning: duplicated key at line 466 ignored: "inodot" Default configuration data loaded.
デフォルトデータの登録は、コマンドラインではなくRedmine起動後に管理画面から実行することもできます。
参考: デフォルトデータのロード
参考: デフォルトデータのロード
Passengerのインストール
Apache上でRedmineなどのRailsアプリケーションの実行するために使われるPhusion Passengerをインストールします。gem install passenger --no-rdoc --no-ri
PassengerのApache用モジュールのインストール
下記コマンドを実行してApache用のモジュールのビルドとインストールを行ってください。passenger-install-apache2-module --auto
Apache用設定内容の確認
下記コマンドを実行するとApacheに追加すべき設定が表示されます。この情報はこの後Apacheの設定を行うときに使用します。passenger-install-apache2-module --snippet
Apacheの設定
以下の内容で/etc/httpd/conf.d/redmine.conf
を作成してください。# Redmineの画像ファイル・CSSファイル等へのアクセスを許可する設定。 # Apache 2.4のデフォルトではサーバ上の全ファイルへのアクセスが禁止されている。 <Directory "/var/lib/redmine/public"> Require all granted </Directory> # Passengerの基本設定。 # passenger-install-apache2-module --snippet で表示された設定を記述。 # 環境によって設定値が異なるため以下の3行はそのまま転記せず、必ず # passenger-install-apache2-module --snippet で表示されたものを使用すること。 # LoadModule passenger_module /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.21/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.21 PassengerDefaultRuby /usr/local/bin/ruby </IfModule> # Passengerが追加するHTTPヘッダを削除するための設定(任意)。 # Header always unset "X-Powered-By" Header always unset "X-Runtime" # 必要に応じてPassengerのチューニングのための設定を追加(任意)。 # 詳しくはPhusion Passenger users guide(https://www.phusionpassenger.com/library/config/apache/reference/)参照。 PassengerMaxPoolSize 20 PassengerMaxInstancesPerApp 4 PassengerPoolIdleTime 864000 PassengerHighPerformance on PassengerStatThrottleRate 10 PassengerSpawnMethod smart PassengerFriendlyErrorPages off
CentOSではApache起動時に
/etc/httpd/conf.d/*.conf
が自動的に読み込まれます。Apacheの起動および自動起動の設定
下記コマンドを実行し、Apacheを起動するとともにシステム起動時に自動起動されるよう設定してください。service httpd start systemctl enable httpd
Apache上のPassengerでRedmineを実行するための設定
Redmineを配置したディレクトリ以下のファイルを、Apacheを実行するユーザー・グループ(CentOSの場合はいずれも"apache")で読み書きできるよう、オーナーを変更します。chown -R apache:apache /var/lib/redmineどのような形態(URL)でRedmineを利用するかによって設定が異なります。三つのパターンを例に挙げます。
パターン1: webサーバをRedmine専用として使用
webサーバのルートディレクトリでRedmineを実行するための設定です。「http://サーバIPアドレスまたはホスト名/」でRedmineにアクセスできます。エディタで
/etc/httpd/conf/httpd.conf
を開き DocumentRoot
をRedmineのpublicディレクトリ(例: /var/lib/redmine/public
)に変更してください。DocumentRoot "/var/www/html" ↓ DocumentRoot "/var/lib/redmine/public"設定変更後、Apacheを再起動してください。
service httpd configtest service httpd restart
パターン2: サブディレクトリでRedmineを実行
URLのサブディレクトリでURLにアクセスできるように設定します。同じサーバでRedmine以外のアプリケーションを実行する場合や、複数のRedmineを実行する場合に便利な設定です。シンボリックリンクの作成
ApacheのDocumentRoot
に指定されているディレクトリ(デフォルトは /var/www/html
)に、Redmineのpublicディレクトリ(例: /var/lib/redmine/public
)に対するシンボリックリンクを作成します。シンボリックリンクの名称は、URLのディレクトリ名部分で使いたい名前(例:redmine)にしてください。ln -s /var/lib/redmine/public /var/www/html/redmine
Apacheへの設定追加
前述の手順で作成したRedmine関係のApacheの設定ファイル/etc/httpd/conf.d/redmine.conf
に以下の設定を追加します。RackBaseURI /redmine設定後、下記コマンドを実行してApacheを再起動してください。
service httpd configtest service httpd restart
インストール完了後の初期設定
インストールが完了しwebブラウザ経由でRedmineにアクセスできる状態になったら、日本語環境で使うための設定変更やユーザーの追加・プロジェクトの追加などを行います。インストール後の初期設定手順については以下をご覧ください。
- Redmineを使い始めるための初期設定 (Redmine.JP)
2017년 3월 4일 토요일
Subversionのインストールと設定 - centOS
Subversionのインストールと設定
社内のソースコードの管理に使おうかということになり、サーバにインストールしてみることになりました。とりあえずお勉強になったので、備忘録をまとめてみました。最初はソースコードからコンパイルしてインストールすることを考えていたのですが、これがまた思ったよりめんどくさい感じだったので、やっぱりyumをインストールしてから作業することに...。
作業にあたり下記URLが大変参考になりました。
http://blog.fkoji.com/2010/04081036.html
基本的にそのまんま作業です。CentOSのバージョンが同じだったもんで、問題なくyumインストール完了。インストール後、yumのアップデートを行ないました。ネットは便利ですね。知りたいことが大抵見つかります。情報を公開していただいた方に感謝!
◆◆◆まずはyumのインストール◆◆◆
→OSのバージョン調査
cat /etc/redhat-release
CentOS release 5.4 (Final)
→unameでシステム情報を参照
uname -a
Linux xxxxxx.xx 2.6.18-028stab068.5 #1 SMP Fri Mar 12 13:55:49 MSK 2010 i686 i686 i386 GNU/Linux
i386とあるので http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/ からyumのrpmを取得。
cd /usr/local/src
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/yum-3.2.22-20.el5.centos.noarch.rpm
→ダウンロード後、インストール。
rpm -ivh yum-3.2.22-20.el5.centos.noarch.rpm
warning: yum-3.2.22-20.el5.centos.noarch.rpm: Header V3 DSA signature: NOKEY, key ID e8562897
error: Failed dependencies:
python-elementtree is needed by yum-3.2.22-20.el5.centos.noarch
python-iniparse is needed by yum-3.2.22-20.el5.centos.noarch
python-sqlite is needed by yum-3.2.22-20.el5.centos.noarch
rpm-python is needed by yum-3.2.22-20.el5.centos.noarch
urlgrabber >= 3.1.0 is needed by yum-3.2.22-20.el5.centos.noarch
yum-fastestmirror is needed by yum-3.2.22-20.el5.centos.noarch
yum-metadata-parser >= 1.1.0 is needed by yum-3.2.22-20.el5.centos.noarch
お、やっぱりエラーだ。リストアップされてる各パッケージをダウンロードして...
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/python-elementtree-1.2.6-5.i386.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/python-sqlite-1.1.7-1.2.1.i386.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/rpm-python-4.4.2.3-18.el5.i386.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/python-urlgrabber-3.1.0-5.el5.noarch.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/yum-metadata-parser-1.1.2-3.el5.centos.i386.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/m2crypto-0.16-6.el5.6.i386.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/libxml2-2.6.26-2.1.2.8.i386.rpm
→再度、インストール。
rpm -ivh *
→インストール後、一応アップデートしてみました。
yum update
これでyumはインストール完了。
◆◆◆今度は本命のSubversionのインストール◆◆◆
作業にあたり、このサイトが設定に役立ちました。こちらも情報ありがとうございます!
http://d.hatena.ne.jp/foldrr/20090717/p2
→では、インストール。楽だぁ~全自動ですよ。
yum install subversion
yum install mod_dav_svn
◆◆◆Subversionの設定◆◆◆
→では、設定ファイルの編集を。
vi /etc/httpd/conf.d/subversion.conf
まずは公開設定を試してみました。以下のようにしてみました。
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
#
# Example configuration to enable HTTP access for a directory
# containing Subversion repositories, "/var/www/svn". Each repository
# must be readable and writable by the 'apache' user. Note that if
# SELinux is enabled, the repositories must be labelled with a context
# which httpd can write to; this will happen by default for
# directories created in /var/www. Use "restorecon -R /var/www/svn"
# to label the repositories if upgrading from a previous release.
#
#
# To create a new repository "http://localhost/repos/stuff" using
# this configuration, run as root:
#
# # cd /var/www/svn
# # svnadmin create stuff
# # chown -R apache.apache stuff
#
<Location /repos>
DAV svn
SVNParentPath /var/www/svn
</Location>
→次いで、リポジトリを作ってみました。
cd /var/www/svn
svnadmin create hogehoge
chown -R apache:apache hogehoge
chmod -R o+w hogehoge
→最後にapacheの再起動。
service httpd restart
これで最低限の設定はいいはずなのですが...
なんと「Could not open the requested SVN filesystem」のエラーに翻弄されることに...。
いろいろ試行錯誤する羽目になったのですが、結果的にsvnディレクトリのオーナー権限、グループ権限に問題があったことが分かりました。
svnディレクトリのオーナー、グループはsvnではなく、apacheじゃないとダメなんですね...。ふぅ。
chown -R apache:apache svn
実は、このsvnディレクトリ、svnのインストールの際に、自動的に「/home/svn/」に自動で生成されたものをcp -aしてきたものなんです。当然自動で生成されたディレクトリだから、オーナー権限、グループ権限は変更せずにsvnのままコピーしたのですが、それでハマってしまったわけです...。因みに「subversion.conf」内の設定例では「/var/www/svn」となっていて、今回はそのようにしてみたのですが、それは結果的にどっちでもいいらしいです。
それじゃ、今度は非公開(ベーシック認証)の設定をしてみるかということで、該当部分のコメントアウト外してみたのですが...
<Location /repos>
DAV svn
SVNParentPath /var/www/svn
# Limit write permission to list of valid users.
<LimitExcept GET PROPFIND OPTIONS REPORT>
# Require SSL connection for password protection.
# SSLRequireSSL
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /var/www/svn/.htpasswd
Require valid-user
</LimitExcept>
</Location>
htpasswd -c /var/www/svn/.htpasswd hogehoge
New password: hogehoge
Re-type new password: hogehoge
service httpd restart
以上で、設定完了ですが、なぜかIDとパスワードを聞かずにスルっと通してしまうのです。ワケが分からない...。ネットで見つけたとある情報に基づき、httpd.confで設定されているDocumentRoot下にリポジトリを変更してみたりしたのですがそれでもダメでした。
とりあえず、セキュリティ面はIPで制限を掛けることとして、今回は妥協してみました。なんでダメなんだろ。
<Location /repos>
DAV svn
SVNParentPath /var/www/svn
order deny,allow
deny from all
allow from 127.0.0.1
allow from xxx.xxx.xxx.xxx ←通すIPにします。
</Location>
service httpd restart
修行は続く。
CentOS7のhttpd設定で詰まった点
初めてCentOS7を触ったのですが、いくつか詰まったところがあったのでまとめます。
末尾の
ポート80 (http) と 443 (https)を開けるには、下記のようにします。
serviceではなくsystemctlを使う
今までhttpdなどのサービスはservice
コマンドを使っていましたが、CentOS7からはsystemctl
コマンドを使うことになります。# sudo service httpd start の代わり
sudo systemctl start httpd.service
# sudo chkconfig httpd on の代わり
sudo systemctl enable httpd.service
.serivce
は省略してもよいみたいです。ファイアウォール設定を要確認
Firewall-cmd
というファイアウォールが自動的に有効になっている場合があり、見落としがちです。ポート80 (http) と 443 (https)を開けるには、下記のようにします。
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
CentOSにApache HTTP Server(httpd)をインストールしてテストページを表示する
CentOSにApache HTTP Server(httpd)をインストールしてテストページを表示する
httpdのインストール
yumコマンドで httpd をインストールします。root で実行してください。
# yum -y install httpd ... インストール: httpd.x86_64 0:2.2.15-39.el6.centos 依存性関連をインストールしました: apr.x86_64 0:1.3.9-5.el6_2 apr-util.x86_64 0:1.3.9-3.el6_0.1
apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 httpd-tools.x86_64 0:2.2.15-39.el6.centos mailcap.noarch 0:2.1.31-2.el6 ... # httpd -v Server version: Apache/2.2.15 (Unix) Server built: Oct 16 2014 14:48:21
以下のようなディレクトリやファイルが作成されています。
/etc/httpd/ /etc/sysconfig/httpd /etc/logrotate.d/httpd /usr/lib64/httpd/ /var/www/ /var/run/httpd/ /var/log/httpd/
インストールが出来たら起動してみましょう。以下どちらのコマンドでも同じです。
# service httpd start httpd を起動中: httpd: Could not reliably determine the server's fully
qualified domain name, using 127.0.0.1 for ServerName
[ OK ]
---
# /etc/init.d/httpd start
httpd を起動中: httpd: Could not reliably determine the server's fully
qualified domain name, using 127.0.0.1 for ServerName
[ OK ]
停止は
stop
、再起動はrestart
、状態を確認するにはstatus
を使用します。起動した時に
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
というメッセージが表示されていますが、これは httpd.conf の ServerName を設定することで消えます。# vi /etc/httpd/conf/httpd.conf ... # # ServerName gives the name and port that the server uses to identify itself. # This can often be determined automatically, but we recommend you specify # it explicitly to prevent problems during startup. # # If this is not set to valid DNS name for your host, server-generated # redirections will not work. See also the UseCanonicalName directive. # # If your host doesn't have a registered DNS name, enter its IP address here. # You will have to access it by its address anyway, and this will make # redirections work in a sensible way. # ServerName www.example.com:80 ... # service httpd restart httpd を停止中: [ OK ] httpd を起動中: [ OK ]
起動後にブラウザで確認すると以下の画面が表示されます。
httpdをインストールしたマシンのブラウザならlocalhost
やホスト名、
仮想マシンやサーバーにインストールした場合はIPアドレスを入力するだけでOKです。
ウェルカムページについて
先程ブラウザで確認した画面ですが、これは/etc/httpd/conf.d/welcome.conf
という設定ファイルによって、デフォルト状態でアクセスした時に表示されるようになっています。ファイルの中身は以下の通りです。
# cat /etc/httpd/conf.d/welcome.conf <LocationMatch "^/+$"> Options -Indexes ErrorDocument 403 /error/noindex.html </LocationMatch>
httpdの自動起動
インストールした段階では自動起動がONになっていないため、再起動する度に手動で httpd を起動する必要があります。
# chkconfig --list | grep httpd httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
自動起動をONにしておくことで起動する手間がいらなくなるのでしておきましょう。
# chkconfig httpd on # chkconfig --list | grep httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
TeraPad Ver.1.09
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
TeraPad Ver.1.09 2012/11/12
寺尾 進
http://www5f.biglobe.ne.jp/~t-susumu/
t-susumu@mvh.biglobe.ne.jp
http://www.facebook.com/terapad
http://twitter.com/terapad
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
TeraPad Ver.1.09 2012/11/12
寺尾 進
http://www5f.biglobe.ne.jp/~t-susumu/
t-susumu@mvh.biglobe.ne.jp
http://www.facebook.com/terapad
http://twitter.com/terapad
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
Apacheのhttpdプロセスの起動, 停止, 再起動 について説明します。このドキュメントは、3分程度で読めます。
インストールsudo apt install apache2
apachectl による制御
起動sudo apachectl start
停止sudo apachectl stop
優雅な停止(graceful-stop)
ただの停止(stop)との違いは、現在オープンしているコネクションをアボートしません。
現在のコネクションの処理が終わるまで、httpdは停止しません。
sudo apachectl graceful-stop
再起動sudo apachectl restart
優雅な起動(graceful)
ただの再起動(restart)との違いは、現在オープンしているコネクションをアボートしません。
restartは、接続中のコネクションを切ってしまうので、サービスを利用しているユーザからは
サービスがおかしくなったように見えるかもしれません。gracefulは、コネクションが
切れる状態になるまで、restartが始まりません。 sudo apachectl graceful
ステータスの確認$ sudo apachectl status Apache Server Status for localhost (via 127.0.0.1) Server Version: Apache/2.4.10 (Ubuntu) Server MPM: prefork Server Built: Jul 24 2015 17:25:18 __________________________________________________________________ Current Time: Tuesday, 03-Nov-2015 19:10:18 JST Restart Time: Tuesday, 03-Nov-2015 19:04:47 JST Parent Server Config. Generation: 1 Parent Server MPM Generation: 0 Server uptime: 5 minutes 30 seconds Server load: 1.57 1.76 1.74 Total accesses: 0 - Total Traffic: 0 kB CPU Usage: u0 s0 cu0 cs0 0 requests/sec - 0 B/second - 1 requests currently being processed, 4 idle workers W____........................................................... ................................................................ ...................... Scoreboard Key: "_" Waiting for Connection, "S" Starting up, "R" Reading Request, "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup, "C" Closing connection, "L" Logging, "G" Gracefully finishing, "I" Idle cleanup of worker, "." Open slot with no current process
apachectl による制御
起動sudo apachectl start
停止sudo apachectl stop
優雅な停止(graceful-stop)
ただの停止(stop)との違いは、現在オープンしているコネクションをアボートしません。
現在のコネクションの処理が終わるまで、httpdは停止しません。
sudo apachectl graceful-stop
再起動sudo apachectl restart
優雅な起動(graceful)
ただの再起動(restart)との違いは、現在オープンしているコネクションをアボートしません。
restartは、接続中のコネクションを切ってしまうので、サービスを利用しているユーザからは
サービスがおかしくなったように見えるかもしれません。gracefulは、コネクションが
切れる状態になるまで、restartが始まりません。 sudo apachectl graceful
ステータスの確認$ sudo apachectl status Apache Server Status for localhost (via 127.0.0.1) Server Version: Apache/2.4.10 (Ubuntu) Server MPM: prefork Server Built: Jul 24 2015 17:25:18 __________________________________________________________________ Current Time: Tuesday, 03-Nov-2015 19:10:18 JST Restart Time: Tuesday, 03-Nov-2015 19:04:47 JST Parent Server Config. Generation: 1 Parent Server MPM Generation: 0 Server uptime: 5 minutes 30 seconds Server load: 1.57 1.76 1.74 Total accesses: 0 - Total Traffic: 0 kB CPU Usage: u0 s0 cu0 cs0 0 requests/sec - 0 B/second - 1 requests currently being processed, 4 idle workers W____........................................................... ................................................................ ...................... Scoreboard Key: "_" Waiting for Connection, "S" Starting up, "R" Reading Request, "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup, "C" Closing connection, "L" Logging, "G" Gracefully finishing, "I" Idle cleanup of worker, "." Open slot with no current process
Linux-UbuntuでのSubversionのインストールと使い方
最近GitHubの方に現を抜かしていたせいで、Subversionの使い方を忘れていた自分が居たので使い方をまとめておきます。
環境はLinux-Ubuntuです。
まずはSubversionのインストールから
Subversion:インストール
1
| $ sudo apt-get install subversion subversion-tools libapache2-svn |
libapache2-svnはリポジトリをApache2を利用して公開するためのパッケージという事です。
Subversion:設定
インストールが終わったら、Subversionリポジトリをウェブサーバーで公開できるようにApache2の設定をしましょう。
1
| $ sudo vim /etc/apache2/mods-enabled/dav_svn .conf |
該当箇所だけコメントアウトを外すのは面倒くさいので、ファイルの一番下に
1
2
3
4
| < Location /svn> DAV svn SVNParentPath /home/svn </ Location > |
終わったら設定反映の為にApacheの再起動
1
| $ sudo apache2ctl restart |
Subversion:リポジトリの作成
さて設定が終わったので早速リポジトリを作成しましょう。リポジトリの場所は本来好きな場所に設定する事ができますが、
上の方でApache2のSVN用公開ディレクトリを
SVNParentPath /home/svn
に設定していますのでココにディレクトリを作成し、リポジトリを作ります。
1
2
3
| $ sudo mkdir /home/svn/ $ cd /home/svn/ $ sudo svnadmin create test |
svnadmin create リポジトリ名
を実行すると自動的にSubversionを使うにあたって必要なファイル郡が作成されます。
Subversionファイル郡のユーザーグループ設定
このままではsudoによりroot権限でリポジトリ「test」を作成してしまった手前、Apache2の権限ではSubversionファイル郡に触れる事ができません。ので
ユーザーを変更してあげる必要があります。
ちなみにApache2はwww-dataというユーザーで動いていますので~
1
| $ sudo chown -R www-data:www-data test |
chown -R
の-Rでディレクトリの中のすべてのディレクトリ、ファイルを一度にユーザー:www-data,グループ:www-dataに変更してしまう事ができます。後はsvnコマンドのimportやcheckoutオプションを使ってファイルのインポートやチェックアウトが可能になります。
Subversion:運用の参考
参考:インポート
1
2
3
4
5
6
7
8
9
10
11
| $ cd $ mkdir test $ cd test $ cat > test aaa bb ccc ^D $ cd ../ $ svn import test / http: //localhost/svn/test/ -m "import test" 追加しています test /test |
参考:チェックアウト
1
2
3
| $ svn checkout http: //localhost/svn/test A test /test リビジョン 1 をチェックアウトしました。 |
ブラウザ等を開き、アドレス欄にdomain/svn/リポジトリ名/と入力
(先ほどの例ではdomain/svn/test/になりますね。)
する事でインポートしたファイルの一覧を見ることができるようになっています。
Linux自体から参照する場合は当然、http://localhost/svn/test/に
またIPで示すならばlocalhostを表わす http://127.0.0.1/svn/test/で
リポジトリを参照する事ができます。
Windowsからチェックアウトする時にはTortoiseSVNなどを使ってチェックアウトしてあげるとはかどります。
以上
尚、この記事を書くにあたり
すらすら はてなさんのサイトを
を参考にさせていただきました。ありがとうございます。
UbuntuにApache2でSubversionサーバーを構築する
Apache2のインストール
$ sudo apt-get install apache2
Subversionのインストール
$ sudo apt-get install subversion subversion-tools libapache2-svnsubversion-toolsはレポジトリのバックアップやファイルのマージなどのツール群。
libapache2-svnはレポジトリをApache2を利用して公開するためのModule。
Subversionの設定
/etc/apache2/mods-enabled/dav_svn.confを編集する。$ sudo gedit /etc/apache2/mods-enabled/dav_svn.conf中身はほとんどコメントアウトされてる(#で始まる行がコメント)なので下のように書き換える。
<Location /svn> DAV svn SVNParentPath /home/svn </Location>この設定は 「http://localhost/svn/testにアクセスすると/home/svn/testのレポジトリを参照するよー」という設定(たぶん)
設定を反映させるためにApacheの再起動
$ sudo apache2ctl restart
Subversionのテスト
testという名前でレポジトリを作成する。$ sudo mkdir /home/svn/ $ cd /home/svn/ $ sudo svnadmin create testレポジトリを作るとフォルダができて、その中にいろんなファイルができる。
Subversionを使う上で、この辺のファイルを直接いじることはまずない。
$ ls test $ cd test $ ls README.txt conf dav db format hooks locksローカルで使う場合はこのままでも良いが、Apacheを通じてレポジトリを公開するときはApache側からアクセスできるようにファイルの所有者・グループを変更しておく。
apacheはwww-dataというユーザーで動いているらしい
$ ps aux | grep apache2 root 5685 0.0 1.0 10164 2600 ? Ss 22:33 0:00 /usr/sbin/apache2 -k start www-data 5686 0.0 0.7 9936 1848 ? S 22:33 0:00 /usr/sbin/apache2 -k start www-data 5687 0.0 1.1 231500 2904 ? Sl 22:33 0:00 /usr/sbin/apache2 -k start www-data 5689 0.0 1.1 231500 2820 ? Sl 22:33 0:00 /usr/sbin/apache2 -k startというわけでtestディレクトリに対して以下のような操作をすればOK
$ sudo chown -R www-data.www-data test確認
$ ls -al 合計 12 drwxr-xr-x 3 root root 4096 2007-11-22 22:53 . drwxr-xr-x 4 root root 4096 2007-11-22 22:51 .. drwxr-xr-x 7 www-data www-data 4096 2007-11-22 22:53 test $ cd test $ ls -al 合計 36 drwxr-xr-x 7 www-data www-data 4096 2007-11-22 22:53 . drwxr-xr-x 3 root root 4096 2007-11-22 22:53 .. -rw-r--r-- 1 www-data www-data 229 2007-11-22 22:53 README.txt drwxr-xr-x 2 www-data www-data 4096 2007-11-22 22:53 conf drwxr-xr-x 2 www-data www-data 4096 2007-11-22 22:53 dav drwxr-sr-x 5 www-data www-data 4096 2007-11-22 22:53 db -r--r--r-- 1 www-data www-data 2 2007-11-22 22:53 format drwxr-xr-x 2 www-data www-data 4096 2007-11-22 22:53 hooks drwxr-xr-x 2 www-data www-data 4096 2007-11-22 22:53 locks
testディレクトリとtestファイルを作成し、testレポジトリにインポートする。
$ cd $ mkdir test $ cd test $ cat > test aaa bb ccc ^D $ cd ../ $ svn import test/ http://localhost/svn/test/ -m "import test" 追加しています test/test リビジョン 1 をコミットしました。チェックアウトしてみる
$ svn checkout http://localhost/svn/test A test/test リビジョン 1 をチェックアウトしました。http://localhost/svn/test/にアクセスして 「Revision 1: /」とか表示されてればOK
2017년 3월 3일 금요일
Backspace in insert mode in vi doesn't erase the character and vi command
$ set nocompatible
$ set backspace=2
You need to change to the "insert" mode by moving the cursor with
i
.
There are other ways to delete characters directly.
You can download a powerpoint that I use when teaching a class on VI here.It sounds like you are in the "Command" mode. To move your cursor:
H
= Left, J
= Up, K
= Down, L
= RightOnce you have your cursor positioned you can delete text as follows:
x
Deletes the character under the cursorX
Deletes the character before the cursordw
Deletes from the cursor to the next worddd
Deletes the line the cursor is on.To enter text, you can use one of the text entry modes.
a
Adds text to the right of the cursorA
Adds text to the end of the current linei
Adds text to the left of the cursorI
Adds test to the beginin of the current lineo
Opens a new line below the current line and places you in text entry modeO
Opens a new line Above the current line and places you in text entry modeTo exit Text entry mode, and return to the Command mode, use
Esc
.To Undo changes: (A student favorite)
u
Undo the last command enteredU
Undo all changes to the ** current line**To Save/Quit:
:w
Writes (Saves) the file and remains open:wq
Writes (Saves) the file and exits VI:q
Quits (Exits) if you've made no changes:q!
Quits (Exits) without saving changesZZ
Writes (Saves) the file and exits VI (same as :wq
)
viで矢印キーを押すとABCDが入ってしまう
■viで矢印キーを押すとABCDが入ってしまう
vi で、矢印キーを押すとABCDなんて文字が入ってしまうのに困っていたのですが、解決方法をみつけました。ポイント
vi 起動直後にコマンドで :set nocompatible と入力する。
毎回コマンドを入力するのは面倒なので、~/.vimrc にこれを記述しておく。
参考にさせていただいたサイト Vimで方向キーを押すとABCDが出る問題を直す
ありがとうございます。
簡単!UbuntuにApache2をインストールする方法
簡単!UbuntuにApache2をインストールする方法
sudo apt-get install apache2
http://localhost/
index.htmlを編集
なお、このとき表示されているファイルは、/var/www/index.htmlファイルです。
編集するには、
chown -hR 自分のユーザ名 /var/www
とやって、あとは/var/www/ の中の index.htmlファイルをエディターで編集すればOK!
楽しくなってきた〜
피드 구독하기:
글 (Atom)