http://qiita.com/840_/items/c8574ae3d25ed3a4e92a の続き
相変わらずほとんどドットインストール様を参考にしております。
http://dotinstall.com/lessons/basic_local_development_v2
7.epel,remiのリポジトリ導入
最新のPHP,MySQLを導入するためにepelとremiのリポジトリを更新します。
- wget
まずwgetが必要なので
$ sudo yum install wget
wgetをyumでインストールしておく
- epel
wget https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
今回はx86_64の仮想マシンを導入したので、https://dl.fedoraproject.org/pub/epel/6/x86_64/からepel-releaseを探し、リンクアドレスをコピー
RPMパッケージが取得できるので、次にrpmコマンドでインストールする
$ sudo rpm -Uvh epel-release-6-8.noarch.rpm
-U:パッケージのアップグレードを行う、パッケージが存在しなければインストール
-v:パッケージの検査を行う
-h:インストール状況の表示
インストールできたら、デフォルトでepelを使わない設定に変更しておく
$ sudo vi /etc/yum.repos.d/epel.repo
[epel]の中のenabledが1であれば0に変更
- remi
$ wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
http://rpms.famillecollet.com/ からCentOS6用のremi-release-6.rpmのリンクアドレスをコピーしてwgetで取得する
同様にrmpでインストール
$ sudo rpm -Uvh remi-release-6.rpm
インストールした後、同様に設定を確認
$ sudo vi /etc/yum.repos.d/remi.repo
[remi]の中のenabledが1であれば0に変更
これでようやくPHPをインストールできるようになりました
8.PHPのインストールと設定
yum info --enablerepo=remi php
まずはphpのバージョンの確認
$ sudo yum --enablerepo=remi install -y php php-devel php-mysql php-mbstring php-gd
次にremiでインストール
PHPに必要な物は片っ端からいれておきます
次にphp.iniを編集して設定を変えておきます
$ sudo vi /etc/php.ini
-
error_logの出力パスの設定
;error_log辺りで検索して
error_log = var/log/php.log
などを追加する -
マルチバイト文字を使えるようにする
mbstring.languageのコメントアウトを外す
mbstring.language = Japanese
更にinsternal_encodingを
mbstring.internal_encoding = UTF-8
としておく
internal_encodingはマルチバイト文字を扱う際に文字コードが指定されなかった場合に使う文字コードを設定できるみたいです。
文字化けを防ぐために文字コードはUTF-8で統一しておきます。 -
文字コードの指定
http_inputはドットインストール様ではautoでしたが、自動で変換しちゃうと文字化けが起きやすくなるのでここではpassに設定しておきます
mbstring.http_input = pass
mbstring.detect_orderもautoだとどの文字コードから判別してくれるかわからなくて怖いので、明示的に指定しておきます
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
この記述であれば、UTF-8,SJIS,EUC-JP...の順で判別してくれます。 -
バージョン情報をHTTPヘッダに含めない
次にexpose_phpをOFFにします
expose_php = Off
Onのままだと、PHPのバージョンがHTTPのヘッダ情報に含まれてしまうらしいです。
バージョンによっては攻撃の手段を晒す事にもなってしまうので、Offにしておくのが良いようです。 -
タイムゾーンの指定
date.timezone = Asia/Tokyo
date.timezoneを明示的に指定しておきます。
タイムスタンプなどを扱う際にはタイムゾーンの指定がされていないとエラーが出てしまうので、、デフォルトとして扱うタイムゾーンを設定しておきます。
Vagrant上の仮想マシンであれば問題ないはずですが、php.iniがいじれない環境である場合には、
date_default_timezone_set('Asia/Tokyo');
を使って、PHPのソース上でデフォルトのタイムゾーンを明示的に指定する必要があります。
ひと通り編集したら保存してサーバーを再起動すると設定が適用されます
$ sudo service httpd restart
9.MySQLのインストール・設定
$ sudo yum install -y --enablerepo=remi mysql-server
remiでmysql-serverをインストールする。
インストールが終わったら設定ファイルを編集します
$ sudo vi /etc/my.cnf
以下を追記します。
character_set_server=utf8
default-storage-engine=InnoDB
innodb_file_per_table
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
sudo service mysqld start
でmysqlを起動...できるかと思ったらエラーがでました
Starting mysqld: [FAILED]
よくわかんないけど起動に失敗したらしい。
エラーログを確認してみました
[vagrant@vagrant-centos65 ~]$ tail /var/log/mysqld.log
tail: cannot open `/var/log/mysqld.log' for reading: Permission denied
[vagrant@vagrant-centos65 ~]$ sudo tail /var/log/mysqld.log
InnoDB: Progress in percents: 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
InnoDB: Apply batch completed
140430 4:36:37 InnoDB: Waiting for the background threads to start
140430 4:36:38 InnoDB: 5.5.37 started; log sequence number 1595675
140430 4:36:38 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
140430 4:36:38 [Note] - '0.0.0.0' resolves to '0.0.0.0';
140430 4:36:38 [Note] Server socket created on IP: '0.0.0.0'.
140430 4:36:38 [ERROR] /usr/libexec/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
140430 4:36:38 [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)
140430 04:36:38 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
エラーログをみたところ、/mysql/host.frmが開けないとのこと
sudo ls -alt /var/lib/mysql/mysql/
してみたところ、関連ファイルの所有権が全てrootになっていました。
これが原因で開けなかったっぽい。
$ chown -R mysql:mysql /var/lib/mysql
として、所有権をmysqlに変えてあげます
$ sudo service mysqld restart
再起動したらやっと起動出来ました。
次に、セキュリティを高めるための設定を行っていきます。
$ /usr/bin/mysql_secure_installation
とすると、rootのパスワードを聞かれますが、初期はパスワードが設定されていないのでそのままEnter
set root password?でパスワードを設定します。
後は全部Enterでスキップします。
これでrootにパスワードが設定されました。
$ mysql -u root -p
として設定したパスワードを入力すればmysqlにログインできるようになってるはずです。
起動時にmysqlが起動するように設定しておくには以下のようにしておけば良さそうです。
$ sudo chkconfig mysqld on
10.postgreSQLのインストール
http://www.postgresql.org/download/linux/redhat/ からサイトの指示に従ってrpmパッケージを導入する
$ sudo yum install http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm
rpmパッケージが導入されたら同様に指示に従ってインストールします
$ sudo yum install postgresql93-server postgresql93-contrib
これでpostgreSQL自体はインストールされるので、まずはDBを初期化
$ sudo service postgresql-9.3 initdb
これもMySQL同様に、デフォルトで起動にしておき、起動します
$ sudo service postgresql-9.3 start
Starting postgresql-9.3 service: [ OK ]
postgreSQLがインストールされるとpostgresというユーザーが作成されるので、パスワードを設定し、postgresでログインします。
Changing password for user postgres.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[vagrant@vagrant-centos65 ~]$ su - postgres
Password:
-bash-4.1$ psql --version
psql (PostgreSQL) 9.3.4
-bash-4.1$ psql
psql (9.3.4)
Type "help" for help.
ログインした後は、psqlコマンドでpostgreSQLに入れます。
初期状態では、postgresSQLにはpostgresというスーパーユーザーしか作られていないので、作業用のユーザーを追加します。
CentOSのユーザー名と同じだと都合がいいらしいのでvagrantにしておきます。
他の権限を与えたいときにはユーザー名の後ろに追記します。
postgres=# create user vagrant createdb password '(適当なパスワード)' login;
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication | {}
vagrant | Create DB | {}
ユーザーが作成されました。
11.pythonのインストール
まずはpythonのバージョンを確認
Python 2.6.6
ドットインストールでは2.7をいれていくみたいです。
https://www.python.org/download/releases/2.7.6 からアドレスをコピーしました。
tgz形式のリンクアドレスをコピーしてwgetで取得します。
$ wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
$ tar xzvf Python-2.7.6.tgz
で解答し、できたディレクトリに移動したら
$ ./configure --enable-shared --with-threads
とするとMakefileが生成されます。
make
でファイル群を生成し、sudo make install
としてインストール。
これでPythonの2.7.6がインストールされました。
後はライブラリをコピーしておけば良いようです。
[vagrant@vagrant-centos65 Python-2.7.6]$ sudo cp libpython2.7.so libpython2.7.so.1.0 /usr/lib
[vagrant@vagrant-centos65 Python-2.7.6]$ sudo /sbin/ldconfig
[vagrant@vagrant-centos65 Python-2.7.6]$ source ~/.bash_profile
[vagrant@vagrant-centos65 Python-2.7.6]$ python --version
Python 2.7.6
とりあえずここまでやっといた
半分くらいはおまじない的にやってるんでこうしたほうがいいよとかあったらおしえてください