■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インストール準備
ユーザとパスワードを設定(設定したパスワードは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権限
1 2 |
[zoe@localhost ~]# su - [password]入力 |
・date日付確認
1 2 |
[root@localhost ~]# date Mon Mar 9 20:33:49 JST 2015 |
・文字コード変更
1 2 |
[root@localhost ~]# vi /etc/locale.conf LANG="ja_JP.UTF-8"変更 |
・ブラウザアクセスポート設定
1 2 3 4 5 |
[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 ←追加 |
・イーサネット自動起動設定
1 2 3 4 |
[root@localhost ~]# ifconfig [root@localhost ~]# nmcli con mod [イーサネット名] connection.autoconnect "yes" [root@localhost ~]# systemctl restart NetworkManager [root@localhost ~]# systemctl restart network |
・ネット疎通確認(DHCP割り当てIP)
1 |
[root@localhost ~]# ifconfig |
・内部通信確認
1 2 |
[root@localhost ~]# ping [inetIP] Ctrlキー+Cで終了 |
・外部通信確認
1 2 |
[root@localhost ~]# wget www.yahoo.co.jp [root@localhost ~]# curl www.yahoo.co.jp |
ここまでくれば外部SSHからの接続が可能になります。teraterm・poderosa等で接続をしてみましょう。
・SELinux無効
1 2 3 4 5 6 7 |
[root@localhost ~]# getenforce Enforcing [root@localhost ~]# setenforce 0 [root@localhost ~]# getenforce Permissive [root@localhost ~]# vi /etc/sysconfig/selinux SELINUX=disabled変更 |
・Firewall設定確認
1 2 3 4 5 6 7 8 9 10 |
[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リポジトリ追加
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[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 |
・インストール済パッケージ一括アップデート
1 2 |
[root@localhost ~]# yum -y upgrade [root@localhost ~]# yum -y update |
・yum-cronインストール&自動アップデート
1 2 3 4 5 6 7 8 9 |
[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 |
・各種コマンドモジュールインストール
1 2 3 |
[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 |
・再起動
1 |
[root@localhost ~] reboot |
▼5.ミドルウェア導入
・Apache
1 2 |
[root@localhost ~]# yum -y install httpd-devel [root@localhost ~]# yum -y install mod_ssl |
・PHP
1 2 3 4 5 6 7 8 9 10 11 12 |
[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
1 2 |
[root@localhost ~]# yum -y install mysql-devel [root@localhost ~]# yum -y install mysql-server |
・memcached
1 2 |
[root@localhost ~]# yum -y install memcached-devel [root@localhost ~]# yum -y install php-pecl-memcache |
・YUMリポジトリ無効化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[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起動/確認/自動起動
1 2 3 |
[root@localhost ~]# systemctl start httpd [root@localhost ~]# systemctl status httpd [root@localhost ~]# systemctl enable httpd |
・PHP設定
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[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設定
1 2 3 |
[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 |
・自動起動設定確認
1 2 |
[root@localhost ~]# systemctl list-unit-files | grep -e httpd -e mysqld -e memcached 全てenabledになっていればOK |
・シャットダウン再起動
1 |
[root@localhost ~]# shutdown -r now |
これにて本題となる最低限必要な環境構築が完了しました。
ブラウザから対象IPでアクセスすると以下のような画面が表示されればOKです。
※世のエンジニアが構築する際にはまるケースとして
依存関係のyumループです。
リポジトリは時期によって更新されていきます。
都度最新版を取るよう心がけてください。
但し、内容によってはコンパイルが必要な場合もあります。
※本運用でキチッと構築する場合の設定手順ではないのであしからず。