サーバのOSをUbuntuからCentOSに変えた

やっと書く気になってきた。
インターネット回線を乗り換えたので、一昨日、その工事があった。その関係で外部公開している WEB サーバを止めなくちゃいけなかったので、ついでにサーバの OS をクリーンインストールすることにした。というのも、どういうわけだかわからないけどずっとサーバの調子が悪くてたびたび WEB サーバが落ちる、ということが続いていて、それも最近は頻度が多くなっていたから。で、ちょうどいいので OS のインストールからやり直すことにしたってわけ。OS はタイトルのとおり、Ubuntu から CentOS に変更した。この記事はその顛末。
といっても、CentoOS のインストールと WEB サーバ、アプリの構築は去年の年末から今年にかけて一度やっているので、細かくは書かずにリンクを置くだけにする。

CentOS のインストール

最新の CentOS 7.5 1804 の ISO イメージをダウンロードして、DVD に焼いて使った。

 cf. CentOS 7のインストール
 cf. CentOSのアップデート

最低限のソフトウェアのインストール

Git、Ruby、ImageMagick をそれぞれ yum install でインストールした。今回、rbenv は使わなかった。yum でインストールした Ruby は 2.0.0 と古いけど、構築する予定の WEB アプリでは最近の新しい機能は使っていないのと、サービスとして rbenv の環境を使うのは煩わしいと感じたのでそうした。ImageMagick もアプリで使う。

一般ユーザーで sudo できるようにする

 cf. 一般ユーザーでsudoできるようにする

USB 外付け HDD

 cf. USBの外付けHDDを使ってみる
これはもとから使っていた HDD を繋いだ。OS が変わってうまく使えるか心配したけど、結果的には、ディレクトリとファイルの所有者を chown で変えてやればそのまま使えた。

Nginx

WEB サーバには前と同じ Nginx。
 cf. CentOS 7にNginxをインストールする

WEBアプリの構築

 cf. SinatraアプリをCentOSで動かす(2)

Nginxで仮想サーバー

 cf. Nginxを使って仮想サーバーをたてる

問題発生と解決(暫定的)

さて、ここまでは順調にきた。けど、Nginx で立てた仮想サーバーにアクセスしても 502 Bad Gateway が返ってきてしまう。Nginx も WEB アプリも正常に動いているように見える。ここで行き詰まった。
長々と書くつもりはないので、結果を書くと、SELinux のセキュリティに引っかかっているようだった。で、その SELinux というのがよくわからない。ググってみるとちゃんと解決する方法は見つからなくて、無効にする方法ばかり。仕方がないので暫定的に SELinux を無効にして当面の解決策とすることにした。

SELinux を無効にするには、/etc/selinux/config ファイルのつぎの箇所を変更する。

上のコメントアウトしてある行がデフォルトの設定。これを下の行のように disabled にした。
これで再起動すれば OK。

本当は SELinux をちゃんと理解して使わなきゃいけないところだけど、なにせ情報が少ない。今後の課題だな。

あ、あと書き忘れてたけど、ホスト名は nightschool にした。

というところで、今日はここまで。

Nginxを使って仮想サーバーをたてる

先日作った Sinatra アプリに、sombrero という仮想サーバー名でアクセスできるようにする。
Nginx の仮想サーバーの設定は、/etc/nginx/conf.d 以下に「仮想サーバー名.conf」という設定ファイルを作ることで行う。
というわけで、今回は /etc/nginx/conf.d/sombrero.conf ファイルを作る。

[takatoh@aybesea ~]$ cd /etc/nginx/conf.d
[takatoh@aybesea conf.d]$ sudo vim sombrero.conf

ファイルの内容は次の通り:

80 番ポートで待ち受けて、アプリの動いている 9000 番ポートへ転送している。

ログファイルのためのディレクトリを作る。

[takatoh@aybesea conf.d]$ sudo mkdir /var/log/nginx/sombrero

これで OK のはず。Nginx をリスタート。

[takatoh@aybesea conf.d]$ sudo systemctl restart nginx

別のマシンから http://sombrero/ にアクセスしてみると、ちゃんと動作していることが確認出来た。

CentOS 7にNginxをインストールする

Nginx は CentOS 7 の標準リポジトリでは提供されていないので、まずは EPEL リポジトリを登録する。

[takatoh@aybesea ~]$ sudo yum install epel-release.noarch

Nginx をインストール。

[takatoh@aybesea ~]$ sudo yum install nginx

firewalld の設定とリスタート。

[takatoh@aybesea ~]$ sudo firewall-cmd --add-service=http --zone=public --permanent
[takatoh@aybesea ~]$ sudo systemctl restart firewalld

Nginx の起動と自動起動の設定。

[takatoh@aybesea ~]$ sudo systemctl enable nginx
[takatoh@aybesea ~]$ sudo systemctl start nginx

これでとりあえずは OK。他のマシンからもアクセスできることを確認した。

SinatraアプリをCentOSで動かす(2)

前のエントリで、単純に動かすことには成功したので、今度はデーモンとして動かすことにチャレンジする。一部内容が重複するけど御勘弁。

まずは専用のユーザーを作る。

[takatoh@aybesea ~]$ sudo useradd sombrero
[sudo] takatoh のパスワード:
[takatoh@aybesea ~]$ sudo passwd sombrero
ユーザー sombrero のパスワードを変更。
新しいパスワード:
よくないパスワード: このパスワードには一部に何らかの形でユーザー名が含まれています。
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
[takatoh@aybesea ~]$ sudo usermod -G wheel sombrero
[takatoh@aybesea ~]$ sudo usermod -aG staff sombrero

よくないパスワードと言われてるけど無視。
ここで新しいユーザーでログインし直す。

アプリの clone から セットアップまで。

[sombrero@aybesea ~]$ git clone https://github.com/takatoh/sombrero.git
[sombrero@aybesea ~]$ cd sombrero

と思ったら bundler のインストールでつまづいた。

[sombrero@aybesea sombrero]$ gem install bundler
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /usr/local/rbenv/versions/2.4.3/lib/ruby/gems/2.4.0 directory.

指摘されているディレクトリのパーミッションを見てみると、bill のものになっている。

[sombrero@aybesea sombrero]$ ls -l /usr/local/rbenv/versions/2.4.3/lib/ruby/gems
合計 0
drwxr-xr-x. 8 bill bill 100  1月  2 10:11 2.4.0

これは bill で rbenv global したせいだろうけど、このパーミッション設定は良くないよな。
変えてしまえ。

[sombrero@aybesea sombrero]$ sudo chgrp -R staff /usr/local/rbenv/versions/2.4.3
[sombrero@aybesea sombrero]$ sudo chmod -R 775 /usr/local/rbenv/versions/2.4.3

これでどうか。

[sombrero@aybesea sombrero]$ gem install bundler
Fetching: bundler-1.16.1.gem (100%)
Successfully installed bundler-1.16.1
Parsing documentation for bundler-1.16.1
Installing ri documentation for bundler-1.16.1
Done installing documentation for bundler after 5 seconds
1 gem installed

OK。つづき。

[sombrero@aybesea sombrero]$ bundle install
[sombrero@aybesea sombrero]$ cp config.yaml.example config.yaml
[sombrero@aybesea sombrero]$ rake setup

ここでいったん起動してみる。

[sombrero@aybesea sombrero]$ bundle exec rackup config.ru

OK。

unicorn のインストール。

[sombrero@aybesea sombrero]$ bundle exec gem install unicorn

unicorn の設定ファイル unicorn.conf を書く。

もう一度、今度は unicorn で起動。

[sombrero@aybesea sombrero]$ bundle exec unicorn -c unicorn.conf
bundler: failed to load command: unicorn (/usr/local/rbenv/versions/2.4.3/bin/unicorn)
Gem::Exception: can't find executable unicorn for gem unicorn. unicorn is not currently included in the bundle, perhaps you meant to add it to your Gemfile?
  /usr/local/rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/gems/bundler-1.16.1/lib/bundler/rubygems_integration.rb:458:in block in replace_bin_path'
  /usr/local/rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/gems/bundler-1.16.1/lib/bundler/rubygems_integration.rb:478:in block in replace_bin_path'
  /usr/local/rbenv/versions/2.4.3/bin/unicorn:23:in `'

あれ?Gemfile に書き足さなきゃいけないのか。じゃ、そうしてからもう一度。

[sombrero@aybesea sombrero]$ bundle update
[sombrero@aybesea sombrero]$ bundle exec unicorn -c unicorn.conf

今度はOK。

UNIT ファイルを書く。

[sombrero@aybesea sombrero]$ sudo vim /etc/systemd/system/sombrero.service

これでいってみよう。

[sombrero@aybesea sombrero]$ sudo systemctl start sombrero

ブラウザで確認……OK!!!!!
start したり stop したりしてもちゃんと動いていることが確認出来た。

最後は、自動起動するようにして、外部からもアクセスできるようにポートを開ければ完了。

[sombrero@aybesea sombrero]$ sudo systemctl enable sombrero
Created symlink from /etc/systemd/system/multi-user.target.wants/sombrero.service to /etc/systemd/system/sombrero.service.
[sombrero@aybesea sombrero]$ sudo firewall-cmd --add-port=9000/tcp --zone=public --permanent
success

これでマシンを再起動してみよう。

他のマシンから確認。ちゃんと動作していることが確認出来た。これで完了。

SinatraアプリをCentOSで動かす

ImageMagick を使うのでインストール。

[takatoh@aybesea ~]$ sudo yum install ImageMagick

GitHub から clone。

[takatoh@aybesea ~]$ cd w
[takatoh@aybesea w]$ git clone git@github.com:takatoh/sombrero.git

依存するライブラリをインストール。bundler はインストール済み。

[takatoh@aybesea w]$ cd sombrero
[takatoh@aybesea sombrero]$ bundle install

設定ファイルを作る。実験なのでデフォルトのまま。

[takatoh@aybesea sombrero]$ cp config.yaml.example config.yaml

アプリのセットアップ。データベースや必要なディレクトリなど。

[takatoh@aybesea sombrero]$ rake setup

これで一応の準備は済んだはず。rackup してみる。

[takatoh@aybesea sombrero]$ bundle exec rackup config.ru

これで localhost:9292 で待ち受ける。ブラウザで確認したら OK だった。

外部からアクセスするにはポートを開けてやる必要がある。

[takatoh@aybesea sombrero]$ sudo firewall-cmd --add-port=9292/tcp --zone=public --permanent
[sudo] takatoh のパスワード:
success

さらにアプリを起動するときにも -o 0.0.0.0 オプションが必要。これは Sinatra の仕様。

[takatoh@aybesea sombrero]$ bundle exec rackup -o 0.0.0.0 config.ru

これでアクセスできるはず……できないな。
firewalld をリスタートさせてみる。

[takatoh@aybesea sombrero]$ sudo systemctl restart firewalld
[sudo] takatoh のパスワード:
[takatoh@aybesea sombrero]$ sudo firewall-cmd --list-ports
9292/tcp

今度は大丈夫。外部からもアクセスできて、期待どおりに動作していることが確認出来た。

WindowsからSambaの共有フォルダにコピーするときエラーが発生するようになってしまった

Samba で共有フォルダを作っている Ubuntu マシン(wplj)の外付け HDD を ext4 にフォーマットしたところ、Windows からファイルをコピーするときに、頻繁にエラーが発生するようになってしまった。
そもそも wplj の共有フォルダは Windows マシンのデータバックアップに使っていたもので、もとは NTFS のまま使っていた。そこに robocopy コマンドでバックアップをとっていた。例えば次のように。

robocopy /mir F:\softwares P:\

F: は Windows マシンの外付け HDD、P: は wplj の共有フォルダをネットワークドライブとして割り当てたものだ。wplj の外付け HDD が NTFS のときはこれで何の問題もなくバックアップできていたんだけど、ext4 にしたら「予期しないネットワークエラー」が頻繁に発生するようになってしまった、というわけ。robocopy コマンドだけでなく、エクスプローラーを使ってコピーしてみても状況は同じだった。まったくコピーができないわけじゃないので、ますますわからない。Web を見ながらいくつか解決方法を試してみたけれど、状況は変わらず。それで困っている。

ところで、よくわからないんだけど、CentOS マシン(aybesea)にたてた Samba の共有フォルダでは、上記のようなエラーは起こらない。なぜだろう?

もう一度rbenvを使ってRubyをインストールする(システムワイド)→成功

先日、システムワイドにインストールしようとした時には失敗したけど、ググっていたらヒントになりそうな記事を見つけた。

 cf. Centos7にNginx + UnicornでRedmine3.3構築方法 – Qiita

つまり、/usr/local/rbenv のパーミッションの問題を解決してやればいいんではないか。

前提

/usr/local/rbenv 以下には、先日インストール(というか git clone)したファイルが残っている。

新しいユーザーとグループの作成

takatoh にはユーザーローカルに rbenv がインストールされてしまっていて、ここで作業するとややこしい事になりそうなので、別のユーザーを作ることにする。

[takatoh@aybesea ~]$ sudo useradd bill
[sudo] takatoh のパスワード:
[takatoh@aybesea ~]$ sudo passwd bill
ユーザー bill のパスワードを変更。
新しいパスワード:
よくないパスワード: このパスワードは 8 未満の文字列です。
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

新しいグループ staff を作って、いま作ったユーザー bill を所属させる。

[takatoh@aybesea ~]$ sudo groupadd staff
[sudo] takatoh のパスワード:
[takatoh@aybesea ~]$ sudo usermod -G staff bill

ついでに wheel グループにも所属させておこう。

[takatoh@aybesea ~]$ sudo usermod -G wheel bill

さて、ここからはユーザー bill での作業。

rbenvの設定とインストール

/etc/profile.d/rbenv.sh をつぎのとおりに作成。

/usr/local/rbenv のグループと権限を変更。

[bill@aybesea ~]$ sudo chgrp -R staff /usr/local/rbenv
[bill@aybesea ~]$ sudo chmod -R 755 /usr/local/rbenv

/etc/profile.d/rbenv.sh を読み込んだあと、ruby-build をインストール。

[bill@aybesea ~]$ source /etc/profile.d/rbenv.sh
[bill@aybesea ~]$ cd /usr/local/rbenv/plugins/ruby-build
[bill@aybesea ruby-build]$ sudo ./install.sh

さあ、これでどうだ。rbenv がインストールされているか、確認。

[bill@aybesea ruby-build]$ rbenv -v
rbenv 1.1.1-28-gb943955
[bill@aybesea ruby-build]$ which rbenv
/usr/local/rbenv/bin/rbenv

Rubyのインストール

いよいよ Ruby のインストール。先日の 2.5.0 と間違わないように 2.4.3 をインストールしてみる。

[bill@aybesea ~]$ rbenv install 2.4.3
Downloading ruby-2.4.3.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.bz2
Installing ruby-2.4.3...
mkdir: ディレクトリ /usr/local/rbenv/versions/2.4.3' を作成できません: 許可がありません

BUILD FAILED (CentOS Linux 7 using ruby-build 20171226)

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

Last 10 log lines:
/tmp/ruby-build.20180102092705.32107 /usr/local/rbenv/plugins/ruby-build
/tmp/ruby-build.20180102092705.32107/ruby-2.4.3 /tmp/ruby-build.20180102092705.32107 /usr/local/rbenv/plugins/ruby-build

ああ、ダメだ。なんでだ?
もう一度、/usr/local/rbenv のパーミッションを確認してみる。

[bill@aybesea ~]$ ls -l /usr/local | grep rbenv
drwxr-xr-x. 12 root staff 263 12月 31 05:58 rbenv

あ、ディレクトリのパーミッションが 755 になってる。多分このせいだ。さっき間違えたようだ。

[bill@aybesea ~]$ sudo chmod -R 775 /usr/local/rbenv
[sudo] bill のパスワード:

これでもう一度インストールにチャレンジ。

[bill@aybesea ~]$ rbenv install 2.4.3
Downloading ruby-2.4.3.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.bz2
Installing ruby-2.4.3...
mkdir: ディレクトリ /usr/local/rbenv/versions/2.4.3' を作成できません: 許可がありません

BUILD FAILED (CentOS Linux 7 using ruby-build 20171226)

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

Last 10 log lines:
/tmp/ruby-build.20180102094304.32661 ~
/tmp/ruby-build.20180102094304.32661/ruby-2.4.3 /tmp/ruby-build.20180102094304.32661 ~

ああ、これでもダメか。
bill のグループを確認してみる。

[bill@aybesea ~]$ groups
bill wheel

あれ?staff グループに所属してない。
調べたところ usermod -G コマンドでは2次グループに所属させることはできるが、複数回実行すると2次グループが置き換えられるようだ。所属するグループを3つ以上にするには usermod -aG コマンドを使うようだ。
なので、次のようにする。

[bill@aybesea ~]$ sudo usermod -aG staff bill
[sudo] bill のパスワード:
[bill@aybesea ~]$ groups
bill wheel

あれ、追加されてない?id コマンドで見てみよう。

[bill@aybesea ~]$ id bill
uid=1002(bill) gid=1002(bill) groups=1002(bill),10(wheel),1003(staff)

こっちには追加されている。

それじゃ、もう一度インストールにチャレンジ。

[bill@aybesea ~]$ rbenv install 2.4.3
Downloading ruby-2.4.3.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.bz2
Installing ruby-2.4.3...
mkdir: ディレクトリ `/usr/local/rbenv/versions/2.4.3' を作成できません: 許可がありません

BUILD FAILED (CentOS Linux 7 using ruby-build 20171226)

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

Last 10 log lines:
/tmp/ruby-build.20180102095649.535 ~
/tmp/ruby-build.20180102095649.535/ruby-2.4.3 /tmp/ruby-build.20180102095649.535 ~

まだダメか。
いったん、ログアウトしてからログインし直してみよう。それからまたチャレンジ。

[bill@aybesea ~]$ rbenv install 2.4.3
Downloading ruby-2.4.3.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.bz2
Installing ruby-2.4.3...
Installed ruby-2.4.3 to /usr/local/rbenv/versions/2.4.3

[bill@aybesea ~]$ rbenv versions
  2.4.3
[bill@aybesea ~]$ rbenv global 2.4.3
[bill@aybesea ~]$ ruby -v
ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-linux]

今度はうまくいった!

これで完了。

[追記]

ユーザー takatoh での設定も変更しておく。.bash_profile から rbenv 関係の記述を削除してログインし直したところ、次のようになった。

[takatoh@aybesea ~]$ rbenv -v
rbenv 1.1.1-28-gb943955
[takatoh@aybesea ~]$ which rbenv
/usr/local/rbenv/bin/rbenv
[takatoh@aybesea ~]$ rbenv versions
* 2.4.3 (set by /usr/local/rbenv/version)
[takatoh@aybesea ~]$ rbenv version
2.4.3 (set by /usr/local/rbenv/version)

ユーザーローカルでインストールした 2.5.0 は現れず、さっきシステムワイドにインストールした 2.4.3 を使うようになっている。
~/.rbenv 以下はもう要らないので削除。

[takatoh@aybesea ~]$ rm -rf .rbenv

Ruby を使うだけならこれでいいけど、他のバージョンのインストールができないので、staff グループに所属させておく。

[takatoh@aybesea ~]$ sudo usermod -aG staff takatoh

もう一度ログインし直せば完了。

CentOS 7にSambaサーバをたてる

Windows とのファイル共有のために、Samba サーバをインストールし、その後 firewalld と SELinux の設定を行う。

インストール

[takatoh@aybesea ~]$ sudo yum install samba samba-client samba-winbind samba-winbind-clients

firewalldの設定

firewalld の詳しい説明はまた別の機会に。ここでは、samba サーバにアクセスできるようにだけする。

[takatoh@aybesea ~]$ sudo firewall-cmd --add-service samba --zone public --permanent
success
[takatoh@aybesea ~]$ sudo firewall-cmd --add-service samba-client --zone public --permanent
success

smb.confの編集

誰でもアクセスできる共有フォルダを作る。/etc/samba/smb.conf ファイルを次のように編集。globa セクション。

共有フォルダのセクション。ここでは share という共有フォルダを作った。

共有用ディレクトリの作成

[takatoh@aybesea ~]$ cd /mnt/wiwaxia
[takatoh@aybesea wiwaxia]$ sudo mkdir share

自動定と起動

[takatoh@aybesea wiwaxia]$ sudo systemctl enable smb
Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
[takatoh@aybesea wiwaxia]$ sudo systemctl enable nmb
Created symlink from /etc/systemd/system/multi-user.target.wants/nmb.service to /usr/lib/systemd/system/nmb.service.
[takatoh@aybesea wiwaxia]$ sudo systemctl enable winbind
Created symlink from /etc/systemd/system/multi-user.target.wants/winbind.service to /usr/lib/systemd/system/winbind.service.
[takatoh@aybesea ~]$ sudo systemctl start smb
[takatoh@aybesea ~]$ sudo systemctl start nmb
[takatoh@aybesea ~]$ sudo systemctl start winbind

Windowsから確認

ここでいったん、Windows 側からアクセスできるかどうか確認してみたところ、ダメだった。たぶん SELinux のせいだ。

SELinuxの設定

SELinux についても詳しいことは別の機会にして、ここでは必要そうな設定だけをする。

[takatoh@aybesea ~]$ sudo setsebool -P allow_smbd_anon_write=on
[takatoh@aybesea ~]$ sudo setsebool -P samba_share_nfs=on
[takatoh@aybesea ~]$ sudo setsebool -P samba_export_all_rw=on
[takatoh@aybesea ~]$ sudo sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

さて、これでもう一回試してみたけどダメだった。

何がいけない?

firewalld をもう一度確認してみる。

[takatoh@aybesea ~]$ sudo firewall-cmd --list-service
ssh dhcpv6-client

あれ?samba が追加されてない。

[takatoh@aybesea ~]$ sudo cat /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <service name="samba"/>
  <service name="samba-client"/>
</zone>

ゾーンの設定ファイルには反映されている。何故だ?
firewalld をリスタートさせてみる。

[takatoh@aybesea ~]$ sudo systemctl restart firewalld
[takatoh@aybesea ~]$ sudo firewall-cmd --list-service
ssh dhcpv6-client samba samba-client

今度は反映された。
もう一度 Windows からアクセスしてみると、共有フォルダは見つかったものの書き込みができない。
共有用ディレクトリのパーミッションを確認してみると、root 以外は書き込みができないようになっていたので、これを変更してみる。

[takatoh@aybesea ~]$ cd /mnt/wiwaxia
[takatoh@aybesea wiwaxia]$ ls -l
合計 20
drwx------. 2 root root 16384 12月 30 21:21 lost+found
drwxr-xr-x. 2 root root  4096  1月  1 17:52 share
[takatoh@aybesea wiwaxia]$ sudo chmod 777 share
[takatoh@aybesea wiwaxia]$ ls -l
合計 20
drwx------. 2 root root 16384 12月 30 21:21 lost+found
drwxrwxrwx. 2 root root  4096  1月  1 18:31 share

これでめでたく、共有フォルダに読み書きできるようになった。

CentOS 7のsshd

CentOS 7 では標準で sshd が動いているようだ。Ubuntu マシンからアクセスした様子を示す。

takatoh@envelopes $ ssh takatoh@aybesea
takatoh@aybesea's password: 
Last login: Sun Dec 31 08:28:12 2017
[takatoh@aybesea ~]$ ls
Desktop    Downloads              Music     Public     Videos  w
Documents  Firefox_wallpaper.png  Pictures  Templates  bin

envelopes が Ubuntu マシンで、aybesea が CentOS マシンね。なんにもしてなくても、ちゃんとアクセスできる。これは楽でいい。

CentOS 7にpyenvでPythonをインストール

CentOS 7 には標準で Python がインストールされている。ただちょっと古い。それに pip もない。

[takatoh@aybesea ~]$ python -V
Python 2.7.5
[takatoh@aybesea ~]$ pip list
bash: pip: コマンドが見つかりませんでした...

なので、pyenv を使って Python をインストールすることにした。これはひと月程前にも Ubuntu でやってるから大丈夫だろう。

環境

  • CentOS 7.4.1708 (Core)
  • システムの Python: 2.7.5

参考ページ

依存ライブラリのインストール

これ、なにが必要なんだかいつもよく分からないんだけど、とりあえず参考ページの通りにしてみる。

[takatoh@aybesea ~]$ sudo yum -y install zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel

pyenvとpyenv-virtualenvのインストール

[takatoh@aybesea ~]$ git clone https://github.com/yyuu/pyenv.git .pyenv
[takatoh@aybesea ~]$ git clone https://github.com/yyuu/pyenv-virtualenv.git .pyenv/plugins/pyenv-virtualenv

.bash_profile に追記。

.bash_profile を読み直し。

[takatoh@aybesea ~]$ source .bash_profile

Pythonのインストール

2.7.14 と 3.6.4 をインストール。

[takatoh@aybesea ~]$ pyenv install 2.7.14
Downloading Python-2.7.14.tar.xz...
-> https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz
Installing Python-2.7.14...
Installed Python-2.7.14 to /home/takatoh/.pyenv/versions/2.7.14

[takatoh@aybesea ~]$ pyenv install 3.6.4
Downloading Python-3.6.4.tar.xz...
-> https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
Installing Python-3.6.4...
Installed Python-3.6.4 to /home/takatoh/.pyenv/versions/3.6.4

バージョンの切り替え

[takatoh@aybesea ~]$ pyenv versions
* system (set by /home/takatoh/.pyenv/version)
  2.7.14
  3.6.4

とりあえず、常用には 2.7.14。

[takatoh@aybesea ~]$ pyenv global 2.7.14
[takatoh@aybesea ~]$ pyenv versions
  system
* 2.7.14 (set by /home/takatoh/.pyenv/version)
  3.6.4

OK。当面これで運用してみる。