お知らせ

お知らせ NEWS

社内でのWeb検証・確認用にLAMP環境を構築した件

2019年6月19日 /マージBLOG、ITインフラ整備
お久しぶりです。ネットワーク、サーバ等のインフラ構築を担当している桑野です。
社内の環境構築を行った記録です。

ただし、レスポンスに難あり・・・なので、次の手を考え中。

構築のきっかけは、「社内のWeb検証環境がほしいね!」の一言から。
1. Apacheは、サブドメインで構成し、検証する人が適当に追加!
2. 各種設定ファイルは、Windows共有フォルダに保存し、誰でも触れる!
3. phpMyAdmin で、DBを管理!
4. さらに、Webminでサービス再起動、設定反映!(DBも管理可能)

これらを実装することにしました。
Hyper-V上にCentOSを導入し、Dockerで構築を開始するも、細かい調整で断念・・・
そのまま、CentOSにパッケージを導入し、構築しました。

【構築環境の概要】

検証用サーバ
 OS:CentOS 7.6(最新)
 Apache:2.4系パッケージ
 MySQL:5.7系最新
 PHP:7.3系最新 OS:Windows 2016 Strage Server Workgroup

【利用イメージ】



構築時に考慮したポイント!
・サブドメインへのアクセスは、ドメインのレコードに、ワイルドカードを設定し、検証環境サーバへすべて転送
  ※ローカルにDNSサーバがあることが前提です。
・サービスを起動するユーザとマウントする各フォルダのオーナーを合わせて、アクセス権限を設定
・設定ファイルは、実態は共有フォルダに保存し、設定で読み込むファイルをシンボリックリンクで設置
・サーバ管理者を不要にするために、phpMyAdminとWebmin を導入

では、さっそく構築

1. CentOS導入

・CentOSを最小構成で導入

最新へアップデート

2. パッケージ管理コマンド 「yum」を使って、最新へアップデートする。
 # yum –y update 


3. 必要なパッケージを導入


 # yum –y install yum-utils
- MySQL -
 # yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

 リポジトリの切り替え

 # yum-config-manager --enable mysql57-community ← 5.7系有効化
 # yum-config-manager --disable mysql80-community ← 8.0系無効化

 切り替え後の確認

 # yum repolist all |grep mysql

 !mysql57-community/x86_64 MySQL 5.7 Community Server 有効: 347
 !mysql80-community/x86_64 MySQL 8.0 Community Server 無効
# yum –y install mysql-community-server

MySQLサービス起動と自動起動設定

 # systemctl start mysqld
 # systemctl enable mysqld

DB初期化
# mysql_secure_installation

 ※初期パスワードは、/var/log/mysqld.log を確認

- PHP -
 # yum -y install epel-release http://ftp.riken.jp/Linux/remi/enterprise/remi-release-7.rpm
 # yum -y install --enablerepo=epel, remi-php73 php php-pdo php-mysql php-mbstring php-xml php-json php-pgsql php-bcmath
- CIFS -
 # yum -y install cifs-utils
- Webmin -
 # yum install --enablerepo=epel,remi-php73 phpMyAdmin
- phpMyAdmin -
 # yum install http://prdownloads.sourceforge.net/webadmin/webmin-1.910-1.noarch.rpm


4. 設定

 共有フォルダのマウント /etc/fstab の設定追加

 //server/share/web /home/user/web cifs vers=3.0,credentials=/etc/smbpasswd.2,
uid=1000,gid=1000,iocharset=utf8,defaults 0 0

 こんな感じ・・・
 smbpasswd.2 には、user=〇〇、password=〇〇、domain=〇〇を設定

 マウントポイント作成
# mkdir /home/user/web

 マウント実行
 
# mount –a

 結果確認 いずれかのコマンド

 # mount
 # df -h

 各種設定ファイルの設置

 - Apahe -
 # ln -s /home/admin/config/httpd/vhost.conf /etc/httpd/conf.d/vhosts.conf
 - PHP -
 # ln -s /home/admin/config/php/php.ini /etc/php.ini
 - MySQL -
 # ln -s /home/admin/config/mysql/my.cnf /etc/my.cnf.d/my.cnf

 ログフォルダの設置
 
- Apache -
 # ln -s /home/admin/log/httpd /var/httpd/vhosts


5. 構築環境確認

 試しに、WordPress を起動してみる
 1. ソース取得 https://ja.wordpress.org/latest-ja.zip
 2. 共有フォルダに移動し、展開
 3. phpMyAdminでWordPress用DBを作成
 4. サブドメイン設定を追加
 5. Webminで設定を反映
 6. ブラウザで、サブドメインにアクセス
 7. WordPress の初期ウイザード実行
 8. サイトにアクセスして、表示されたので、動作OK!

6. その他

 ほかに試した内容
 ・Laravel
 ・CakePHP ※検証途中
 設定を忘れそうなこと
 PHPセッション情報保存ディレクトリの権限設定

7. 今後の課題

 レスポンス
 CIFSを使って、共有フォルダをマウントしているが、vers=3.0 で指定しても、3.0の速度は全く出ていない。そのため、Web表示に対するレスポンスが悪すぎる
 Windowsの共有フォルダをマウントせずに、Sambaを使って、関連フォルダを共有する手もあるかもと、思考中・・・

 その他環境も統合できれば・・・
 その他、DBやFrameworkなど、様々な環境に対応していきたい!

 いずれDockerなどで、構築を楽にしたい・・・

ということで、長文でしたが、お付き合いいただきありがとうございました。
続きは、検討中・・・また、お会いしましょう!
桑野(システムエンジニア)
SKILL : Azure, Hyper-V, VMware, UNIX, Linux, BSD, Windows Server, MySQL, PostgreSQL, Shell Script, Switch Configuration (Cisco, HP, juniper, Allied, YAMAHA)