Vagrant – CentOS7 – Python3 – virtualenv

概要

Vagrant上のCentOS7で、virtualenvをインストールしてPython3の仮想環境をつくった手順の記録。

  • pipvirtualenvwrapperをインストールする
  • sudoでインストールすると警告が出てグローバルにインストールされる

許可がなくインストールできない

pip3virtualenvwrapperをインストールしようとしたところ、許可がないとエラーになった。

ディレクトリーに書き込み権限がない。

sudoで警告が出るがインストール

以下のような警告が出るが、インストールは実行される。

WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install –user` instead.

グローバルインストールするのに対して、--userオプションでユーザーディレクトリーへのインストールを促している。

確認

virtualenvのバージョン確認。

仮想環境構築の確認。

ディレクトリー確認。

仮想環境の有効化。

仮想環境の無効化と削除。

操作

基本操作

ディレクトリーを作成して仮想環境を作成。絶対パスでなければ現在のディレクトリー下に作成される。

$ virtualenv directory

仮想環境の有効化。

$ source directory/bin/activate
または
$ . directory/bin/activate

仮想環境の無効化。

(directory) $ deactivate

仮想環境の削除

$ rm -rf directory

応用

Pythonのバージョン指定

$ virtualenv -p python3.6 directory

システムのPythonパッケージ群を仮想環境からも参照

$ virtualenv --system-site-packages directory

virtualenvwrapperの利用

.bashrcの編集と再読み込み

virtualenvだけでも基本的な操作はできるが、virtualenvwrapperを利用すると便利なコマンドが使えるようになる。そのために~/.bashrcに以下の3行を加える。

.bashrcを実行して反映させる。

1行目のWORKON_HOMEで指定したディレクトリーが作成され、ここに仮想環境ごとのディレクトリーが作成される。

2行目を設定しないと以下のエラーが出る。エラーが出てもvirtualenvwrapperは利用できたが入れておく。

3行目はvirtualenvwrapper.shを実行させる。

.bashrcの実行後、~/.virtualenvsディレクトリーと必要なファイルが作成される。

確認

仮想環境を作ってみる。

python3の場所が仮想環境内になっていて、元のシステムの場所とは違う。

もう一つ仮想環境を作って、workonコマンドで見てみる。lsvirtualenvコマンドもあるが、workonコマンドとの違いがよくわからない。

仮想環境にモジュールをインストールしてもシステムに影響がない子を確認する。まずシステムにはNumpyモジュールがインストールされていないことを確認。

仮想環境でもNumpyはインストールされていない。

Python3をexit()で抜けて、仮想環境のコマンドラインでNumpyをインストール。

Python3でNumpyが使えるようになった。

Python3をexit()で抜けて、仮想環境からも抜ける。元の環境ではNumpyはインストールされていないことがわかる。

virtualenvwrapperのコマンド

仮想環境の作成・有効化。WORKON_HOMEで設定したディレクトリーに作成される。

$ mkvirtualenv envname

仮想環境の無効化。

(envname) $ deactivate

仮想環境の一覧。

$ workon
または
$ lsvirtyalenv -b/-l

仮想環境の有効化。

$ workon envname

仮想環境ディレクトリーへの移動。

$ cdvirtualenv envname

仮想環境の削除。

$ rmvirtualenvname envname

 

Vagrant – CentOS7 – Python3インストール

概要

Vagrant上のCentOS7にPython3をインストールした記録。

要点は以下の通り。

  • IUSのリポジトリーでインストール
  • --enablerepo=iusが必要

バージョン確認

まずPythonのバージョンを確認する。

一応Python2の動作確認。

Python3はインストールされていない。

IUSのリポジトリー追加

リポジトリー追加ができない。

リポジトリーは作成できている。

GitをインストールしたときにIUSのリポジトリーをインストールしていたのを忘れていた。

Python3がインストールできない

Python3.6をインストールしようとするができない。

/etc/yum.repos.d/ius.repoの設定でenabled = 0になっているため。Gitのインストールの時に書き換えているが、毎回元に戻るのか?

オプション設定でインストール成功

設定ファイルを書き換えてもよいが、yum実行時のオプションで--enablerepo=iusを追加して成功。

確認

バージョン確認。

動作確認。

Python2ではない。

python3の場所。

pipのバージョン確認。

 

Vagrant/Linux環境でPHPサーバーを起動する

概要

VagrantのLinux上でPHPのビルトインサーバーを立ち上げる。

ゲスト側IPアドレスの確認

Vagrant環境下でip aifconfig -aを実行してネットワークインタフェイスのアドレスを確認する。

サーバーの起動

ビルトインサーバーの起動コマンドは以下のとおり。

php -S ホスト:ポート -t ドキュメントルート
php --server ホスト:ポート --docroot ドキュメントルート

ホスト部分に、確認したIPアドレスを指定する。ドキュメントルートに、実行ファイルが置かれる場所を指定する。

ブラウザーでの表示

ブラウザーでのURL指定は以下のとおり。

 

Vagrant – phpMyAdminのインストール – CentOS7

phpMyAdminのインストール

PHPをRemiリポジトリーからインストールしているので、phpMyAdminもRemiリポジトリーからインストールする。

ポートの設定

Vagrrant環境の場合、VagrantfileでApacheで使うポートを設定しておく必要がある。

Apacheの起動確認

Apacheの起動状態を確認。

停止していればApacheを起動。

403エラー

ここまでの状態でlocalhost:8080/phpMyAdminにアクセスすると、403エラーになった。

phpMyAdmin.confの修正

/etc/httpd/conf.d/phpMyAdmin.confを以下のように修正する。

修正後はApacheを再起動。

起動成功

localhost:8080/phpMyAdminでログイン画面が表示される。

 

Vagrant – Apache – CentOS7

導入

ポートフォワーディング

Vagrantfileの以下の行のコメントを外すか、行がなければ記述。

Vagrantfile修正後はVagrantを再起動。

httpdの状態確認と起動

httpdの稼働状況を確認。

停止しているなら起動。

接続確認

ホストのブラウザーからlocalhost:8080にアクセス。

 

Vagrant – Laravelの開発用サーバー

VagrantでLaravelのサーバーを稼働させる場合、Vagrantで設定したホストとポートを指定する必要がある。

たとえばポートフォワーディングでポート3000を指定している場合。

ゲスト側のIPアドレスを確認。

これらのIPアドレスとポート番号を使ってサーバーを起動。

そしてホスト側のブラウザーからlocalhost:3000でアクセス。

 

Vagrant – ネットワーク設定

ホストオンリー

概要

  • ホスト~ゲスト間のみ通信が可能
  • 仮想環境起動時にゲスト側のプライベートアドレス(固定IP)を指定
  • 指定したIPでゲスト側に新たなインターフェイス(eth)が加わる
  • ゲスト側のサーバーでポートを指定して開き、ホスト側から固定IPとそのポートで接続

設定

Vagrantfileの以下のコメントアウトを外す。

設定状況の確認。指定したIPアドレスでeth1が設定されていてる。

  • ゲスト側のサーバーでeth1のIPアドレス(192.168.33.10)と任意のポート指定
  • ホスト側からそのIPアドレスポートで接続

接続例

たとえばPHPのビルトインサーバーを以下のように起動し、ホストのブラウザーのURLに192.168.33.10:8080/test.phpなどと指定。

ポート番号8080は任意の値を設定でき、ゲスト側のサーバーで指定した番号と同じものをホスト側のブラウザー等でも指定。

ポートフォワーディング

概要

  • ゲストとホストそれぞれのポート番号を指定する
  • ゲスト側ではeth0のIPアドレスとゲストに指定されたポート番号でサーバを起動
  • ホスト側ではlocalhost(127.0.0.1)とホストに指定されたポート番号でゲスト側に接続

設定

Vagrantfileの以下のコメントアウトを外す。

設定状況の確認。

  • ゲスト側ではeth0のIPアドレス(10.0.2.15)とVagrantfileのguestで指定したポート(3000)でサーバーを起動
  • ホスト側からはlocalhost(または127.0.0.1)とVagrantfileのhostで指定したポートで接続

接続例

たとえばPHPのビルトインサーバーを以下のように起動し、ホストのブラウザーのURLにlocalhost:3000/test.phpあるいは127.0.0.1:3000/test.phpなどと指定。

異なるポート番号の場合

ホスト側とゲスト側のポート番号は異なってもよい。たとえばVagrantfileの先ほどの1行上の方をコメントアウトする。

この場合はゲスト側でサーバーを起動する場合にポート80で起動する(注:ポート80を使う場合はroot権限が必要)。たとえばPHPのビルトインサーバーの場合は以下のとおり。

そしてホスト側のブラウザーからは以下で接続する。

localhost:8080/test.phpまたは127.0.0.1:8080/test.php

 

Vagrant – PHPインストール – CentOS7

概要

CentOS7へのPHPのインストールはyumを使うが、公式のリポジトリ―ではバージョン5まででPHP7系がインストールできない。

PHP7をインストールするのに、sudo yum install php73 php73-php ...とすると、起動コマンドがphp73になる。これをphpで起動できるようにするのにRemi Repositoryを使わせてもらう。Remi Repositoryをインストールするに当たってはEPEL (Extra Packages for Enterprise Linux)が必要になる。

Remi RepositoryのサイトにあるConfiguration Wizardで条件を指定して、必要な情報を得ておく。設定条件は、

  • Operating system: CentOS7 (maintained until June 2024)
  • Wanted PHP version: 7.3.28 (security only support until December 2021)
  • Type of installation: Default / Single version (simplest way)

Wizard answerとして以下を含む情報が得られる。

  • Command to install the EPEL repository configuration package:
    yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  • Command to install the Remi repository configuration package:
    yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
  • PHP version 7.3 packages are available for CentOS 7 in remi-php73 repository
  • Command to upgrade (the repository only provides PHP):
    yum update
  • Command to install additional packages:
    yum install php-xxx

yumのアップデート

念のため。

EPELのインストール

yumアップデートでEPELがインストール済みとわかる。インストール済みのリストをとってみると

EPELをインストールする手順の覚え書き。

Remiリポジトリーのインストール

PHP73リポジトリーの有効化

/etc/yum.repos.d/remi-php73.repoを編集。

PHP本体のインストール

インストールの確認。

この時点でインストールされているパッケージの確認。

必要なパッケージのインストール

php-devel php拡張を構築するのに必要なファイル
php-opcache バイトコード化アクセラレーター
php-intl 国際化関数
php-mbstring マルチバイト文字関連
php-mysqlnd MySQLネイティブドライバー
php-pdo PDO
php-xml XML利用
php-xmlrpc XMLデータ交換
php-gd 画像処理関連

基本的な機能

国際化・マルチバイト

データベース関係

XML関係

画像関係

 

Vagrant – PHPインストール – FreeBSD

さくらのレンタルサーバーに合わせた仮想環境にPHPをインストール。bootstrap済みのpkgで簡単にインストールできた。

 

Vagrant – MySQLインストール – FreeBSD

pkgによるインストール

FreeBSDのバージョンが古いと言われたが、ミスマッチを無視することができるようなので無視して続行。

インストール直後の主要ファイルの存在状況は以下の通り。

/usr/local/etc/mysql/my.cnf → 存在
$HOME/.mysql_secret → 存在しない
/root/.mysql_secret → 存在しない
/usr/local/libdata/ldconfig/mysql57-server → 存在
/usr/local/share/mysql/mysql.server → 存在

 

MySQLサーバー起動

/etc/rc.confに以下の1行を追加してvagrant reload

サーバーの実行状況を確認。

サーバーを再起動する場合。

サーバーを起動すると.mysql_secretファイルが作成される。

初回ログインとパスワード変更

初期パスワードの確認

rootユーザーの初期パスワードは/root/.mysql_secretファイルに書かれている。

初回ログイン

パスワードを変更

SET PASSWORDクエリーでパスワードを変更。

日本語の設定

さくらサーバーでの日本語の扱い

インストールしたままの状態だと、ロケールやエンコーディングの設定が日本語の扱いに適していないので変更する必要がある。さくらサーバーのMySQLでの扱いは以下のようになっている。

OSのロケール

ロケールは日本(ja_JP)で文字コードはUTF-8で設定されている。

MySQLの文字コード

systemがutf8、databaseとserverがutf8mb4で設定されている。

MySQLの照合順序

databaseとserverの照合順序はutf8mb4_general_ciに設定されている。

Vagrantの設定

さくらサーバー上のMySQLの設定に合わせる。ロケール、文字コード、照合順序の詳細については以下を参照。

ロケール設定

/etc/profileに以下2行を追加してvagrantをリロード。

※’=’の前後にはスペースを入れない。

<変更後のロケール>

文字コードと照合順序の設定

/usr/local/etc/mysql/my.cnf[mysql]セクションと[mysqld]セクションに各々以下を追加してMySQLをリロード(sudo /usr/local/etc/rc.d/mysql-server restart)。

<変更後の文字コード>

<変更後の照合順序>