SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

CentOS7でLAMP環境

問題

CentOS7で、さくっとLAMP環境を作りたい。

lamp

答え

(さくらのVPSのカスタムOSでCentOS7 64bitをインストールするときなど)

インストール

OS

・テキストモードでインストールしたいときは、インストール開始画面でTABキー押下、オプションに inst.text と追加してEnter。

・しかし、テキストモードで進めると、パーティションが「ルート / に50GB、/home に残り」という割り振りにされてしまうので、都合が悪かったら最初からGUIで進めるのがよさそう。

・パーティション選ぶ。

・パッケージは後で追加できるのでMinimalでも問題ない。

・「Starting package installation process」が長いけど、何分か放っておく。

・「Installing ~」が長いけど、何分か放っておく。

・インストール終わる。

・シャットダウン。

・起動。

apache

# yum install httpd

apache2.4.6などがインストールされる。

MySQL(mariadb)

CentOS7からはmariadb。

# yum install mariadb mariadb-server

mariadb はクライアント。mariadb-server がデータベースサーバー。mariadb5.5.41などがインストールされる。

mariadb10がいいなと思ったら公式サイトRPMでインストール。

php

# yum install php php-mbstring php-gd php-xml php-pdo php-mysql

phpのバージョンは5.4.16などがインストールされる。

5.6がよかったら自前でコンパイルなど。

selinux

selinux を無効にする。

# setenforce 0
# vi /etc/selinux/config

SELINUX=enforcing
↓変更↓
SELINUX=disabled

設定

その前に

自動起動の設定は chkconfig でなくて、systemctl コマンド。

自動起動設定 → systemctl enable サービス名.service
自動起動解除 → systemctl disable サービス名.service

「chkconfig –list」に相当する「サービス名.service」の一覧は、「systemctl list-unit-files」、「systemctl list-unit-files -t service」で確認できる。

サービスの起動、停止は、「/etc/init.d/サービス名 start」などに代わって、systemctl コマンドにて。

サービスの起動 → systemctl start サービス名.service
サービスの停止 → systemctl stop サービス名.service
サービスの再起動 → systemctl restart サービス名.service

ファイアウォール

初期状態で、CentOS6でいうiptablesに相当する firewalld が起動していて、そのままでは httpdを起動しても外からアクセスできない。

止めるか、

systemctl stop firewalld

http を通す設定をする。

firewall-cmd --add-service=http --zone=public --permanent
systemctl restart firewalld

apache

自動起動有効化。

# systemctl enable httpd

起動。

# systemctl start httpd

ファイルの配置は好みに応じて決定されたし。

Webサイト(VirtualHost)をいくつか入れるつもりなら、/home/apache/vhosts のような場所を用意。

# mkdir -p /home/apache/vhosts
# chown -R apache:apache /home/apache

Virtualhostの設定をする。他の部分で大体の設定がされているので、ホスト名とドキュメントルートを書くだけでいい。apache2.4から「NameVirtualHost *:80」は不要となっている。

# vi /etc/httpd/conf.d/vhosts.conf

<VirtualHost *:80>
        ServerName default
        DocumentRoot /home/apache/vhosts/default/www
        <Directory /home/apache/vhosts>
                # アクセス許可は2.4からはこんな感じ
                Require all granted
        </Directory>
</VirtualHost>

<VirtualHost *:80>
        ServerName example.com
        DocumentRoot /home/apache/vhosts/example.com/www
        <Directory /home/apache/vhosts>
                # .htaccessを使いたいときなど
                AllowOverride All
                # 他に設定があれば書く
                # ...
                # アクセス許可は2.4からはこんな感じ
                Require all granted
        </Directory>
</VirtualHost>

再起動。

# systemctl restart httpd

ここまででapacheの設定がひととおりできたので、/home/apache/vhosts/default/www/test.php などに <?php phpinfo(); とだけ書いて保存して、http://IPアドレス/test.php にアクセスすると、phpinfoが表示される。

MySQL(mariadb)

自動起動有効化。

# systemctl enable mariadb

起動する。

# systemctl start mariadb

rootにパスワードを設定する、リモートのrootでの接続不許可などの初期設定。

# /usr/bin/mysql_secure_installation
...
(以下対話式に設定)
...

メモリの量や用途に応じて、設定変更。

# vi /etc/my.cnf.d/server.cnf
......
([mysqld]セクションに追記)

[mysqld]
character-set-server = utf8
innodb_buffer_pool_size = 512M
innodb_log_file_size=128M

......
......

設定の反映は、MySQLを停止して、log_file_sizeの設定を変えたので ib_logfile* を削除して、起動。

# systemctl stop mariadb
# rm /var/lib/mysql/ib_logfile*
# systemctl start mariadb

MySQLにはこのサーバーからしか接続しない場合、外部から接続できないように設定。外から見ると、「接続が許可されない(接続情報さえわかればつながりそう!)」のではなく「接続できない(稼動していない?)」ように見える。ファイヤーウォールの設定で対応してもよい。

# vi /etc/my.cnf.d/server.cnf

([mysqld]セクションに追記)
# ローカルアドレスのみ(こうすると自身からのみしか接続できなくなる)
bind-address = 127.0.0.1

php

特にどうしても必要な設定はないけど、日本語のUTF-8なWebシステムを稼動させるなら、default_charset、mbstring.internal_encoding、Timezone など指定しておいてよいでしょう。

default_charset = "UTF-8"
([Date]セクションに)
date.timezone = "Asia/Tokyo"

使ってみる

独自ドメインでWordPressを設置するなら、以下のような作業ですぐ使える。

  1. ホスト名を決める
  2. DNS設定などする
  3. WordPressのソースをダウンロードして解凍して置く
  4. apacheのVirtualHostの設定をする
  5. データベースと接続ユーザーを作る
  6. Web画面からインストール

関連するメモ

コメント