Sponsored Link
CentOS 7 + Vagrant + VirtualBox でローカル開発環境を作る
VirtualBox
名の通り、現在使用しているPCに仮想環境を構築してくれるフリーソフト。
Windows, Mac, Linuxに対応している。
導入方法
https://www.virtualbox.org
からDownloadsのリンクをクリックしWindows版をダウンロードする。
基本デフォルトのまま進めてOK。
ダウンロード後だけ、チェックを外す。
Vagrant
開発環境の構築と共有を簡単に行うためのツール。
仮想マシン環境を管理する機能、共有する仕組みがある。
コマンドプロンプトを使用して、起動や操作を行う。
導入方法
https://www.vagrantup.com/
からDownloadのリンクをクリックし、Windows版をダウンロードする。
基本デフォルトで進めてOK。
ダウンロード後、再起動が必要。
Vagrant と VirtualBox の相性
バージョンによっては相性が悪く vagrant up
が出来ない。
2016/09/16時点では、
- Vagrant 1.8.4
- VirtualBox 5.0.*
で上手くいく。
Boxを追加する
vagrant box add {自分で決めたBox名} {boxファイルURL}
boxファイルURLは下記で確認できます。
http://www.vagrantbox.es/
CentOS7.1
C:¥Users¥user> vagrant box add CentOS71 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.1/vagrant-centos-7.1.box
Boxが追加されたか確認
vagrant box list
CentOS7.1 (virtualbox, 0)
と、出ればCentOS7.1というBoxが追加されてます。
Boxを削除する
もし使用していないBoxがあり、削除したい場合は
vagrant box remove {自分で決めたBox名}
で削除ができます。
仮想マシンを作成
- Vagrant用のフォルダを作る
C:\Users\user_name> mkdir MyVagrant\centOS71
で、C:\Users\user_name\MyVagrant\centOS71
のディレクトリが作成される。 - Vagrantを初期化(Vagrantfileの生成)
C:\Users\user_name\MyVagrant\centOS71> vagrant init CentOS71
- Vagrantfileが生成されているか確認
C:\Users\user_name\MyVagrant\centOS71> dir
- Vagrantfileの修正
生成された vagrantfile をテキストエディタで開く。
下記の3つを#を外して保存する
config.vm.box = "CentOS71"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.provision :shell, :path => "provision.sh"
config.vm.provision
は最初に vagrant up
した際に指定のshellを起動させる。
今回の場合は、同パス上にある provision.sh
というファイルを起動します。
provision.sh
#VIMのインストール
sudo yum -y install vim
# httpdのインストール
sudo yum -y install httpd
# httpdのスタート(Apacheサーバ起動)
sudo systemctl start httpd
# Apacheサーバの自動起動
sudo systemctl enable httpd
#ファイヤーウォールの停止
sudo systemctl stop firewalld
#ファイヤーウォールをOS起動時に自動停止させる
sudo systemctl disable firewalld
# Webで表示するフォルダを削除
sudo rm -rf /var/www/html
# Webで表示するフォルダを.共有フォルダである/vagrantとシンボリックリンク
sudo ln -fs /vagrant /var/www/html
# wgetのインストール
sudo yum -y install wget
# epelリポジトリの追加
sudo yum -y install epel-release
# remiリポジトリの追加
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo rpm -ivh ./remi-release-7.rpm
# phpのインストール
# sudo yum --enablerepo=remi --enablerepo=remi-php70 -y install php70 php70-php-mcrypt php70-php-mbstring php70-php-fpm php70-php-gd php70-php-pear php70-php-mysql php70-php-mysqlnd php70-php-pdo
sudo yum -y --enablerepo=remi-php70,remi install php php-mcrypt php-mbstring php-fpm php-gd php-xml php-pdo php-mysqlnd php-devel php-pear php-mysql
# phpMyAdminのインストール
sudo yum -y --enablerepo=remi-php70,remi install phpMyAdmin
# info.php の作成
cd /vagrant
echo '<?php phpinfo();' > info.php
# Node.jsのインストール
sudo yum -y install nodejs npm
# npmの最新バージョンにする
npm install -g npm
# すべてのGlobalパッケージをアップデート
npm install -g jshint
# gulpのインストール
npm install -g gulp
# Node.jsのデーモン化ツールforeverのインストール
npm install -g forever
npm install -g n
# nodejsを最新バージョンにする
n stable
# MariaDBの削除(MySQLと競合を起こすため)
sudo yum -y remove mariadb-libs
sudo rm -rf /var/lib/mysql/
# MySQLのインストール(http://dev.mysql.com/downloads/repo/yum/)
sudo yum -y localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
sudo yum -y install mysql-community-server
# MySQLを自動起動
sudo systemctl enable mysqld.service
# MySQLを起動
sudo systemctl start mysqld.service
# Composerのインストール
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
# unzipのインストール
sudo yum install -y unzip
# gitのインストール
sudo yum -y install git
- 仮想マシン(CentOS)を起動
コマンドプロンプトでvagrant upを打ち込んで、仮想マシンを起動させる。
C:\Users\user_name\MyVagrant\centOS71> vagrant up
完了したら、http://192.168.33.10/info.phpを開いてphpinfoが表示されていれば問題ありません。
vagrant up 時のエラー解消
Stderr: VBoxManage.exe: error: Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter
VirtualBoxのアダプタ設定がおかしい可能性がある。
Windowsのネットワークと共有センター / アダプタ設定の変更 / 該当する VirtualBox Host-Only Network を右クリックしてプロパティを開く
VirtualBox NDIS6 Bridged Network Driver にチェックを入れる
⇒再度vagrant upで起動確認
参考
ターミナルでアクセスする
- ターミナルって?
サーバやネットワークを操作するためのソフトウェア
今回に関していえば、CentOSにアクセスしたりするためのツール。
導入方法
今回はTera Termを使用します。
http://www.forest.impress.co.jp/library/software/utf8teraterm/download_10868.html
※ダウンロードが始まります。
Tera Termの設定
ホスト:192.168.33.10
TCPポート:22
SSHバージョン:SSH2
でOKを押す
その後、SSH認証画面が出てきます。
ユーザ名:vagrant
パス:vagrant
でOKを押す
接続出来たら、
[vagrant@localhost ~]$
が表示されます。
WEBサーバの立ち上げ(Apache)
WEBサーバを立ち上げるために、httpd(Apache)をインストールします。
[vagrant@localhost ~]$ sudo yum -y install httpd
[vagrant@localhost ~]$ sudo systemctl enable httpd.service
[vagrant@localhost ~]$ sudo systemctl start httpd
sudo systemctl enable httpdでCentOS起動時に自動的にhttpdがオンになります。
参考
sudo systemctl start httpdでCentOSが起動します。
参考
これで、htmlが開けるようになります。
httpd(Apache)の再起動
何か設定を変更したりした後、再起動をしたい場合
[vagrant@localhost ~]$ sudo systemctl restart httpd
httpd.conf
[root@localhost ~]$ sudo vi /etc/httpd/conf/httpd.conf
AllowOverride None
↓
AllowOverride All # .htaccessの許可
AddDefaultCharset UTF-8
↓
# AddDefaultCharset UTF-8 # 文字化け対策
ファイルが更新されない場合
CSSやJS、HTMLファイル等を更新しても適切に反映されない場合があります。
ファイル自体はちゃんと保存できていて、ブラウザ側でキャッシュをクリアしたりしても古いファイルが表示されてしまう…。
そんな時は、サーバ側でキャッシュされている可能性があります。
httpd.confを下記のように設定してください。
EnableMMAP Off
EnableSendfile Off
その後、httpdを再起動すれば更新されるはずです。
エラーログとアクセスログの確認
Apacheのエラーログの確認
[vagrant@localhost ~]$ sudo less /var/log/httpd/error_log
Apacheのアクセスログの確認
[vagrant@localhost ~]$ sudo less /var/log/httpd/access_log
PHP
各リポジトリのインストール
wget
[vagrant@localhost ~]$ sudo yum -y install wget
epelリポジトリ
[vagrant@localhost ~]$ sudo yum -y install epel-release
remiリポジトリ
[vagrant@localhost ~]$ wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
[vagrant@localhost ~]$ sudo rpm -ivh ./remi-release-7.rpm
これが上手く行かなければ、下記
[vagrant@localhost ~]$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
PHPのインストール
PHPとモジュール
[vagrant@localhost ~]$ sudo yum -y –enablerepo=remi-php70,remi install php php-mcrypt php-mbstring php-fpm php-gd php-pear php-mysql php-xml php-pdo php-mysqlnd php-devel
PHPのerror_logを/var/log/php_errors.logに書き込まれるように設定
[vagrant@localhost ~]$ sudo touch /var/log/php_errors.log
[vagrant@localhost ~]$ sudo chown apache:apache /var/log/php_errors.log
※phpinfoの確認
[vagrant@localhost ~]$ echo ‘<?php phpinfo();’ > info.php
[vagrant@localhost ~]$ php -S 0:8000
その後、http://IPアドレス:8000/info.php
で確認できます。
※モジュールの確認
[vagrant@localhost ~]$ yum –enablerepo=epel,remi,remi-php70 search php
php.iniの編集
[vagrant@localhost ~]$ sudo vi /etc/php.ini
default_charset = "UTF-8"
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
; language for internal character representation.
; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.language
mbstring.language = Japanese
; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.internal-encoding
mbstring.internal_encoding = UTF-8
; http input encoding.
; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.http-input
mbstring.http_input = UTF-8
; http output encoding. mb_output_handler must be
; registered as output buffer to function
; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.http-output
mbstring.http_output = UTF-8
; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
; portable libs/applications.
; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.encoding-translation
mbstring.encoding_translation = On
; automatic encoding detection order.
; auto means
; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.detect-order
mbstring.detect_order = auto
~~~~~~~~~~ 省略 ~~~~~~~~~~
; ログレベル。全てのエラーを取得する
error_reporting = E_ALL
; エラーをHTMLで表示する ※本番では必ずOffにすること※
display_errors = On
; phpのエラーをログに記録する
log_errors = On
; エラーの内容を詳しく知る為に 4KB 程に設定
log_errors_max_len = 4096
; 記録するログのファイルを指定
error_log = "/var/log/php_errors.log"
error_logの設定
エラーログファイルの作成と属性設定(provision.sh 設定済み)
[vagrant@localhost ~]$ sudo touch /var/log/php_errors.log
[vagrant@localhost ~]$ sudo chown apache:apache /var/log/php_errors.log
今の状態だと、エラーログが無限に溜まっていきます。
Apacheのように、古いものは削除されていく設定にします。
Apacheのローテーション設定のファイルをコピペして、ファイルを開く
[vagrant@localhost ~]$ sudo cp -ap /etc/logrotate.d/httpd /etc/logrotate.d/php
[vagrant@localhost ~]$ sudo vi /etc/logrotate.d/php
1行目の対象ログファイルを変更するだけです。
/var/log/php_errors.log {
missingok
notifempty
sharedscripts
delaycompress
postrotate
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
endscript
}
ローテーション設定の確認
-d テストとして実行する。
-v 詳細な情報を表示する。
[vagrant@localhost ~]$ sudo logrotate -dv /etc/logrotate.d/php
-f 指定したローテーションを今すぐに実行する。※これは基本実行しなくても良い。
[vagrant@localhost ~]$ sudo logrotate -df /etc/logrotate.d/php
参考
これでphpの設定はOKです。
パッケージをアップデートする際は管理者権限(root)でないと行えません。
[vagrant@localhost ~]$ su –
を実行して、管理者パスワード入力後、再度アップデートのコマンドを実行してください。
sendmailパッケージ
パッケージが入っているか確認
[vagrant@localhost ~]$ whereis sendmail
/usr/sbin/sendmail
が出力されればパスが通っている。
存在しなければ下記を実行。
インストール
[vagrant@localhost ~]$ sudo yum -y install sendmail
[vagrant@localhost ~]$ sudo yum -y install sendmail-cf
SMTPの設定
念のため、backup
yyyymmddは現在の年月日を入れておきます。
[vagrant@localhost ~]$ sudo cp -p /etc/mail/sendmail.mc /etc/mail/sendmail_yyyymmdd.mc
[vagrant@localhost ~]$ sudo cp -p /etc/mail/sendmail.cf /etc/mail/sendmail_yyyymmdd.cf
変更します
[vagrant@localhost ~]$ sudo vi /etc/mail/endmail.mc
dnl define('SMART_HOST','smtp.your.provider')
を
先頭のdnl
を削除
smtp.your.provider
を使用するSMTPサーバのドメインに変更します。
sendmail.mcの内容をsendmail.cfに適用
[vagrant@localhost ~]$ m4 sendmail.mc > sendmail.cf
これで出来なければ、su -
でroot権限で試してみると出来る。
適用したらsendmailを再起動しましょう。
[vagrant@localhost ~]$ sudo systemctl restart sendmail.service
mailパッケージをインストール
CentOS上でメールを確認するため、mailコマンドを使用したい。
CentOS7ではmailパッケージがインストールされていないため、インストールする。
本当にインストールされていないか確認
[vagrant@localhost ~]$ rpm -qa | grep mailx
該当がなければ、インストールされていない。
インストール
[vagrant@localhost ~]$ sudo yum -y install mailx
基本コマンド
mail 確認
[vagrant@localhost ~]$ mail
h 一覧表示
d 表示されているメールを削除する。
+ または「Enter」次のメールの内容を見る。
– 前のメールの内容を見る。
「Ctrl」と 「D」 終了
iptablesのインストールと設定
サーバー内の設定です。
ファイアウォール iptables の基本設定を行います。
これをやらないとハッキングやDoS攻撃などされますので、最低限のセキュリティ対策が必要です。
インストール
普通はデフォルトでされてます。
もしされていなければ、インストールします。
[vagrant@localhost ~]$ sudo yum install iptables
[vagrant@localhost ~]$ sudo yum install iptables-services
CentOS7はFireWallがデフォルトでONになっているので、OFFにする。(provision.shでオフにしてる)
ファイル構成
IPv4
IPv6
それぞれ2つずつ、計4つ用意します。
/etc/sysconfig/
iptables-config
iptables … 自分で作ります
ip6tables-config
ip6tables … 自分で作ります
設定はそれぞれ下記の通り。
iptables-config(IPv4用)
[vagrant@localhost ~]$ sudo vi /etc/sysconfig/iptables-config
# 設定変更はここだけ。※PASV FTP を可能にする
IPTABLES_MODULES="ip_conntrack_ftp ip_nat_ftp"
# 以下はデフォルトのまま 変更無し
IPTABLES_MODULES_UNLOAD="yes"
IPTABLES_SAVE_ON_STOP="no"
IPTABLES_SAVE_ON_RESTART="no"
IPTABLES_SAVE_COUNTER="no"
IPTABLES_STATUS_NUMERIC="yes"
IPTABLES_STATUS_VERBOSE="no"
IPTABLES_STATUS_LINENUMBERS="yes"
iptables(IPv4用)
[vagrant@localhost ~]$ sudo vi /etc/sysconfig/iptables
### ルール
# 基本は、-A チェーン名 マッチング条件 -j ターゲット
# -A チェーン名 : チェーンに新たなルールを追加
# -j(--jump) ターゲット : 条件したパケットをどうするか指定
# ターゲットには、ACCEPT(許可)/DROP(破棄)/REJECT(拒否)ユーザ定義チェーンなどなどを指定
#
# マッチング条件の一部
# 頭に"!"をつけると、notという意味
# -i(--in-interface) 受信インタフェース : filterテーブルでは、INPUT/FORWARDチェーンで使用可能
# -o(--out-interface) 送信インタフェース : filterテーブルでは、OUTPUT/FORWARDチェーンで使用可能
# -p(--protocol) プロトコルまたはプロトコル番号 : 指定できるプロトコルは、tcp/udp/icmp/all
# -s(--source、--src) 送信元アドレス : "192.168.0.1"、"192.168.0.0/24"、"192.168.0.0/255.255.255.0"のように指定
# -d(--destination、--dst) 送信先アドレス : "192.168.0.1"、"192.168.0.0/24"、"192.168.0.0/255.255.255.0"のように指定
#
# 以下は拡張されたマッチングの一部
# 頭に"!"をつけると、notという意味
# -m tcp --sport(--source-port) TCP送信元ポート : "-p tcp"のとき使用可能、ポート範囲は"0:1023"のように指定
# -m tcp --dport(--destination-port) TCP送信先ポート : "-p tcp"のとき使用可能、ポート範囲は"0:1023"のように指定
# -m udp --sport(--source-port) UDP送信元ポート : "-p udp"のとき使用可能、ポート範囲は"0:1023"のように指定
# -m udp --dport(--destination-port) UDP送信先ポート : "-p udp"のとき使用可能、ポート範囲は"0:1023"のように指定
# -m state --state 接続状態 : 接続状態には、NEW(新規)/ESTABLISHED(接続中)/RELATED(既存の接続に関係?)/INVALID(その他)を指定
# --icmp-type ICMPタイプ : "-p icmp"のとき使用可能、指定できるICMPタイプは"iptables -p icmp -h"で確認
#
# プロトコル -p 50 ... ipv6-crypt/ ESP(Encapsulating Security Payload)
# プロトコル -p 51 ... ipv6-auth / AH(Authentication Header) ただし、Linux FreeS/WANではAHは使用しない
# ↓ここから設定
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
#
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# ここまでは、まずお約束、以下、必要に応じて
#
# dns
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
#
# http
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
#
# ssh
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#
# ftp
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
#
# mail
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT
#
# proxy
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
#
# webmin / usermin
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10000 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20000 -j ACCEPT
#
# Reject
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
#
COMMIT
ip6tables-config(IPv6用)
[vagrant@localhost ~]$ sudo vi /etc/sysconfig/ip6tables-config
特に変更なし
ip6tables(IPv6用)
[vagrant@localhost ~]$ sudo vi /etc/sysconfig/ip6tables
### ルール
# 基本は、-A チェーン名 マッチング条件 -j ターゲット
# -A チェーン名 : チェーンに新たなルールを追加
# -j(--jump) ターゲット : 条件したパケットをどうするか指定
# ターゲットには、ACCEPT(許可)/DROP(破棄)/REJECT(拒否)ユーザ定義チェーンなどなどを指定
#
# プロトコル -p 50 ... ipv6-crypt/ ESP(Encapsulating Security Payload)
# プロトコル -p 51 ... ipv6-auth / AH(Authentication Header) ただし、Linux FreeS/WANではAHは使用しない
#
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
#
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p ipv6-icmp -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
#-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# 今はIPv6の接続は主流でないので設定不要。
# IPv6時代が来たら考えましょう。
#
# Reject
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
#
COMMIT
起動・終了・再起動・自動起動設定
それぞれ下記の通り
[vagrant@localhost ~]$ sudo systemctl start iptables
[vagrant@localhost ~]$ sudo systemctl stop iptables
[vagrant@localhost ~]$ sudo systemctl restart iptables
[vagrant@localhost ~]$ sudo systemctl enable iptables
エラー?
Error occurred at line: 6
Try `iptables-restore -h’ or ‘iptables-restore –help’ for more information.
これが出た際は、何も書いてない行に空白(スペース)がないか確認してみましょう。
mysql
mariaDBの削除
CentOS7にはmariaDBがデフォルトでインストールされている場合があります。
MySQLと競合を起こさないため、予めmariaDB本体とデータフォルダを削除します。
[vagrant@localhost ~]$ sudo yum -y remove mariadb-libs
[vagrant@localhost ~]$ sudo rm -rf /var/lib/mysql/
インストール
MySQL公式のyumリポジトリを追加します。
[vagrant@localhost ~]$ sudo yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
これを追加すると mysql-community-server というパッケージを検索することが出来るようになります。
下記のコマンドで詳細情報を見てみます。
[vagrant@localhost ~]$ sudo yum info mysql-community-server
さて、MySQLをインストールします。
[vagrant@localhost ~]$ sudo yum -y install mysql-community-server
完了したら、MySQLがインストールされたか、バージョンを確認してみましょう。
[vagrant@localhost ~]$ mysqld –version
※2016/04/15現在で5.7.12です
my.cnfの変更
[vagrant@localhost ~]$ sudo vi /etc/my.cnf
ファイルの末尾に下記を追加
[mysqld]
character-set-server = utf8
default_password_lifetime = 0
※文字コードをutf8に設定し、パスワードの期限をなくす
mysqlを起動
自動で起動するように設定します。
[vagrant@localhost ~]$ sudo systemctl enable mysqld.service
MySQLを起動します。
[vagrant@localhost ~]$ sudo systemctl start mysqld.service
ログイン
- 初期パスワードを確認する
MySQL5.7から初期パスワードが付くようになりました。
[root@localhost ~]$ sudo vi /var/log/mysqld.log
[Note] A temporary password is generated for root@localhost: 初期パスワード - rootでログイン
[root@localhost ~]$ mysql -u root -p’初期パスワード’ - パスワードを変更
mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘変更後のパスワード’;
http://qiita.com/ryouma_nagare/items/5e644ad2430e18a87bc2
参考
※もしログイン時にエラーが出た場合※
- パスワードが通らない!!?
パスワードを入れても、
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
これが出た場合、パスワードが違います。
正しいパスワードが分かればいいですが、分からない場合は下記のように対処できます。- サーバーを停止させましょう
[root@localhost ~]# service mysqld stop - サーバーをセーフモードで起動させましょう
[root@localhost ~]# mysqld_safe –skip-grant-tables - 別でターミナルを開きましょう
Tera Termの場合は、[Alt]+[D]で開きます - サーバーに入りましょう
[root@localhost ~]# mysql -u root - mysqlデータベースに入ります
mysql> use mysql; - パスワードをリセットしましょう
mysql> UPDATE user SET authentication_string=password(‘パスワード’) WHERE user=’root’;
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
↑
こんな感じで表示されると思います。 - mysqlから抜けましょう
mysql> flush privileges;
mysql> quit; - セーフモードを解除させましょう
別で開いたターミナルで下記コマンドを入力
[root@localhost ~]# service mysqld stop
[root@localhost ~]# exit - サーバーをリスタートしましょう
[root@localhost ~]# service mysqld restart - 6で設定したパスワードでmysqlにログインしましょう
[root@localhost ~]# mysql -u root -p’6で設定したパスワード’ - パスワードを変更させて完了です
mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘変更後のパスワード’;
- サーバーを停止させましょう
- その他
cat: /var/run/mysqld/mysqld.pid: Permission denied
が出る場合、権限がないっぽい?
[root@localhost ~]# ls -ld /var/run/mysqld/
drwxr-xr-x 2 mysql mysql 4096 Mar 8 15:13 /var/run/mysqld/
[root@localhost ~]# chown -R mysql:mysql /var/run/mysqld/
これで解決するかも。
エラーログ
tail /var/log/mysqld.log
tail コマンドはファイルの末尾を表示します。初期設定は10行を表示させます。
grep log-error /etc/my.cnf log-error=/var/log/mysqld.log
passwordの罠
5.7からはpasswordのカラムがなくなり、
authentication_string になってます。
アンインストールしたい場合
yumでアンインストール処理を実施
sude yum -y remove mysql-server mysql-devel
sudo yum -y remove mysql
sudo yum -y remove mysql-libs
データが入っているディレクトリを削除
rm -rf /var/lib/mysql
phpMyAdmin
インストール
[vagrant@localhost ~]$ sudo yum -y –enablerepo=remi-php70,remi install phpMyAdmin
phpMyAdmin.conf
[vagrant@localhost ~]$ sudo vi /etc/httpd/conf.d/phpMyAdmin.conf
※変更内容
phpMyAdmin.conf
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
Require all granted
## ↑ Require ディレクティブの引数を「local」から「all granted」に
</IfModule>
設定
バージョンが4.5.5.1にしてますが、適宜最新のものに書き換えてください。
wget https://files.phpmyadmin.net/phpMyAdmin/4.5.5.1/phpMyAdmin-4.5.5.1-all-languages.tar.gz
tar zxvf phpMyAdmin-4.5.5.1-all-languages.tar.gz
rm -f phpMyAdmin-4.5.5.1-all-languages.tar.gz
mv phpMyAdmin-4.5.5.1-all-languages /var/www/html/phpMyAdmin
cp /vagrant/phpMyAdmin/config.sample.inc.php /vagrant/phpMyAdmin/config.inc.php
sudo vi /vagrant/phpMyAdmin/config.inc.php
#config.inc.php変更箇所
#パスフレーズ設定
$cfg[‘blowfish_secret’] = ‘passphrase’;
#下記を追記
$cfg[‘Lang’] = ‘ja-utf-8’;
$cfg[‘DefaultLang’] = ‘ja-utf-8’;
$cfg[‘DefaultCharset’] = ‘utf-8’;
http://www.dbonline.jp/phpmyadmin/install/index4.html
http://d.hatena.ne.jp/zhuweichen/20130228/1362044999
http://plusblog.jp/16543/
phpMyAdminの確認
http://192.168.33.10/phpMyAdmin/
※エラーが出る場合
The mbstring extension is missing. Please check your PHP configuration.
mbstring extensionが有効になってません。
php-mbstringがインストールされている場合は、php.iniの設定が必要です。
extension=php_mbstring.so
SET PASSWORD FOR pma@localhost = PASSWORD(‘Y?gSDI%7w$pk))+i’);
WordPress
インストール
公式サイトからwgetでダウンロードします。
[root@localhost ~]$ cd /vagrant
[root@localhost ~]$ wget https://ja.wordpress.org/wordpress-4.5.1-ja.tar.gz
解凍
[root@localhost ~]$ tar zxvf wordpress-4.5.1-ja.tar.gz
圧縮ファイルの削除
[root@localhost ~]$ rm -f wordpress-4.5.1-ja.tar.gz
設定
mysqlの設定
rootでログイン後
mysql> create database wp;
mysql> grant all privileges on wp.* to wp@localhost identified by ‘wp用の任意パスワード’;
Apacheの設定
バックアップを作成
[root@localhost ~]$ sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
設定する
[root@localhost ~]$ sudo vi /etc/httpd/conf/httpd.conf
wordpressの初期設定
http://192.168.33.10/wordpressへアクセス
参考通りにやれば出来るはず!
※ルートディレクトリをWordPressのトップページに設定する場合は下記の設定をします。今回はしません。
DocumentRoot "/vagrant/wordpress" ← DocumentRootをWordPressのディレクトリに変更
<Directory "/vagrant/wordpress"> ← DocumentRootと同じディレクトリに変更
AllowOverride All ← .htaccessによるディレクティブの上書きを許可
apache再起動
[root@localhost ~]$ sudo systemctl restart httpd
文字化け
WP管理画面の 外観 > メニュー が文字化けしました。
php.iniのmbstring.http_inputを下記のように編集したら文字化けが直りました。
mbstring.http_input = auto
↓
mbstring.http_input = UTF-8
時刻合わせ
chronyのインストール
[vagrant@localhost ~]$ sudo yum install -y chrony
自動起動
[vagrant@localhost ~]$ sudo systemctl enable chronyd
ファイルを開く
[vagrant@localhost ~]$ sudo vi /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
chronyの起動
[vagrant@localhost ~]$ sudo systemctl start chronyd
時刻の確認
[vagrant@localhost ~]$ date
合ってない場合はJST(日本)に設定されているか確認
[vagrant@localhost ~]$ timedatectl
JSTじゃない場合は、timezoneを変更する
[vagrant@localhost ~]$sudo timedatectl set-timezone Asia/Tokyo
Vagrantのネットワークあれこれ
http://labs.septeni.co.jp/entry/20140707/1404670069
viコマンド
http://tonio.hateblo.jp/entry/20081023/1224769547
行数表示
:set number
.htaccessの設定
取りあえずルートディレクトリにこれを置く
Ex).htaccess
<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
Options -Indexes
deny from all
allow from 192.168.33.1
allow from 127.0.0.1
CentOSの色々
- PuTTYのログアウト
exit - CentOSの一時停止
vagrant suspend - CentOSを立ち上げる
vagrant up
※参考※
コマンド | 概要 |
---|---|
vagrant up | 仮想マシンを起動 |
vagrant ssh | 仮想マシンにログイン |
vagrant halt | 仮想マシンを停止 |
vagrant suspend | 仮想マシンを一時停止 |
vagrant status | 仮想マシンの起動状態を確認 |
vagrant destroy | 仮想マシンを破棄 |
Filezillaで接続
- ホスト
192.168.33.10 - プロトコル
SFTP - ユーザ
vagrant - pw
既定のPW(デフォだとvagrant) - リモートディレクトリ
/var/www/html
これで接続できない場合は、一度再起動するといいかも。
ファイルを作って表示
index.php等の名前で作成したプログラムをブラウザで表示させる場合、
ip名 + ファイル名で表示される。
今回の場合だと、
http://192.168.33.10/index.php
で、表示される。
ブラウザパスを変更したい
C:\Windows\System32\drivers\etc\hosts
をテキストエディタで開く。(管理者権限で開くこと)
コメントアウトはせず、
ipアドレス + タブ + 任意の名前
を、追記する。
Ex)192.168.33.10 dev.test
上記例のように記載して保存すると、
http://dev.test/index.php
でアクセスできるようになる。