centos:centos_nginx_php
目次
即効 環境構築
SELINUX
SELinux状態確認
- SELinux有効
# getenforce Enforcing
- SELinux無効
# getenforce Permissive
SELinux無効化
# setenforce 0
システム起動時にSELinuxを自動起動させない
# vi /etc/sysconfig/selinux -) SELINUX=enforcing +) SELINUX=disabled
iptables(ファイアウォール)
# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# /etc/rc.d/init.d/iptables restart
nginx
nginx公式ページでyumリポジトリのURLを確認
download - Pre-Built Packages と辿る。
http://nginx.org/en/linux_packages.html#stable
RHEL や CentOS のリンクがあるので、CentOS6のURLを確認する。
http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
リポジトリ登録
# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
repoファイルができたことを確認
# less /etc/yum.repos.d/nginx.repo
# nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/6/$basearch/ gpgcheck=0 enabled=1
nginxをインストール
# yum -y install nginx
インストールされたことを確認
# nginx -v nginx version: nginx/1.6.2
起動
# /etc/init.d/nginx start
自動起動設定
# chkconfig nginx on
PHPと関連モジュール
# yum -y --enablerepo=remi install php php-mbstring php-mysql php-pear php-devel # vi /etc/php.ini /etc/php.ini.org 869c869 < date.timezone = "Asia/Tokyo" --- > ;date.timezone = 1350c1350 < session.save_path = "/var/lib/php/session/" --- > ;session.save_path = "/tmp" # ll /var/lib/php/ 合計 4 drwxrwx---. 2 root apache 4096 10月 16 17:24 2014 session # chown -R root.nginx /var/lib/php/session # ll /var/lib/php/ 合計 4 drwxrwx---. 2 root nginx 4096 10月 16 17:24 2014 session
APC(PHP用アクセラレータ)
# yum -y --enablerepo=remi install gcc # pecl install apc # echo "extension=apc.so" | sudo tee /etc/php.d/apc.ini
PHP-FPM
# yum -y --enablerepo=remi install php-fpm # vi /etc/php-fpm.d/www.conf 39c39 < user = nginx --- > user = apache 41c41 < group = nginx --- > group = apache nginx への設定追加 # vi /etc/nginx/conf.d/default.conf 9,10c9,10 < root /var/www/html; < index index.php; --- > root /usr/share/nginx/html; > index index.html index.htm; 30,36c30,36 < location ~ \.php$ { < root /var/www/html; < fastcgi_pass 127.0.0.1:9000; < fastcgi_index index.php; < fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; < include fastcgi_params; < } --- > #location ~ \.php$ { > # root html; > # fastcgi_pass 127.0.0.1:9000; > # fastcgi_index index.php; > # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; > # include fastcgi_params; > #} PHP-FPM 起動 # /etc/init.d/php-fpm start 自動起動設定 # chkconfig php-fpm on nginx 再起動(設定反映) # /etc/init.d/nginx restart
TokyoCabinet/TokyoTyrant
●参考サイト http://blog.livedoor.jp/sasata299/archives/51322051.html > TokyoCabinet が key-valueストアの機能を持っていて、データを保存したり、 > 取り出したり出来ます。TokyoTyrant は TokyoCabinet をネットワーク越しに > 操作できるようにしたラッパーです。キャビネット(内閣)を傀儡にするタイ > ラント(僭主)ということでこのような名前が付けられたそうです 使ってみようTokyo Cabinet http://fallabs.com/mikio/tech/promenade.cgi?id=72 公式 http://fallabs.com/ tokyo_tyrant http://www.php.net/manual/ja/book.tokyo-tyrant.php TokyoTyrant の定数 http://www.php.net/manual/ja/class.tokyotyrant.php#tokyotyrant.constants.types ●下準備 # yum -y install zlib-devel bzip2-devel ● TokyoCabinet インストール # wget http://fallabs.com/tokyocabinet/tokyocabinet-1.4.46.tar.gz # tar xvzf tokyocabinet-1.4.46.tar.gz # cd tokyocabinet-1.4.46 # ./configure # make # make install ● TokyoTyrant インストール # wget http://fallabs.com/tokyotyrant/tokyotyrant-1.1.41.tar.gz # tar xvzf tokyotyrant-1.1.41.tar.gz # cd tokyotyrant-1.1.41 # ./configure # make # make install ● PECL::tokyo_tyrantをインストール # pecl install tokyo_tyrant-beta # echo "extension=tokyo_tyrant.so" | sudo tee /etc/php.d/tokyo_tyrant.ini # /etc/rc.d/init.d/php-fpm restart 以下、動作確認用コードサンプル <?php $tt = new TokyoTyrant('localhost', 1978); $tt->put('some_key', 'some_value'); echo $tt->get('some_key'); ● chkconfig 登録 ■ 自動起動ファイルを修正する # vi /usr/local/sbin/ttservctl 3行目付近、以下の6行を追加 # chkconfig: 345 99 01 # description: Startup script for the server of Tokyo Tyrant # processname: tokyotyrant # Source function library. . /etc/init.d/functions 17行目付近、以下の行変更 #cmd="ttserver" cmd="/usr/local/bin/ttserver" 152行目付近、以下の3行追加 status) status -p "$pidfile" $prog ;; 163行目付近、以下の行変更 # printf 'Usage: %s {start|stop|restart|hup}\n' "$prog" printf 'Usage: %s {start|stop|status|restart|hup}\n' "$prog" ■ シンボリックリンク作成 # ln -s /usr/local/sbin/ttservctl /etc/rc.d/init.d/ ■ 確認 起動 # service ttservctl start 終了 # service ttservctl stop 状態確認 # service ttservctl status ● 不正終了など、サービス再起動できないときの対処(pidファイルの削除) # rm /var/ttserver/pid Tips) /usr/local/sbin/ttservctl stop rm /var/ttserver/pid /usr/local/sbin/ttservctl start /etc/rc.d/init.d/php-fpm restart /etc/init.d/nginx restart
nginx + SSL
秘密鍵
発行される証明書と対になるファイル。
e.g. パスフレーズ無し、鍵長2,048bitの秘密鍵「server.key」を作成する
[root@adm01 ~]# openssl genrsa -out server.key 2048 Generating RSA private key, 2048 bit long modulus ........................+++ ...+++ e is 65537 (0x10001) [root@adm01 ~]# ll -rw-r--r--. 1 root root 1675 11月 4 18:05 2014 server.key [root@adm01 ~]# cat server.key -----BEGIN RSA PRIVATE KEY----- ~省略~ -----END RSA PRIVATE KEY-----
CSR
証明書の申請時に提出するファイル。
e.g. 作成した秘密鍵「server.key」で、CSR「server.csr」を作成する
[root@adm01 ~]# openssl req -new -key server.key -out aserver.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:JP State or Province Name (full name) []:Osaka Locality Name (eg, city) [Default City]:Osaka-shi,Cyuoh-ku Organization Name (eg, company) [Default Company Ltd]:Clown Inc. Organizational Unit Name (eg, section) []:Clown Section Common Name (eg, your name or your server's hostname) []:clown.com Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: [root@adm01 ~]# ll -rw-r--r--. 1 root root 1029 11月 4 18:08 2014 server.csr -rw-r--r--. 1 root root 1675 11月 4 18:05 2014 server.key [root@adm01 ~]# cat server.csr -----BEGIN CERTIFICATE REQUEST----- ~省略~ -----END CERTIFICATE REQUEST-----
証明書(公開鍵)
いわゆる、SSL証明書。
e.g. 有効期限10年で、秘密鍵「server.key」とCSR「server.csr」を使用して証明書「server.crt」を作成する
[root@adm01 ~]# openssl x509 -days 3650 -req -signkey server.key -in server.csr -out server.crt Signature ok subject=/C=JP/ST=Osaka/L=Osaka-shi,Cyuoh-ku/O=Clown Inc./OU=Clown Section/CN=clown.com Getting Private key [root@adm01 ~]# ll -rw-r--r--. 1 root root 1257 11月 4 18:09 2014 server.crt -rw-r--r--. 1 root root 1029 11月 4 18:08 2014 server.csr -rw-r--r--. 1 root root 1675 11月 4 18:05 2014 server.key [root@adm01 ~]# cat server.crt -----BEGIN CERTIFICATE----- ~省略~ -----END CERTIFICATE-----
適当な場所にデジタル証明書、秘密鍵を設置
[root@adm01 ~]# mkdir /etc/nginx/conf.d/ssl.crt/ [root@adm01 ~]# mv server.crt /etc/nginx/conf.d/ssl.crt/ [root@adm01 ~]# mkdir /etc/nginx/conf.d/ssl.key/ [root@adm01 ~]# mv server.key /etc/nginx/conf.d/ssl.key/ [root@adm01 ~]# rm -rf server.csr [root@adm01 ~]# chmod 700 /etc/nginx/conf.d/ssl.key [root@adm01 ~]# chmod 400 /etc/nginx/conf.d/ssl.key/server.key
nginx の SSL設定ファイルを設定
# mv /etc/nginx/conf.d/example_ssl.conf /etc/nginx/conf.d/ssl.conf # vi /etc/nginx/conf.d/ssl.conf
5行目付近「sever {」以下のコメントをすべてはずす。
10~11行目付近、鍵のパスを修正
# HTTPS server # server { listen 443 ssl; server_name localhost; # ssl_certificate /etc/nginx/cert.pem; # ssl_certificate_key /etc/nginx/cert.key; ssl_certificate /etc/nginx/conf.d/ssl.crt/server.crt; ssl_certificate_key /etc/nginx/conf.d/ssl.key/server.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root /usr/share/nginx/html; index index.html index.htm; } }
SSL 有効化(nginx 再起動)
# /etc/init.d/nginx restart
centos/centos_nginx_php.txt · 最終更新: 2014/11/06 04:24 by clownclown