webサーバ設定作業メモ - 私用

はじめに

webサーバを設定する作業があったのですが、いつも同じこと調べながらに作業になるので作業メモとして残しておきます。

やりたいことは
・一般ユーザの作成
・webサーバの設定(バーチャルホストの設定)
phpのインストールと設定
mysqlのインストールと設定

といってもほぼドットインストールの「さくらのvps入門」の内容です

一般ユーザの作成

useradd username
passwd username
# 新パスワードの入力

※身内での作業が多いのでrootが必要な作業はrootになってやってしまってます。

外部からルートでのログインは拒否

vi /etc/ssh/sshd_config

PermitRootLogin no # yesからnoに変更してコメントアウトを外す

ssh再起動

service sshd restart

鍵認証でログインできるようにする

// ローカル
ssh-keygen -t rsa -f ~/.ssh/id_rsa_***
chmod 600 ~/.ssh/id_rsa_***.pub

// サーバー
mkdir ~/.ssh
chmod 700 ~/.ssh

// ローカル
scp ~/.ssh/id_rsa_***.pub username@hostname:~/.ssh/authorized_keys

webサーバの設定

apacheのインストール

# インストールされてないか確認
yum list installed | grep httpd

# インストール
yum install httpd

# 自動起動に設定されてないことを確認して設定
chkconfig --list httpd
chkconfig httpd on

httpd.confの設定

vi /etc/httpd/conf/httpd.con

#ServerTokens OS //これだとサーバ情報やapacheのモジュール情報等もhttpレスポンスヘッダ返すのでセキュリティ的によくない
ServerTokens Prod // 最低限の情報だけレスポンスヘッダでかえす設定

#ServerSignature On // NotFoundページなどを表示する際にサーバの情報も表示してしまうのでセキュリティ上よくない
ServerSignature Off

#Options Indexes FollowSymLinks // ディレクトリにアクセスした際にファイルの一覧を表示してしまうのでセキュリティ上よくない
Options -Indexes FollowSymLinks

httpdの起動

service httpd configtest
Syntax OK // これが出ればhttpd.confの構文エラーはなし

service httpd start // httpd起動
Starting httpd: [OK]

ipアドレスでアクセスして、apacheが動作してることを確認する
http://***.***.***.*** にアクセスしてみて無事に起動できていればapacheのTestPageが表示される

ディレクトリの所有者変更

chown -R user:group /var/www/html

バーチャルホストの設定

// 本番、ステージング、開発用のドキュメントルートディレクトリを作る
mkdir /var/www/html/dev
mkdir /var/www/html/stg
mkdir /var/www/html/rc

// 本番、ステージング、開発用のドメインごとの各ドキュメントルートを設定
vi /etc/httpd/conf/httpd.con
NameVirtualHost *:80

<VirtualHost *:80>
    ServerName dev.example.com
    DocumentRoot /var/www/html/dev
</VirtualHost>

<VirtualHost *:80>
    ServerName stg.example.com
    DocumentRoot /var/www/html/stg
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot /var/www/html/rc
</VirtualHost>

// apacheリスタート
service httpd configtest
service httpd restart

作業用pcの/etc/hostsを書き換えて設定したドメインでアクセスしてみる

sudo vi /etc/hosts
***.***.***.*** dev.example.com
***.***.***.*** stg.example.com
***.***.***.*** www.example.com

ここまででそれぞれアクセスできればhttpdサーバの設定はokです

phpのインストールと設定

僕は普段fuelphpを使っているので、phpをインストールします

yum install php php-devel php-mysql php-gd php-mbstring # インストール
yum list installed | grep php # インストールされていることを確認

centos6.7で標準だとphpのバージョンが5.3なのでこっちの方がいいかも

sudo rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

yum install -y --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof

※参考
CentOSにPHP5.6をインストール - Qiita

/etc/php.iniの編集
そのままなんですけどそれぞれ、セキュリティ上の設定とタイムゾーン文字コードの設定となります

vi /etc/php.ini

;expose_php On
expose_php Off

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

;mbstring.language = Japanese
mbstring.language = Japanese

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

;mbstring.http_input = auto
mbstring.http_input = auto

httpからのアクセスで反映させるためにhttpdをリスタート

service httpd restart

mysqlのインストールと設定

基本的にmy.cnfの設定は文字コード周りでphpの内部エンコードmysqlのクライアント、サーバで私用する文字コードをutf8にしておけば問題ないと思われる

my.cnfの編集

yum install mysql-server
vi /etc/my.cnf

character_set_server=utf8
default-storage-engine=InnoDB
innodb_file_per_table

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

centos6.7だとmysql5.1でバージョンが古いのでこっちのほうがいいかも

yum install -y http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
yum install -y mysql-community-server

mysqlサーバ起動

mysql_install_db --datadir=/var/lib/mysql --user=mysql #初回のみ実行
service mysqld start
chkconfig mysqld on
mysql_secure_installation

ここまでやればとりあえずwebサーバとmysqlの動作確認と起動設定が完了。

mysqlのデータベースとユーザ作成

開発、ステージング、本番用のデータベース作成

create databse dev;
create database stg;
create database rc;

作業用ユーザの作成

grant all on *.* to username@localhost identified by '********'; # 1番後ろはパスワード

ルートユーザーのパスワード設定

/usr/bin/mysqladmin -u root password '****'

apacheログのローテーション設定

ローテーションというよりは出力ファイルを日ごとに変更してる形

vi /etc/logrotate.d/httpd
daily #追加

http://d.hatena.ne.jp/yk5656/20140523/1402455511
こちらのサイトを参考にさせて頂きました

以上です