■VM環境構築(VMPlayer+CentOS7+Apache+PHP+MySQL)
2015年現在様々な仮想マシンが現れましたね。 今も昔も色々入れては試しての繰り返しで使う 開発環境としては持って来い!なツールの一つ。 今回、弊社若手エンジニアより要望がありましたので、VMで開発環境構築を記載します。
弊社はAWSを利用することも多々あり たとえばAmazonEc2にVMwareをマイグレーションできたり、徐々に連携拡張されつつあるVMware製品で開発環境を構築します。 とはいってもコストはかけられないのと 開発環境レベルでいいので今回はVMPlayerを導入で構築します。 CentOS7で標準となったmariaDBを個人的に使いたいですが、 まだ案件での適用が少なく、、、 なるべく案件と同環境に寄せる為、今回はMySQLの手順になります。
——————————————————— VMとは?→ virtual machine : 仮想マシン(仮想PC) Windows 上で別の OSを動かすことができるソフトウェア! ———————————————————
■手順(2015/03/09現在)▼1.VMPlayerダウンロード&インストール https://my.vmware.com/jp/web/vmware/free#desktop_end_user_computing/vmware_player/7_0 VMware Player for Windows[VMware Player 7.1.0]ダウンロード
ダウンロード後は個人の環境に合わせてインストール
▼2.CentOSダウンロード http://ftp.iij.ad.jp/pub/linux/centos/ 以下より案件毎に検証するOSを選択
私のPCは64bitなので64版を選択 現時点最新のCentOS7を試してみます。 http://ftp.iij.ad.jp/pub/linux/centos/7.0.1406/isos/x86_64/ CentOS-7.0-1406-x86_64-DVD.iso(3.9G)
▼3.VM上にCentOSインストール VMPlayerを立ち上げてOSインストール準備
新規仮想マシンの作成を選択
ダウンロードしたOSを指定
ユーザとパスワードを設定(設定したパスワードはrootも同等となります)
Myマシンに名称設定
容量とディスクは自由ですが、パフォーマンスも加味するなら単一をお勧め
自身が設定した環境を確認した上でインストールを開始します
先ほど設定したユーザを選択してログイン
▼4.初期設定 ————————————————————– CentOS7よりシステムの根幹だったINIT系がsystemdに統一されました。
操作
init
systemd
起動
service [service] start
systemctl start [service]
終了
service [service] stop
systemctl stop [service]
強制終了
kill -9 [PID]
systemctl kill -s 9 [service]
再起動
service [service] restart
systemctl restar [service]
設定反映
service [service] reload
systemctl reloa [service]
状態取得
service [service] status
systemctl status [service]
自動起動有効
chkconfig [service] on
systemctl enable [service]
自動起動無効
chkconfig [service] off
systemctl disable [service]
サービス一覧
ls /etc/init.d
systemctl –type [service]
ネット系コマンド
ifconfig →
ip addr , ip -s link
route →
ip route
arp →
ip neigh
netstat →
ss
————————————————————–
・言語設定
・時刻設定 メニューバー「Applications」→「clock」でTokyoを検索し設定 メニューバー「Applications」→「System Tools」→「Settings」→「Date & Time」→「Unlock」で設定したパスワードを入力→Region:Asia City:Tokyo設定 ・VMPlayer内のターミナルを起動 メニューバー「Accessories」→「Utilities」→「Terminal」 ——————————- viコマンド共通 iキーで編集モード Escキーで編集モード終了 Shift+QキーでExモード :wq で上書き保存して終了 :q! で編集破棄して終了 ——————————-
・root権限
[ zoe @ localhost ~ ] # su -
[ password ] 入力
・date日付確認
[ root @ localhost ~ ] # date
Mon Mar 9 20 : 33 : 49 JST 2015
・文字コード変更
[ root @ localhost ~ ] # vi /etc/locale.conf
LANG = "ja_JP.UTF-8" 変更
・ブラウザアクセスポート設定
[ root @ localhost ~ ] # vi /etc/sysconfig/iptables
- A INPUT - p tcp - m state -- state NEW - m tcp -- dport 21 - j ACCEPT ←追加
- A INPUT - p tcp - m state -- state NEW - m tcp -- dport 22 - j ACCEPT
- A INPUT - p tcp - m state -- state NEW - m tcp -- dport 80 - j ACCEPT ←追加
- A INPUT - p tcp - m state -- state NEW - m tcp -- dport 3306 - j ACCEPT ←追加
・イーサネット自動起動設定
[ root @ localhost ~ ] # ifconfig
[ root @ localhost ~ ] # nmcli con mod [イーサネット名] connection.autoconnect "yes"
[ root @ localhost ~ ] # systemctl restart NetworkManager
[ root @ localhost ~ ] # systemctl restart network
・ネット疎通確認(DHCP割り当てIP)
[ root @ localhost ~ ] # ifconfig
・内部通信確認
[ root @ localhost ~ ] # ping [inetIP]
Ctrl キー+ C で終了
・外部通信確認
[ root @ localhost ~ ] # wget www.yahoo.co.jp
[ root @ localhost ~ ] # curl www.yahoo.co.jp
ここまでくれば外部SSHからの接続が可能になります。teraterm・poderosa等で接続をしてみましょう。
・SELinux無効
[ root @ localhost ~ ] # getenforce
Enforcing
[ root @ localhost ~ ] # setenforce 0
[ root @ localhost ~ ] # getenforce
Permissive
[ root @ localhost ~ ] # vi /etc/sysconfig/selinux
SELINUX = disabled 変更
・Firewall設定確認
[ root @ localhost ~ ] # firewall-cmd --list-services --zone=public
dhcpv6 - client ssh
[ root @ localhost ~ ] # firewall-cmd --add-service=http --zone=public --permanent
success
[ root @ localhost ~ ] # firewall-cmd --add-service=https --zone=public --permanent
success
[ root @ localhost ~ ] # firewall-cmd --reload
success
[ root @ localhost ~ ] # firewall-cmd --list-services --zone=public
dhcpv6 - client http https ssh
・YUMリポジトリ追加
[ root @ localhost ~ ] # rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
[ root @ localhost ~ ] # rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
[ root @ localhost ~ ] # rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
[ root @ localhost ~ ] # rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
[ root @ localhost ~ ] # vi /etc/yum.repos.d/remi.repo
[ remi ]
enabled = 1 変更
[ root @ localhost ~ ] # rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
[ root @ localhost ~ ] # rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7
[ root @ localhost ~ ] # rpm -ivh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
・インストール済パッケージ一括アップデート
[ root @ localhost ~ ] # yum -y upgrade
[ root @ localhost ~ ] # yum -y update
・yum-cronインストール&自動アップデート
[ root @ localhost ~ ] # yum -y install yum-cron
[ root @ localhost ~ ] # vi /etc/yum/yum-cron.conf
・・・
# Whether updates should be applied when they are available. Note
# that download_updates must also be yes for the update to be applied.
apply_updates = yes 変更
・・・
[ root @ localhost ~ ] # systemctl start yum-cron
[ root @ localhost ~ ] # systemctl enable yum-cron
・各種コマンドモジュールインストール
[ root @ localhost ~ ] # yum -y groupinstall base
[ root @ localhost ~ ] # yum -y groupinstall "Development tools" "japanese support"
[ root @ localhost ~ ] # yum -y groupinstall "japanese support"
・Gメールリレー設定
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[ root @ localhost ~ ] # vi /etc/postfix/gmail
[ smtp . gmail . com ] : 587 <Gmail のアドレス>: <Gmail のパスワード>新規作成
[ root @ localhost ~ ] # chmod 600 /etc/postfix/gmail
[ root @ localhost ~ ] # postmap /etc/postfix/gmail
[ root @ localhost ~ ] # vi /etc/postfix/main.cf
relayhost = [ smtp . gmail . com ] : 587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash : / etc / postfix / gmail
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes
[ root @ localhost ~ ] # sed -i '/^root:/d' /etc/aliases
[ root @ localhost ~ ] # echo "root: XXXXX@gmail.com" >> /etc/aliases
[ root @ localhost ~ ] # newaliases
・再起動
[ root @ localhost ~ ] reboot
▼5.ミドルウェア導入 ・Apache
[ root @ localhost ~ ] # yum -y install httpd-devel
[ root @ localhost ~ ] # yum -y install mod_ssl
・PHP
[ root @ localhost ~ ] # yum -y install php
[ root @ localhost ~ ] # yum -y install php-devel
[ root @ localhost ~ ] # yum -y install php-pdo
[ root @ localhost ~ ] # yum -y install php-mysql
[ root @ localhost ~ ] # yum -y install php-mbstring
[ root @ localhost ~ ] # yum -y install php-mcrypt
[ root @ localhost ~ ] # yum -y install php-gd
[ root @ localhost ~ ] # yum -y install php-pear
[ root @ localhost ~ ] # yum -y install php-pear-DB
[ root @ localhost ~ ] # yum -y install php-pear-Auth-*
[ root @ localhost ~ ] # yum -y install php-pecl-apc-devel
[ root @ localhost ~ ] # yum -y install zlib-devel
・MySQL
[ root @ localhost ~ ] # yum -y install mysql-devel
[ root @ localhost ~ ] # yum -y install mysql-server
・memcached
[ root @ localhost ~ ] # yum -y install memcached-devel
[ root @ localhost ~ ] # yum -y install php-pecl-memcache
・YUMリポジトリ無効化
[ root @ localhost ~ ] # vi /etc/yum.repos.d/rpmforge.repo
[ epel ]
enabled = 0 変更
[ root @ localhost ~ ] # vi /etc/yum.repos.d/remi.repo
[ remi ]
enabled = 0 変更
[ root @ localhost ~ ] # vi /etc/yum.repos.d/mysql-community.repo
[ mysql - connectors - community ]
enabled = 0 変更
[ mysql - tools - community ]
enabled = 0 変更
[ mysql56 - community ]
enabled = 0 変更
・apache起動/確認/自動起動
[ root @ localhost ~ ] # systemctl start httpd
[ root @ localhost ~ ] # systemctl status httpd
[ root @ localhost ~ ] # systemctl enable httpd
・PHP設定
[ root @ localhost ~ ] # mkdir /var/log/php
[ root @ localhost ~ ] # chown apache /var/log/php
[ root @ localhost ~ ] # chmod 755 /var/log/php
[ root @ localhost ~ ] # vi /etc/php.ini
date . timezone = 'Asia/Tokyo' 変更
error_reporting = E_ALL & ~ E_NOTICE 変更
error_log = "/var/log/php/php_errors.log" 変更
[ root @ localhost ~ ] # vi /etc/php.d/memcache.ini
session . save_handler = memcache 変更
session . save_path = "tcp://localhost:11211" 変更
[ root @ localhost ~ ] # vi /etc/httpd/conf.d/php.conf
#php_value session.save_handler "files"変更
#php_value session.save_path "/var/lib/php/session"変更
・memcached設定
[ root @ localhost ~ ] # systemctl enable memcached
[ root @ localhost ~ ] # systemctl start memcached
[ root @ localhost ~ ] # systemctl restart httpd
・MySQL設定
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[ root @ localhost ~ ] # mkdir /var/log/mysql
[ root @ localhost ~ ] # chown -R mysql:mysql /var/log/mysql
[ root @ localhost ~ ] # vi /etc/my.cnf
[ mysqld ]
以下追加( 存在していたら不要)
user = mysql
skip - character - set - client - handshake
character - set - server = utf8
slow_query_log = 1
slow_query_log_file = / var / log / mysql / slow_query . log
long_query_time = 1
min_examined_row_limit = 1000
# Recommended in standard MySQL setup
sql_mode = NO_ENGINE_SUBSTITUTION , STRICT_TRANS_TABLES
↓
sql_mode = NO_ENGINE_SUBSTITUTION
[ client ]
default - character - set = utf8
[ root @ localhost ~ ] # systemctl start mysqld
[ root @ localhost ~ ] # systemctl status mysqld
[ root @ localhost ~ ] # systemctl enable mysqld
[ root @ localhost ~ ] # mysql_secure_installation
root パスワードの設定以外はEnter でOK
・log lotate設定
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[ root @ localhost ~ ] # vi /etc/logrotate.d/httpd
記載内容を全消しし、以下を記載
/ var / log / httpd / * log / var / log / php / * log {
daily
missingok
dateext
rotate 60
create 644 apache apache
sharedscripts
postrotate
/ sbin / service httpd reload > / dev / null 2 > / dev / null || true
endscript
}
[ root @ localhost ~ ] # vi /etc/logrotate.d/mysql
記載内容を全消しし、以下を記載
/ var / log / mysql / * log {
daily
missingok
dateext
rotate 60
sharedscripts
postrotate
if test - x / usr / bin / mysqladmin && \
/ usr / bin / mysqladmin ping - u root - p [ 設定したパスワード] & > / dev / null
then
/ usr / bin / mysqladmin flush - logs - u root - p [ 設定したパスワード]
fi
endscript
}
[ root @ localhost ~ ] # chmod 600 /etc/logrotate.d/mysql
・自動起動設定確認
[ root @ localhost ~ ] # systemctl list-unit-files | grep -e httpd -e mysqld -e memcached
全てenabled になっていればOK
・シャットダウン再起動
[ root @ localhost ~ ] # shutdown -r now
これにて本題となる最低限必要な環境構築が完了しました。
ブラウザから対象IPでアクセスすると以下のような画面が表示されればOKです。
※世のエンジニアが構築する際にはまるケースとして 依存関係のyumループです。 リポジトリは時期によって更新されていきます。 都度最新版を取るよう心がけてください。 但し、内容によってはコンパイルが必要な場合もあります。
※本運用でキチッと構築する場合の設定手順ではないのであしからず。