CentOS7でLAMP環境
問題
CentOS7で、さくっと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を設置するなら、以下のような作業ですぐ使える。
- ホスト名を決める
- DNS設定などする
- WordPressのソースをダウンロードして解凍して置く
- apacheのVirtualHostの設定をする
- データベースと接続ユーザーを作る
- Web画面からインストール
コメント