#はじめに
この記事はmacOS Sierra (10.12.1)環境にて実施した内容をメモとして残しているものです。
上記環境以外の方は適宜置き換えて解釈していただけると幸いです。
また、導入しているパッケージ等は投稿者の好みによるものです。
最終更新:2017.06.06
#0.Vagrant環境構築
Vagrantで構築しない場合はこの手順は不要
各種ツールDL&インストール
Vagrant
https://www.vagrantup.com/downloads.html
Vagrant準備
BOX追加
vagrant box add CentOS7 https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box
初期化
mkdir /vagrant/CentOS7 && cd $_
vagrant init CentOS7
設定
お好みでVagrantfileを編集する
# ホスト名
config.vm.hostname = "centos7.vm"
# ネットワーク
config.vm.network "private_network", ip: "192.168.33.10"
# ドキュメントルートを同期フォルダにする ※この設定はhttpdのインストールが終わってからやる
config.vm.synced_folder "/var/www", "/var/www", owner: "apache", group: "apache", mount_options: ["dmode=777", "fmode=777"]
起動
※上記で作成したディレクトリ内で実行
vagrant up
#1.CentOS7初期設定
rootユーザーになっておく
sudo su -
アップデート
yum -y update
一応バージョン確認しておく
※ 2017.06.06時点では、ここでバージョンが7.3.1611になります
cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
Vimを入れる
インストール
yum -y install vim-enhanced
エイリアス設定
echo alias vi='vim' >> /etc/profile
source /etc/profile
時刻同期設定
chronyインストール
yum install -y chrony
chronyサービス登録
systemctl enable chronyd
####サービス登録されたか確認
systemctl list-unit-files -t service | grep chronyd
chronyd.service enabled
同期サーバーを日本のサーバーにする
vim /etc/chrony.conf
server ntp.nict.jp iburst
server ntp1.jst.mfeed.ad.jp iburst
server ntp2.jst.mfeed.ad.jp iburst
server ntp3.jst.mfeed.ad.jp iburst
タイムゾーンをAsia/Tokyoに設定
timedatectl set-timezone Asia/Tokyo
chronyを再起動
systemctl start chronyd
Firewall設定
Firewallを止める
systemctl stop firewalld
サービスを無効にする
systemctl disable firewalld
####無効になったか確認
systemctl list-unit-files -t service | grep firewalld
firewalld.service disabled
※何かと邪魔になりそうなのでローカルと割り切って止めますが、公開サーバーの場合はオススメしません。
日本語対応にする
NKFのインストール
cd /tmp
wget "http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fnkf%2F59912%2Fnkf-2.1.3.tar.gz" -O nkf-2.1.3.tar.gz
tar zxvf nkf-2.1.3.tar.gz
cd nkf-2.1.3
make && make install
rm -rf nkf-2.1.3*
ln -s /usr/local/bin/nkf /usr/bin/nkf
日本語関連パッケージのインストール
yum -y install ibus-kkc vlgothic-*
システム文字セット変更
localectl set-locale LANG=ja_JP.UTF-8
source /etc/locale.conf
各種リポジトリ登録
リポジトリ優先度プラグイン
yum -y install yum-plugin-priorities
これは使用する場合のみでOK
EPEL
yum -y install epel-release
####デフォルトでは無効にする
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo
Remi
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
失敗する場合は以下で…
cd /tmp && wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum -y install /tmp/remi-release-7.rpm
rm -f remi-release-7.rpm
MySQL5.7
yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
Nginx
yum -y install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
再起動
reboot
#2.LAMP+いろいろ環境構築
httpd
インストール
yum -y install httpd
初期設定
vim /etc/httpd/conf/httpd.conf
ネットワークマウントやNFSマウントされたドキュメントルートでは、
静的ファイルへの変更が反映されなかったりするので以下の設定をしておく
EnableMMAP off
EnableSendfile off
起動
systemctl start httpd
サービス登録
systemctl enable httpd
サービス登録されたか確認
systemctl list-unit-files -t service | grep httpd
httpd.service enabled
MySQL 5.7
インストール
yum -y install mysql-community-server
サービス登録
systemctl enable mysqld
サービス登録されたか確認
systemctl list-unit-files -t service | grep mysqld
mysqld.service enabled
お好みに応じて設定を変更
my.cnfバックアップ
mv /etc/my.cnf /etc/my.cnf.bk
my.cnfの内容を書き換える
cat <<EOF > /etc/my.cnf
[mysqld]
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
EOF
rootパスワードを無効化しちゃう
(おすすめはしません!)
[mysqld]
skip-grant-tables
起動
systemctl start mysqld
パスワードの確認
MySQL5.7から初期パスワードが自動生成される為、確認する必要があるらしい。
一度ログインを試みる
mysql -uroot -p
ログファイルにて確認
cat /var/log/mysqld.log | grep "temporary password"
2016-11-08T06:13:33.695967Z 1 [Note] A temporary password is generated for root@localhost: {ここにパスワード}
初期セットアップ
mysql_secure_installation
# パスワード要求
> Enter current password for root (enter for none):
{上記にて調べた初期パスワードを入力}
# パスワードの変更を求められる
> The existing password for the user account root has expired. Please set a new password.
> New password:
{新しいパスワードを入力}
> Re-enter new password:
{パスワードを再入力}
※この時、ポリシーに反しているとやり直しさせられる。
ポリシーの初期値はMEDIUMで、長さは8字以上で英字大小/数字/特殊文字(英数以外の記号)を1つ以上ずつ含む必要があるらしい。
例:P@ssword#123
# root ユーザーのパスワードを変更するか?
> Change the password for root ? ((Press y|Y for Yes, any other key for No) :
{先程変更してるので空Enter}
# 匿名ユーザーを削除するか?
> Remove anonymous users? (Press y|Y for Yes, any other key for No) :
{'y'を入力してEnter}
# リモートから root ユーザーのログインを禁止するか?
> Disallow root login remotely? (Press y|Y for Yes, any other key for No) :
{'y'を入力してEnter}
# test データベースを削除するか?
> Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
{'y'を入力してEnter}
# 権限テーブルをリロードするか?
> Reload privilege tables now? (Press y|Y for Yes, any other key for No) :
{'y'を入力してEnter}
KVS
memcached
インストール
yum -y install --enablerepo=remi memcached
起動
systemctl start memcached
サービス登録
systemctl enable memcached
サービス登録されたか確認
systemctl list-unit-files -t service | grep memcached
memcached.service enabled
Redis
インストール
yum -y install --enablerepo=remi,epel redis
起動
systemctl start redis
サービス登録
systemctl enable redis
サービス登録されたか確認
systemctl list-unit-files -t service | grep redis
redis.service enabled
画像処理関連
ImageMagick
インストール
yum -y install ImageMagick
PHP 7.1
本体インストール
yum -y install --enablerepo=remi-php71 php
関連モジュールインストール
必要に応じてお好みで
# 基本的なやつ
yum -y install --enablerepo=remi-php71 php-devel php-pear
yum -y install --enablerepo=remi-php71 php-mysqlnd php-mbstring
# Nginxで使う場合はphp-fpm
yum -y install --enablerepo=remi-php71 php-fpm
# mcrypt
yum -y install --enablerepo=epel libmcrypt
yum -y install --enablerepo=remi-php71 php-mcrypt
# 画像関連
yum -y install ftp://mirror.switch.ch/pool/4/mirror/centos/7.3.1611/cloud/x86_64/openstack-ocata/common/openjpeg2-2.1.2-1.el7.x86_64.rpm
yum -y install http://dl.fedoraproject.org/pub/epel/7/x86_64/l/libraqm-0.1.1-1.el7.x86_64.rpm
yum -y install --enablerepo=remi-php71 php-gd php-pecl-imagick
# KVS関連
yum -y install --enablerepo=remi-php71 php-pecl-memcache php-pecl-redis
デフォルトでremi-php71を有効化しておくと楽かも
yum-config-manager --enable remi-php71
#まとめて入れちゃう
yum -y install --enablerepo=epel libmcrypt
yum -y install ftp://mirror.switch.ch/pool/4/mirror/centos/7.3.1611/cloud/x86_64/openstack-ocata/common/openjpeg2-2.1.2-1.el7.x86_64.rpm
yum -y install http://dl.fedoraproject.org/pub/epel/7/x86_64/l/libraqm-0.1.1-1.el7.x86_64.rpm
yum -y install php php-devel php-pear php-mysqlnd php-mbstring php-fpm php-mcrypt php-gd php-pecl-imagick php-pecl-memcache php-pecl-redis php-pecl-apcu php-pecl-zendopcache
初期設定
# タイムゾーン設定
sed -i "s/;date.timezone =/date.timezone = 'Asia\/Tokyo'/" /etc/php.ini
# mbstring系の設定
sed -i "s/;mbstring.language = Japanese/mbstring.language = Japanese/" /etc/php.ini
sed -i "s/;mbstring.internal_encoding =/mbstring.internal_encoding = UTF-8/" /etc/php.ini
sed -i "s/;mbstring.http_input =/mbstring.http_input = UTF-8/" /etc/php.ini
Composer
インストール
cd /tmp && curl -s http://getcomposer.org/installer | php
コマンド化
mv /tmp/composer.phar /usr/local/bin/composer
phpMyAdmin
2017.06.06現在はバージョン4.7.1
最新版はこちらで確認
インストール
# ダウンロード
cd /usr/local/src/ && wget https://files.phpmyadmin.net/phpMyAdmin/4.7.1/phpMyAdmin-4.7.1-all-languages.tar.gz
# 解凍
tar zxvf phpMyAdmin-4.7.1-all-languages.tar.gz
# ディレクトリをリネーム
mv phpMyAdmin-4.7.1-all-languages phpMyAdmin
# 元ファイルを削除
rm -f phpMyAdmin-4.7.1-all-languages.tar.gz
VirtualHost設定
vim /etc/httpd/conf.d/phpMyAdmin.conf
<VirtualHost *:80>
ServerName mysql.vm
DocumentRoot /usr/local/src/phpMyAdmin
# phpMyAdmin専用のログを出力するようにする
ErrorLog /var/log/httpd/phpMyAdmin/error_log
CustomLog /var/log/httpd/phpMyAdmin/access_log combined env=!no_log
<Directory "/usr/local/src/phpMyAdmin">
Options All
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
ログディレクトリ作成
作っておかないとApacheの再起動でコケる
mkdir /var/log/httpd/phpMyAdmin
Apache再起動
apachectl restart
ホストOSのブラウザから使えるようにする
※この項目はゲストOSではなくホストOS側での操作
hosts設定
sudo vim /etc/hosts
以下の設定を追記
192.168.33.10 mysql.vm
ブラウザから http://mysql.vm にアクセスするとphpMyAdminのログイン画面が表示されるはず。
#3.Phalcon3環境構築
Zephir
インストール
yum -y install --enablerepo=remi-php71 zephir
インストール確認
zephir
_____ __ _
/__ / ___ ____ / /_ (_)____
/ / / _ \/ __ \/ __ \/ / ___/
/ /__/ __/ /_/ / / / / / /
/____/\___/ .___/_/ /_/_/_/
/_/
Zephir version 0.9.3a-dev
...
Phalcon
インストール
yum -y install --enablerepo=remi-php71 php-phalcon3
インストール確認
php -i | grep phalcon
phalcon => enabled
Phalcon Devtools
インストール
git clone https://github.com/phalcon/phalcon-devtools.git /usr/local/src/phalcon-devtools
コマンド化
ln -s /usr/local/src/phalcon-devtools/phalcon.php /usr/bin/phalcon
chmod ugo+x /usr/bin/phalcon
インストール確認
phalcon
Phalcon DevTools (3.0.1)
Available commands:
commands (alias of: list, enumerate)
controller (alias of: create-controller)
module (alias of: create-module)
model (alias of: create-model)
all-models (alias of: create-all-models)
project (alias of: create-project)
scaffold (alias of: create-scaffold)
migration (alias of: create-migration)
webtools (alias of: create-webtools)
#4.Phalconを動かしてみる
Phalcon用にApacheの設定ファイルを作成
vim /etc/httpd/conf.d/phalcon.conf
<VirtualHost *:80>
DocumentRoot "/var/www/phalcon/public"
DirectoryIndex index.php
ServerName phalcon.vm
<Directory "/var/www/phalcon/public">
Options All
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Phalcon Devtoolsを使ってプロジェクトを生成
# ドキュメントルートに移動して作成
cd /var/www/ && phalcon create-project phalcon
ホストOSのブラウザから見れるようにする
※この項目はゲストOSではなくホストOS側での操作
hosts設定
sudo vim /etc/hosts
以下の設定を追記
192.168.33.10 phalcon.vm
ブラウザから http://phalcon.vm にアクセスして、以下のような画面が表示されればOK。
#おまけ
Vagrant BOXのパッケージ化
せっかく環境構築したので、BOXをパッケージ化する
軽量化する
yum clean all
dd if=/dev/zero of=/EMPTY bs=1M
rm -f /EMPTY
BOXをパッケージ化する
vagrant package --output CentOS7.box
# この例では[/vagrant/CentOS7/]内に[CentOS7.box]のファイル名で出力される
# vagrant haltをしなくても勝手に止めてくれる
BOXを復元する
vagrant box add {BOX名} {ファイルパス}
# BOX名は初期構築時と変えて新しいBOXとして追加出来る
Phalcon用のBOXとして復元する
vagrant box add Phalcon /vagrant/CentOS7/CentOS7.box
mkdir Phalcon && cd $_
vagrant init Phalcon