[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
スクリーンショット 2016-11-09 18.42.06.png

赠品

将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
广告
将在 10 秒后关闭
bannerAds