2016年05月05日

cpコマンドで強制上書きを行う方法

CentOS7でcpに-fオプションをつけても、何故か上書き確認がされてしまう。

cp -rf /home/hoge /home/fuga

ディレクトリを定期的に丸ごとコピーしたいのにと思ってたら、エイリアスで「cp -i」に置き換えられているとのこと。
最初にバックスラッシュをつけたら、確かにコピーができた。

\cp -rf /home/hoge /home/fuga
参考
タグ:CentOS
posted by MINE at 01:52 | Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする | edit

CentOS7にSphinx1.4.1をpython3でインストールする

ネットを見ていたら、やはりpython2.7で使っているケースが多かったが、インストールしたのがPython3.4なので、この環境でSphinxをインストールする。

結果論からいうと、特に困ったことは無かったけど。

Sphinxをインストール

/usr/local/python-3.4/bin/pip install sphinx

pythonコマンド以外パス通していなかったので、直接pip実行してインストール。

パスを通す

ln -s /usr/local/python-3.4/bin/sphinx-build /usr/local/bin/sphinx-build

sphinx-buildへのパスが通っていないので、そのまま実行するとmakeでコケる。
なのでパスを通す。

動作確認

sphinx-quickstartでプロジェクトを作成する。

# /usr/local/python-3.4/bin/sphinx-quickstart                                                                                       
Welcome to the Sphinx 1.4.1 quickstart utility.

Please enter values for the following settings (just press Enter to
accept a default value, if one is given in brackets).

Enter the root path for documentation.
> Root path for the documentation [.]: 
# ↑ドキュメントのルートパス省略時は今の場所

You have two options for placing the build directory for Sphinx output.
Either, you use a directory "_build" within the root path, or you separate
"source" and "build" directories within the root path.
> Separate source and build directories (y/n) [n]: 
# ↑ソースと、ビルド結果のフォルダを完全に分けるかどうか。
# デフォルトはソースのフォルダ内に_buildディレクトリができる。

Inside the root directory, two more directories will be created; "_templates"
for custom HTML templates and "_static" for custom stylesheets and other static
files. You can enter another prefix (such as ".") to replace the underscore.
> Name prefix for templates and static dir [_]: 
# ↑Sphinxの作るシステムディレクトリの名前の先頭に付く接頭辞。デフォルトは'_'

The project name will occur in several places in the built documentation.
> Project name: Hogehoge Project
> Author name(s): fuga
# ↑プロジェクト名と著者名。入力必須。

Sphinx has the notion of a "version" and a "release" for the
software. Each version can have multiple releases. For example, for
Python the version is something like 2.5 or 3.0, while the release is
something like 2.5.1 or 3.0a1.  If you don't need this dual structure,
just set both to the same value.
> Project version: 1.0.0.0
> Project release [1.0.0.0]: 
# ↑プロジェクトのバージョン。versionは荒く、releaseは細かい。
# versionは必須だけど、releaseはデフォルトでversionと同じものが入る。

If the documents are to be written in a language other than English,
you can select a language here by its language code. Sphinx will then
translate text that it generates into that language.

For a list of supported codes, see
http://sphinx-doc.org/config.html#confval-language.
> Project language [en]: ja
# ↑プロジェクトのサポート文字コード。後でPDF作るためにjaと入力した。

The file name suffix for source files. Commonly, this is either ".txt"
or ".rst".  Only files with this suffix are considered documents.
> Source file suffix [.rst]: 
# ↑ソースファイルのデフォルトの拡張子。デフォルトは.rst。

One document is special in that it is considered the top node of the
"contents tree", that is, it is the root of the hierarchical structure
of the documents. Normally, this is "index", but if your "index"
document is a custom template, you can also set this to another filename.
> Name of your master document (without suffix) [index]: 
# ↑ドキュメントのトップページ(マスター)のファイル名(拡張子なし)。デフォルトは'index'

Sphinx can also add configuration for epub output:
> Do you want to use the epub builder (y/n) [n]: y
# ↑EPUB用の設定ファイルを追加するか?後で試すのでyesにする。

Please indicate if you want to use one of the following Sphinx extensions:
> autodoc: automatically insert docstrings from modules (y/n) [n]: 
> doctest: automatically test code snippets in doctest blocks (y/n) [n]: 
> intersphinx: link between Sphinx documentation of different projects (y/n) [n]: 
> todo: write "todo" entries that can be shown or hidden on build (y/n) [n]: 
> coverage: checks for documentation coverage (y/n) [n]: 
> imgmath: include math, rendered as PNG or SVG images (y/n) [n]: 
> mathjax: include math, rendered in the browser by MathJax (y/n) [n]: 
> ifconfig: conditional inclusion of content based on config values (y/n) [n]: 
> viewcode: include links to the source code of documented Python objects (y/n) [n]: 
> githubpages: create .nojekyll file to publish the document on GitHub pages (y/n) [n]: 
# ↑各種拡張機能をインストールするかどうか。必要なら後で追加できる。

A Makefile and a Windows command file can be generated for you so that you
only have to run e.g. `make html' instead of invoking sphinx-build
directly.
> Create Makefile? (y/n) [y]: 
> Create Windows command file? (y/n) [y]: 
# ↑ビルド用のMakefileとバッチファイルを作るかどうか。デフォルトは作成する。

Creating file ./conf.py.
Creating file ./index.rst.
Creating file ./Makefile.
Creating file ./make.bat.

Finished: An initial directory structure has been created.

You should now populate your master file ./index.rst and create other documentation
source files. Use the Makefile to build the docs, like so:
   make builder
where "builder" is one of the supported builders, e.g. html, latex or linkcheck.

HTMLを生成して正しく動くか確認する。

make html

_build\html\の下にhtmlが生成される。
PDFやePubはまた別記事にする。

関連する記事

  • CentOS7にPython3.4をインストールする[記事]
  • pipを最新版にする [記事]
参考
タグ:Sphinx Python CentOS
posted by MINE at 01:42 | Comment(0) | TrackBack(0) | Python | このブログの読者になる | 更新情報をチェックする | edit

2016年05月04日

pipを最新版にする

以前ソースコードからコンパイルしてインストールしたpipが7.1.1で古かったのでアップデートする。
前回は/usr/local/python-3.4/にインストールしたので、その下にあるpipを叩いてアップデートを行う。

/usr/local/python-3.4/bin/pip install --upgrade pip

関連する記事

  • CentOS7にPython3.4をインストールする[記事]
タグ:Python CentOS
posted by MINE at 01:44 | Comment(0) | TrackBack(0) | Python | このブログの読者になる | 更新情報をチェックする | edit

MattermostをDocker使わずにインストールする

Mattermostをちゃんと動かそうと思って、セットアップしてみる。
やり方は公式ページに書いてあるけど、CentOS7.2とPostgreSQL9.5.2の環境でインストールしてみる。

データベースのインストールと設定

PostgreSQLのリポジトリを設定。

yum install http://yum.postgresql.org/9.5/redhat/rhel-7.2-x86_64/pgdg-redhat95-9.5-2.noarch.rpm

PostgreSQLをインストール

yum install postgresql95-server postgresql95-contrib

初期設定を行う

/usr/pgsql-9.5/bin/postgresql95-setup initdb

自動起動設定と起動を行う。

systemctl enable postgresql-9.5.service
systemctl start postgresql-9.4.service

データベース作成とユーザー作成を行う。

sudo -i -u postgres
psql
postgres=# CREATE DATABASE mattermost;
postgres=# CREATE USER mmuser WITH PASSWORD 'mmuser_password';
postgres=# GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;
postgres=# \q
exit

viで設定ファイルを開き、

vi /var/lib/pgsql/9.4/data/postgresql.conf

listen_addressesのコメントアウトを解除して、localhostを*に変更する。

listen_addresses = 'localhost'

続いて、viで設定ファイルを開き、

vi /var/lib/pgsql/9.5/data/pg_hba.conf

同じサーバーにMattermostやPostgreSQLを立てようとするなら、Peer認証をtrustに変えておく。あと、同一サーバーからアクセスるために127.0.0.1をmd5認証に変える。
Peer認証はUNIXのユーザー名と一致していないとログインできない。まぁ、セキュリティ考えたら一致させておいたほうが良いと思うが、テスト用なのでとりあえず。

# "local" is for Unix domain socket connections only
local   all             mmuser                                     trust
host   all             all              127.0.0.1/32                       md5

別サーバーに立てる時は、IPv4 local connectionsの所でホストのIPアドレスを記載する。

host    all             all             10.10.10.10/32            md5

サービスの再起動。

systemctl reload postgresql-9.5.service

うまく設定できたか確認をする。

psql --host=10.10.10.1 --dbname=mattermost --username=mmuser --password
mattermost=> \q

Mattermost Serverのインストールと設定

Mattermostをダウンロードする。

wget https://github.com/mattermost/platform/releases/download/v2.1.0/mattermost.tar.gz

ダウンロードしたファイルを/optに配置する。

tar -xvzf mattermost.tar.gz
mv mattermost /opt

ファイルの保存ディレクトリを作成して、権限を付与する。

mkdir -p /opt/mattermost/data
useradd -r mattermost -U
chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost

/opt/mattermost/config/config.jsonをviで開き、以下を変更する。

  • "DriverName"の値の箇所をmysqlからpostgresに変更する
  • "DataSource"の箇所のを書き換える。
DriverName": "postgres"
"DataSource": "postgres://mmuser:password@127.0.0.1:5432/mattermost?sslmode=disable&connect_timeout=10",

無事起動すると下記のように8065のポートでlistenが始まるので、Ctrl-Cで終了させる。

Server is listening on :8065

systemdのサービスを作成する。

touch /etc/systemd/system/mattermost.service
vi /etc/systemd/system/mattermost.service

以下を記述する。

[Unit]
Description=Mattermost
After=syslog.target network.target postgresql-9.5.service

[Service]
Type=simple
WorkingDirectory=/opt/mattermost/bin
User=mattermost
ExecStart=/opt/mattermost/bin/platform
PIDFile=/var/spool/mattermost/pid/master.pid

[Install]
WantedBy=multi-user.target

後はsystemdで再読み込みして、起動&自動起動設定。

systemctl daemon-reload
systemctl start mattermost.service
systemctl enable mattermost.service

http://<サーバーのIPアドレス>:8065/でアクセス。
Webサーバーとの連携は、また別の記事で。

参考
タグ:CentOS Mattermost
posted by MINE at 00:26 | Comment(0) | TrackBack(0) | サーバー技術 | このブログの読者になる | 更新情報をチェックする | edit

2016年04月16日

CentOS7にgitをインストールする

CentOSのyumは古いgitしか無いので、ソースコードからインストールする。

インストール方法

まずは必要なライブラリのインストール。

yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker

続いてソースコードの取得。 ここ[kernel.org]から最新コードを取得する。

wget https://www.kernel.org/pub/software/scm/git/git-2.8.1.tar.gz

解凍してビルドする。インストール先は/usr/localにインストール。

tar zxvf git-2.8.1.tar.gz
make prefix=/usr/local all
make prefix=/usr/local install
git --version
参考
  • CentOS 6.5, yum でインストールした Git を 1.7.1 から 2.x にバージョンアップする[Qiita]
タグ:git CentOS
posted by MINE at 22:51 | Comment(0) | TrackBack(0) | サーバー技術 | このブログの読者になる | 更新情報をチェックする | edit

2016年04月11日

CentOS7のDockerでMattermostを動かしてみる

dockerで動かしただけので、CentOS固有の話は無いけど。
nginxで動かすのは、また今度試してみる。

事前準備

まずはCentOSにDockerをインストールする。
やり方はこちら[記事]参照。

イメージを取得して起動

imageを取得する。

docker pull mattermost/platform

起動する。

docker run --name mattermost-dev -d --publish 8065:80 mattermost/platform

ファイアウォール

ファイアウォールで8065ポートが空いていなかったので空ける。

firewall-cmd --permanent --add-port=8065/tcp

ブラウザでアクセス

http://<サーバーのIP>:8065/にアクセスする。

mattermost初期画面

チーム(例ではabcde)を作ると、下記の感じでURLにアクセスすればログイン画面が出てくる。
http://<サーバーのIP>:8065/<チーム名>/login

Mattermostログイン画面

関連する記事

  • CentOS7にDockerをインストールする[記事]
参考
  • One-line Docker Install[Mattermost]
  • SlackクローンのMattermostを使ってみる - 導入、初期設定編-[Qiita]
posted by MINE at 01:23 | Comment(0) | TrackBack(0) | サーバー技術 | このブログの読者になる | 更新情報をチェックする | edit

2016年04月10日

CentOS7にDockerをインストールする

Rocket.ChatやMattermostを試そうと思って、両方Dockerイメージがあるので、Dockerで入れられるように準備する。

CentOS7は標準のリポジトリに入っているみたい。

yum install docker

インストールしたらサービスを開始する。

systemctl start docker
systemctl enable docker

サービスを停止する。

systemctl stop docker

コンテナの状態を確認する。

docker ps -a
タグ:Docker CentOS
posted by MINE at 20:36 | Comment(0) | TrackBack(0) | サーバー技術 | このブログの読者になる | 更新情報をチェックする | edit

2016年04月09日

CentOS7にyumでkibanaをインストールする

いつの間にかkibanaのリポジトリが提供されていた。
前記事に書いたようなことをしてインストールしなくても楽に入れることができる。

まず鍵をインストールする。

rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

エディタでリポジトリの設定。kibana.repoみたいなファイルを作成して、

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

下記を記載する。

[kibana-4.5]
name=Kibana repository for 4.5.x packages
baseurl=http://packages.elastic.co/kibana/4.5/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

後はyumでインストールする。

yum install kibana

インストールしたら、serviceの設定をして起動する。

systemctl daemon-reload
systemctl enable kibana.service
systemctl start kibana

あとはブラウザでアクセスするだけ。

手動でインストールしている場合。

前のkibanaが邪魔なのでアンインストールする。

systemctl stop kibana4
systemctl disable kibana4
rm /etc/systemd/system/kibana4.service
rm -rf /opt/kibana/

関連する記事

  • CentOS7にElasticsearch1.7をインストールする[記事]
  • CentOS7にKibana4をインストールする記事]
参考
  • Getting Kibana Up and Running[elastic]
posted by MINE at 22:13 | Comment(0) | TrackBack(0) | サーバー技術 | このブログの読者になる | 更新情報をチェックする | edit

2016年04月03日

CentOS7にPython3.4をインストールする

ビルド用のパッケージをインストールする。

yum install zlib-devel openssl-devel readline-devel ncurses-devel sqlite-devel expat-devel bzip2-devel tcl-devel tk-devel gdbm-devel

Pythonのパッケージをダウンロードする。

wget https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz
tar -xvzf Python-3.4.4.tgz

Buildする。

./configure --prefix=/usr/local/python-3.4
make
make install

Pathを通す。

sudo ln -s /usr/local/python-3.4/bin/python3.4 /usr/local/bin/python
参考
  • LinuxでPythonをビルドするときの --enable-shared オプションについて[Qiita]
タグ:Python
posted by MINE at 20:53 | Comment(0) | TrackBack(0) | Python | このブログの読者になる | 更新情報をチェックする | edit

2016年03月27日

elasticsearchにidを指定せずにデータを投入する方法

1行ずつ登録する方法

データを1行ずつのJSONとして用意してファイル保存する。

{"date": "2016/01/01",  "os": "Windows 7", "ip": "192.168.1.100"}
{"date": "2016/01/02",  "os": "Windows 8.1", "ip": "192.168.1.102"}

次に下記のようなシェル書いて「putdata.sh」のような名前で保存する。

#!/bin/bash
lineNum=1

cat $1 | while read JSON_DATA
do
        curl -XPOST "http://localhost:9200/<index_name>/<type_name>/" -d "${JSON_DATA}"
        lineNum=$((lineNum + 1))
done

あとは、このシェルに引数で保存したjsonを渡すと、順次登録する。
すごく遅いけど。

./putdata.sh data.json

Bulk APIを使用して登録する方法

1行ずつ登録売る方法は遅いので沢山登録するときは、Bulk APIを用いて登録する。
Bulk APIは2行で1つの値を登録する。最初のindexは空にしておくと、自動でIDを付加してくれる。

{ "index": {}}
{"date": "2016/01/01",  "os": "Windows 7", "ip": "192.168.1.100"}
{ "index": {}}
{"date": "2016/01/02",  "os": "Windows 8.1", "ip": "192.168.1.102"}

上記jsonをcurlで登録する。

curl -XPOST "localhost:9200/<index_name>/<type_name>/_bulk" --data-binary @hogehoge.json
参考
タグ:Elasticsearch
posted by MINE at 22:18 | Comment(0) | TrackBack(0) | サーバー技術 | このブログの読者になる | 更新情報をチェックする | edit