[LAMP] 使用 Vagrant 在 CentOS7+Apache2.4+PHP7.1+MySQL5.7&Phalcon3.1.2 上搭建环境
首先
这篇文章是在macOS Sierra(10.12.1)环境中进行的实验的笔记。
希望除了上述环境的人能够适当地取代环境并进行理解。
此外,所使用的软件包等是根据作者的喜好而选择的。
最后更新日期:2017年06月06日
0. 搭建Vagrant环境
如果不使用Vagrant来构建,那么这个步骤是不必要的。
请下载并安装各种工具。
VirtualBox
https://www.oracle.com/cn/virtualization/virtualbox/downloads/index.html?ssSourceSiteId=cn_otnjp
流浪者
https://www.vagrantup.com/downloads.html
游手好閒的人準備
增加盒子
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年6月6日,此处版本为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
防火墙配置
停止防火墙
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-*
系统字符集更改 jí
localectl set-locale LANG=ja_JP.UTF-8
source /etc/locale.conf
各种存储库注册
仓库优先度插件
yum -y install yum-plugin-priorities
只有在使用时才可以。
EPEL (Extra Packages for Enterprise Linux) 是为企业级Linux操作系统提供额外软件包的项目。
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 可以以汉语为母语进行重新表述为:MySQL5.7 版本。
yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
Nginx 是一个开源的高性能Web服务器和反向代理服务器。
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
根据您的喜好进行设置更改。
我的.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
禁用根密码(不推荐!)
[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
图像处理相关
图像魔术手
安装
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
作曲家
安装
cd /tmp && curl -s http://getcomposer.org/installer | php
命令化
mv /tmp/composer.phar /usr/local/bin/composer
phpMyAdmin可以被理解为一款用于管理和操作MySQL数据库系统的软件。
截至2017年6月6日,当前版本为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
虚拟主机配置
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
使其能够从主机操作系统的浏览器中使用。
※此条目需要在宿主操作系统中进行,而不是在宾客操作系统中。
主持人配置
sudo vim /etc/hosts
追加以下设定
192.168.33.10 mysql.vm
当您通过浏览器访问 http://mysql.vm,应该会显示phpMyAdmin的登录页面。
3. Phalcon3环境配置
Zephir → 泽菲尔 (Zé ěr)
安装
yum -y install --enablerepo=remi-php71 zephir
确认安装
zephir
_____ __ _
/__ / ___ ____ / /_ (_)____
/ / / _ \/ __ \/ __ \/ / ___/
/ /__/ __/ /_/ / / / / / /
/____/\___/ .___/_/ /_/_/_/
/_/
Zephir version 0.9.3a-dev
...
不需要经过翻译
安装
yum -y install --enablerepo=remi-php71 php-phalcon3
确认安装
php -i | grep phalcon
phalcon => enabled
Phalcon开发工具
安装
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)
尝试运行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
使主机操作系统上的浏览器可以轻松访问。
此项目不是在客户操作系统上进行操作,而是在主机操作系统上进行操作。
主机设置
sudo vim /etc/hosts
在中文中补充以下设置
192.168.33.10 phalcon.vm

赠品
将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的盒子进行恢复
vagrant box add Phalcon /vagrant/CentOS7/CentOS7.box
mkdir Phalcon && cd $_
vagrant init Phalcon