ラック
Home > ブログ > 記事 > 2016年6月 > CentOS7最小限構成にLAMPとAjenti入れるまで

CentOS7最小限構成にLAMPとAjenti入れるまで

カテゴリ: サーバ

表題の通りのことをしてみました。

インストール画面

  1. 「Install CentOS7」でエンター
  2. WELCOME TO CENTOS 7.
    言語選択
    日本語(Japanese)、日本語
    [続行]
  3. インストールの概要
    • 地域設定
      日付と時刻
      アジア/東京 タイムゾーン
      キーボード
      日本語
      言語サポート
      日本語
    • ソフトウェア
      インストールソース
      ローカルメディア
      ソフトウェアの選択
      最小限のインストール
    • システム
      インストール先
      ディスクの選択→パーティションの構成
      KDUMP
      有効
      ネットワークとホスト名
      カードのオン/オフ、ホスト名、IPを設定
    • rootパスワード設定
    • ユーザ作成
  4. インストール完了後、再起動

インターネット接続できない


connection.autoconnect no

になっており、自動で接続しないようになっていた。


# nmcli con mod AAAAAA connection.autoconnect "yes"

で設定変更、reboot(IPは上記の設定値が入っていたのでそのまま)。

インストール完了後までLANケーブルを挿していなかったのが原因と思われる。

 

パッケージのアップデート


# yum update

暫く待つべし。

 

IP振り直し


# nmcli connection modify AAAAAA ipv4.addresses XXX.XXX.XXX.XXX/YY

AAAAAAはデバイス名、XXX.XXX.XXX.XXX/YYはIPとサブネットマスク。

rebootで反映。

 

Firewallの無効化


# systemctl list-unit-files | grep firewall
firewalld.service                           enabled

有効になっていることを確認。


# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.

鎮まり給へ。


# systemctl list-unit-files | grep firewall
firewalld.service                           disabled

disableになったことを確認。


# systemctl list-unit-files | grep firewall
firewalld.service                           disabled

rebootで再起動した後でもdisableのままか確認。

OK。

 

SELinux死すべし。慈悲はない。


# getenforce
Enforcing

状態確認。


# setenforce 0

鎮まり給へ。


# getenforce
Permissive

# vi /etc/sysconfig/selinux
SELINUX=enforcing
#下記に変更
SELINUX=disabled

黙らせる。


# getenforce
Disabled

rebootで再起動して確認。OK。

 

anacron=サン、ハイクを詠め


# cat /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

cronに何もない。


# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

anacronに設定がある。


# yum install cronie-noanacron

# yum remove cronie-anacron

依存関係の都合、nonanacronインストール後にanacron削除。

鎮まり給へ。


# cat /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

# run-parts
02 4 * * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily
22 4 * * 0 root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.weekly
42 4 1 * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.monthly

run-parts以下をcrontabに追加。

 

Ajenti


# curl https://raw.githubusercontent.com/ajenti/ajenti/1.x/scripts/install-rhel7.sh | sh

...
(略)
...

:: Adding EPEL repo
http://download.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-1.noarch.rpm を取得中
curl: (22) The requested URL returned error: 404 Not Found
エラー: http://download.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-1.noarch.rpm をスキップします - 転送に失敗しました
:: Adding Ajenti repo
http://repo.ajenti.org/ajenti-repo-1.0-1.noarch.rpm を取得中
準備しています...              ################################# [100%]
:: Installing package
読み込んだプラグイン:fastestmirror
ajenti                                                   | 2.5 kB     00:00
ajenti/7/x86_64/primary_db                                 |  30 kB   00:00

...
(略)
...

---> パッケージ pyOpenSSL.x86_64 0:0.13.1-3.el7 を インストール
---> パッケージ python-tempita.noarch 0:0.5.1-6.el7 を インストール
--> 依存性解決を終了しました。
エラー: パッケージ: ajenti-1.2.22.13-1.noarch (ajenti)
             要求: python-passlib
エラー: パッケージ: ajenti-1.2.22.13-1.noarch (ajenti)
             要求: python-daemon
エラー: パッケージ: ajenti-1.2.22.13-1.noarch (ajenti)
             要求: python-psutil >= 0.6.0
 問題を回避するために --skip-broken を用いることができます。
 これらを試行できます: rpm -Va --nofiles --nodigest
:: Done! Open https://<address>:8000 in browser

pythonのモジュールで足らないものがあるらしいので、これらを先にインストールしなければならない(最小限構成だからか)。


# yum install --enablerepo=epel python-daemon python-psutil python-passlib
読み込んだプラグイン:fastestmirror


Error getting repository data for epel, repository not found

EPELリポジトリが登録されていないと怒られた。


# yum install epel-release

# yum update

これでEPELリポジトリを追加&アップデート。


# yum install --enablerepo=epel python-daemon python-psutil python-passlib

...
(略)
...

完了しました!

今度はOK。

これでAjentiも入ってくれるはず。


# curl https://raw.githubusercontent.com/ajenti/ajenti/1.x/scripts/install-rhel7.sh | sh

...
(略)
...

完了しました!
:: Done! Open https://<address>:8000 in browser

インストール完了。

しかし、CentOS7.2ではSSL有効だとダメ、という話を聞いたのでもうちょっと設定。


# vi ajenti/config.json

"ssl": {
        "enable": false,
}

SSLのenableをデフォルト値のtrueからfalseに変更。

途中、設定ファイルの構文エラーで引っかかってしばらく沼に嵌まったものの何とかAjenti起動できるところまで行けた。

  • 一般設定
    言語設定
    ja_JP
  • パスワード
    管理者パスワード変更

 

Chrony

最小限だとntpすらないらしい。時刻がどんどんずれていっていることに気付いたので時刻合わせのためにChronyをインストール。


# yum install chrony

...
(略)
...

完了しました!

# systemctl start chronyd.service

# ps ax | grep chrony
10145 ?        S      0:00 /usr/sbin/chronyd
10153 pts/0    S+     0:00 grep --color=auto chrony
# chronyc sources
210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* balthasar.gimasystem.jp       3   6    17    17   +713us[ -927us] +/- 8007us
^- timpany.srv.jre655.com        2   6    17    17  +1706us[+1706us] +/- 9104us
^? 2001:e42:102:1526:160:16:     0   7     0   10y     +0ns[   +0ns] +/-    0ns
^- y.ns.gin.ntt.net              2   6    17    27  +3536us[+3536us] +/-  121ms

*が付いている(問い合わせ成功)ものがあるのでOK。

 

Apache


# yum install -y httpd

Apacheをインストール。


# systemctl start httpd.service

サービスをスタートして、httpでアクセスできることを確認。


# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

# systemctl list-unit-files | grep httpd
httpd.service                               enabled

サービスを自動起動に登録。OK。

 

PHP


# cd /etc/yum.repos.d

# wget http://rpms.famillecollet.com/enterprise/remi.repo
-bash: wget: コマンドが見つかりません

何…だと…?!


# yum -y install wget

# wget http://rpms.famillecollet.com/enterprise/remi.repo

# ls
CentOS-Base.repo       CentOS-Media.repo    CentOS-fasttrack.repo  epel.repo
CentOS-CR.repo         CentOS-Sources.repo  ajenti.repo            remi.repo
CentOS-Debuginfo.repo  CentOS-Vault.repo    epel-testing.repo

wgetをインストールし、再度Remiリポジトリの情報を取得する。remi.repoが/etc/yum.repos.dの下に入ったことを確認。


# yum install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-gd php-mysql

...
(略)
...

完了しました!

# php --version
PHP 7.0.7 (cli) (built: May 25 2016 18:28:00) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

Remiリポジトリからphp7をインストール。ついでに必要そうなモジュールもまとめて入れる。

php7が入ったことを確認。


# vi /etc/php.ini

;date.timezone =
date.timezone = "Asia/Tokyo"

;mbstring.language = Japanese
mbstring.language = Japanese

;mbstring.internal_encoding =
mbstring.internal_encoding = UTF-8

;mbstring.http_input =
mbstring.http_input = UTF-8

;mbstring.http_output =
mbstring.http_output = pass

;mbstring.encoding_translation = Off
mbstring.encoding_translation = On

;mbstring.detect_order = auto
mbstring.detect_order = auto

;mbstring.substitute_character = none
mbstring.substitute_charset = none

php.iniの設定を書き換える。

再起動してphpが有効になったら、phpの動作確認をする。


# cd /var/www/html/
# vi info.php

<?php phpinfo(); ?>

これでサーバのIP/info.phpへブラウザでアクセスして、phpinfoの中身が表示されていればOK。


# rm info.php

必要ないのでinfo.phpは削除。

 

MySQL


# yum remove mariadb-libs

...
(略)
...

完了しました!

# rm -rf /var/lib/mysql/

MariaDBが入っていたので削除。最小限構成でも入っているようだ。


# yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

# yum info mysql-community-server

...
(略)
...
利用可能なパッケージ
名前                : mysql-community-server
アーキテクチャー    : x86_64
バージョン          : 5.7.13

...
(略)

# yum -y install mysql-community-server

# mysqld --version
mysqld  Ver 5.7.13 for Linux on x86_64 (MySQL Community Server (GPL))

# systemctl enable mysqld.service
# systemctl start mysqld.service


MySQLのリポジトリを追加し、mysql-community-serverで5.7が利用できることを確認。

インストールしてバージョン確認、再起動時自動で起動するように設定し、起動。


# vi /etc/my.cnf

# 設定値を諸々追加
character_set_server=utf8
skip-character-set-client-handshake
log_timestamps=SYSTEM
default_password_lifetime=0
internal_tmp_disk_storage_engine=MyISAM

デフォルト文字コードなどを設定。設定後、再起動して反映。

 


# less /var/log/mysqld.log

ログの中から初期パスワードを見つけ出す。

 


# mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root:

The existing password for the user account root has expired. Please set a new password.

New password:

Re-enter new password:
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y

New password:

Re-enter new password:

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

初期パスワードで認証後、パスワード変更やテストテーブル削除など、セキュリティ周りの設定を変更。

 

とりあえずここまで。

 

各種参考

6までとの違い。

 

設定中に参考にしたサイト。

 

Ajentiのインストール。

 

Chronyについて。

 

Apache。

 

PHP。

 

MySQL。

タグ: データベース, php, サーバ環境・構築, 手順

 



関連する記事一覧