VMWare vSphere Hypervisor 6 無償版
vSphere web Client
CentOS7
Win10Pro
mac Mojava
lampと言うのは、linux apache MySQL php の頭文字を取った略語とされています。
linuxはCentOS7系を使用、apacheはhttpd(nginx、エンジンXと読みますが、現状ではhttpdの方が学習しやすいのでそちらにしました)、sqlはmadiadb、php7.1、そしてcakephp3やvsftpdとphpMyAdminを入れます。
仮想化OSはVMWare ESXi 6.7.0を使いますので、そのままCentOS7をinstallする人には必要ありません。
VMWare vSphereはそれだけで一分野ですので、ここには記しません。
まず、デバイスを確認
nmcli d
eth1が表示されたので(環境によって変わります)、インターフェイスを自動的に有効化する設定をします。
nmcli c m eth1 connection.autoconnect yes
インターフェースとネットワークを再起動して設定を反映させます
nmcli c down eth1
nmcli c up eth1
nmcli d
で、無事に eth1 が connected になっていれば成功です。
セキュリティー上の問題点はありますが、SELinuxをoffにします。
vi /etc/selinux/config
で、
SELINUX=enforcin
を
SELINUX=disabled
に変更して下さい。その後にリブートします。
reboot
rootでログインします。
yum -y install net-tools
自分のローカルipを調べます。
ifconfig
通常、192.168.1.5とか出てきます(環境によって変わります)。
ルータのDHCPの設定で、192.168.1.5を固定化(必ずこのマシンにはこのipが降られるように)させます。
お使いのルータで DMZ の設定を見つけて 192.168.1.5 と設定します。
DMZという言葉にピンと来る人は分かると思いますが、DMZは非武装地帯を意味しています。ブロードバンドルータは通常外部から内部にアクセス出来ないのでDMZを使いますが、危険なので外部からの直接アクセスを可能にするポート開放(ポートフォワーディング)機能を使っても良いかもしれません。
サーバのホスト名が centos7lamp で、ドメインが kenjikakera.com と仮定します。
hostnamectl set-hostname centos7lamp.kenjikakera
ネットワークの再起動をします。
systemctl restart NetworkManager
sshの設定をします。まずは vi で設定します。
vi /etc/ssh/sshd_config
sshd_configは長いです。viには / で前方検索、?で後方検索、引き続き検索には n コマンドなどがありますのでググって調べて下さい。
#PermitRootLogin yes
上記の物を下記に書き換えて下さい。
PermitRootLogin no
rootでのsshログインを出来なくします。そうすることで、ユーザーアカウント名、ユーザーアカウントのパスワード、ルートのパスワードの3個を調べないといけなくなるので、攻撃が出来にくくなります。
リスタートさせてます。
systemctl restart sshd
安全性を重視するのであれば、鍵認証やポートの変更等を行なうことをお勧めします。その際には鍵やPortやPasswordAuthenticationの書き換えやファイアーウォールの設定等が必要になります。
ここでは圧倒的なシェアのvsftpdを導入します。
yum -y install vsftpd
設定ファイルのバックアップを取ります。
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org
次に編集に入りますが、viの検索機能を有効に使って下さい。少しでも間違えた場合は、[esc]:q![enter]で更新前に戻りますので、再度viで編集して下さい。
vi /etc/vsftpd/vsftpd.conf
まずは、以下の修正をして下さい。
anonymous_enable=NO
xferlog_std_format=NO
connect_from_port_20=NO
idle_session_timeout=600
data_connection_timeout=120
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=FTP
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
ls_recurse_enable=YES
tcp_warappers=NO
そして、以下の行を最後に追加して下さい。
userlist_enable=YES
userlist_deny=NO
log_ftp_protocol=YES
pasv_promiscuous=YES
use_localtime=YES
次にftpサーバへアクセスを許すユーザーアカウントの設定を行います。まずはviで全てのユーザーを削除して、その後にインストール時に作ったユーザーアカウント名(ここではuser1とします)を記述します。
vi /etc/vsftpd/user_list
以下のように変更します。
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
user1
続いて、上位のディレクトリにアクセス出来るアカウントリストもviで新規に作ります。
vi /etc/vsftpd/chroot_list
user1
ファイアーウォールの設定と起動を行います。
firewall-cmd --add-service=ftp --permanent[enter]
firewall-cmd --reload[enter]
systemctl start vsftpd[enter]
ffftpで接続実験をします。まずは新規ホストのボタンを押して、ホストの設定の基本タブの設定を行います。
ホストの設定名:実験サーバー
ホスト名(アドレス):固定ipアドレスを入れます。
ユーザー名:user1(自分が作ったアカウントです)
パスワード/パスフレーズ:xxx(自分が設定したパスワードです)
ホストの初期フォルダ:/var/www/html
拡張タブを押して、PASVモードを使うのチェックを外します。
上手く接続出来たら成功です。
このままvsftpdを起動したままですとセキュリティ上危ないので、止めて実験を終了します。
systemctl stop vsftpd[enter]
CentOS7なので、mySQLでも良いのですがここはMariaDBをインストールします。
今現在、バージョン10の安定版がありますが、ここではバージョン5をインストールしたの後にバージョン10にアップデートします。
yum -y install mariadb mariadb-server[enter]
viで、設定をします。
[mysqld]の下の行に、character-set-server=utf8 の行を入れます。
vi /etc/my.cnf
[mysqld]
character-set-server=utf8
MariaDB起動して自動起動の設定もします。
systemctl start mariadb
systemctl enable mariadb
MariaDBの初期設定をします。
mysql_secure_installation[enter]
とターミナルで入力すると、初期設定が開始されます。
まずはmariadbのパスワード(rootやユーザーアカウントのパスワードとも違います)の設定をするか聞かれるので、[enter]を入力して[Y][enter]を入力して、mariadbのパスワードを決めて[enter]を入力します。確認のため2回同じパスワードを入力します。その後は全て[Y][enter]で大丈夫です。
MariaDBのバージョンアップをします。
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
長いですが、間違えないように入力して下さい。
古いmariaDBを止めます。
systemctl stop mariadb
新しいmariadbに更新してスタートさせます。
yum -y update mariadb-server mariadb-client
systemctl start mariadb
yum -y install httpd httpd-tools httpd-devel httpd-manual
systemctl enable httpd
systemctl start httpd
firewall-cmd --add-service=http --permanent[enter]
firewall-cmd --add-service=https --permanent[enter]
firewall-cmd --reload[enter]
yum -y update
yum -y install epel-release
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum -y install yum-utils
yum-config-manager --enable remi-php71
yum -y install php php-devel php-pear php-mbstring
yum -y install php-pdo php-gd php-zip php-xml php-fpm php-mcrypt
yum -y install php-mysqlnd php-pecl-apcu php-pecl-zendopcache php-intl
yum -y install php71-php-intl.x86_64
systemctl restart httpd
別のpcかスマフォでブラウザを開き、192.168.1.5(固定したipなので、読み替えて下さい)でapacheの画面が出てきたら成功です。
続いてphpのテストをします。
viでphp確認用のファイルを新規に作ります。
vi /var/www/html/phpinfo.php
以下のように入力します。
<?php phpinfo();?>
別のpcかスマフォでブラウザを開き、192.168.1.5/phpinfo.php(固定したipなので、読み替えて下さい)でPHP Versionの画面が出てきたら成功です。
phpの情報が色々見えてしまうのはセキュリティー上、問題がありますので先ほど作ったphpinfo.phpを削除します
rm -f /var/www/html/phpinfo.php
phpの設定を進めます。cpコマンドでバックアップを取って、viで変更します。
cp /etc/php.ini /etc/php.ini.org
vi /etc/php.ini
date.timezone = "Asia/Tokyo"
expose_php = Off
mbstring.language = Japanese
mbstring.encoding_translation = On
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none
curl -s https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
cakephp導入試験用のディレクトリを作成します。
mkdir /var/www/cakephp
chmod 777 /var/www/cakephp
一端、rootをログアウト(exitコマンドを使う)してユーザーアカウントで(例ではkenji)入り直します。
exit
ログインメッセージが出たら、ユーザーアカウント名とそのパスワードでログオンします。
一端、作ったディレクトリに移動します。
cd /var/www/cakephp
composerを使って、cakephpのプロジェクトを作りますが時間がかかります。2回目以降は若干早くなります。途中にPermissions(アクセス権限)を設定するか着られるので[Y][enter]を入力します。
composer create-project --prefer-dist cakephp/app app
suコマンドでrootになり、各種設定を行います。
su
rootのパスワードを入力します。
一端、apacheの設定ファイルのバックアップを作ります。
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
AllowOverride No
vi で、上記の場所を下記に書き換えて下さい
DocumentRoot "/var/www/cakephp/app"
<Directory "/var/www/cakephp/app">
AllowOverride All
apacheを再起動させます。
systemctl restart httpd
cakephpの設定をviで行います。xxxは、madiadbのパスワードです。
vi /var/www/cakephp/app/config/app.php
'Datasource'以下をviで修正します。
'username' => 'root',
'password' => 'xxx',
'timezone' => 'Asia/Tokyo',
起動時のタイムゾーンをviで修正します。
vi /var/www/cakephp/app/config/bootstrap.php
date_default_timezone_set('Asia/Tokyo');
apacheの再起動をします。
systemctl restart httpd
別のpcかスマフォでブラウザを開き、192.168.1.5/app.php(固定したipなので、読み替えて下さい)でcakephpの画面が出てきたら成功です。
以上でcakephpの実験は終了です。
apacheの設定を元に戻します。
cp /etc/httpd/conf/httpd.conf.org /etc/httpd/conf/httpd.conf
MySQLやMariaDBをwebブラウザからコントロール出来るphpMyAdminの導入をします。
yum-config-manager --enable remi
yum -y install --enablerepo=remi,remi-php71 phpMyAdmin
設定ファイルをcpコマンドでバックアップした後にviで編集します。
cp /etc/httpd/conf.d/phpMyAdmin.conf /etc/httpd/conf.d/phpMyAdmin.conf.org
viで、Require localの部分をRequire all grantedにすればアクセス制限が無くなります。
vi /etc/httpd/conf.d/phpMyAdmin.conf
Require all granted
apacheを再起動させます。
systemctl restart httpd
別のpcかスマフォでブラウザを開き、192.168.1.5/phpmyadmin/(固定したipなので、読み替えて下さい)でphpmyadminの画面が出てきたら成功です。
設定を元のファイルにに戻してapacheを再起動させてアクセス出来なくします。
cp /etc/httpd/conf.d/phpMyAdmin.conf.org /etc/httpd/conf.d/phpMyAdmin.conf
強制的に上書きする方法もいくつかあるのですが、ここは[y][enter]と入力します。
apacheを再起動させます。
systemctl restart httpd
これで、phpmyadminの実験は終わりです。