概要
Windows環境にchocolateyを使ってnginx 1.8をインストールしたときのメモです。
環境
- Windows7 (64bit)
- [chocolatey] (https://chocolatey.org/) 0.9.9.11
- [nginx] (https://chocolatey.org/packages/nginx) 1.8
参考
- [nginx for Windows] (http://nginx.org/en/docs/windows.html)
nginxのインストール
> choco install nginx
Installing the following packages:
nginx
By installing you accept licenses for the packages.
nginx v1.8.0
The package nginx wants to run 'chocolateyInstall.ps1'.
Note: If you don't run this script, the installation will fail.
Note: To confirm automatically next time, use '-y' or consider setting
'allowGlobalConfirmation'. Run 'choco feature -h' for more details.
Do you want to run the script?
1) yes
2) no
3) print
1
...省略...
C:\ProgramData\chocolatey\lib\nginx\tools
ShimGen has successfully created a shim for nginx.exe
The install of nginx was successful.
Chocolatey installed 1/1 package(s). 0 package(s) failed.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
version
> nginx -v
nginx version: nginx/1.8.0
大文字Vはビルド時のconfigureを確認することができます。下記の内容は見やすいように改行をしています。
> nginx -V
nginx version: nginx/1.8.0
built with OpenSSL 1.0.1m 19 Mar 2015
TLS SNI support enabled
configure arguments:
--with-cc=cl
--builddir=objs.msvc8
--with-debug
--prefix=
--conf-path=conf/nginx.conf
--pid-path=logs/nginx.pid
--http-log-path=logs/access.log
--error-log-path=logs/error.log
--sbin-path=nginx.exe
--http-client-body-temp-path=temp/client_body_temp
--http-proxy-temp-path=temp/proxy_temp
--http-fastcgi-temp-path=temp/fastcgi_temp
--http-scgi-temp-path=temp/scgi_temp
--http-uwsgi-temp-path=temp/uwsgi_temp
--with-cc-opt=-DFD_SETSIZE=1024
--with-pcre=objs.msvc8/lib/pcre-8.35
--with-zlib=objs.msvc8/lib/zlib-1.2.8
--with-select_module
--with-http_realip_module
--with-http_addition_module
--with-http_sub_module
--with-http_dav_module
--with-http_stub_status_module
--with-http_flv_module
--with-http_mp4_module
--with-http_gunzip_module
--with-http_gzip_static_module
--with-http_auth_request_module
--with-http_random_index_module
--with-http_secure_link_module
--with-mail
--with-openssl=objs.msvc8/lib/openssl-1.0.1m
--with-openssl-opt=enable-tlsext
--with-http_ssl_module
--with-mail_ssl_module
--with-ipv6
コマンド
起動
> start nginx
上記のコマンドでnginxを起動すると、コンソールが立ち上がりますが、nginxを停止させるつもりでコンソール上でCtrl + Cを押してコンソールを閉じてもnginxは起動されたたままです。停止させるには下記のコマンドを実行する必要があります。
停止
> nginx -s stop
help
> nginx -h
nginx version: nginx/1.8.0
Usage: nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: NONE)
-c filename : set configuration file (default: conf/nginx.conf)
-g directives : set global directives out of configuration file
実行環境構築
ディレクトリ
D:\dev\nginx
├─ \conf
├─ \html
├─ \logs
├─ \temp
├─ server_start.bat
└─ server_stop.bat
conf
chocolateyでインストールしたディレクトリ(C:\ProgramData\chocolatey\lib\nginx\tools\nginx-1.8.0
)にあるconfをディレクトリごとコピーします。
html
htmlディレクトリを作成します。
ここがnginxのドキュメントルートになります。
logs
logsディレクトリを作成します。
temp
chocolateyでインストールしたディレクトリ(C:\ProgramData\chocolatey\lib\nginx\tools\nginx-1.8.0
)にあるtempをディレクトリごとコピーします。
conf/nginx.conf
デフォルトのままでも動作します。
今回はコメントされていたlog_formatとaccess_logのディレクティブを有効にしました。
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
confファイルのテスト
confを編集した場合はsyntaxチェックを行って設定に間違いがないか確認することができます。
> nginx -t
nginx: the configuration file D:\dev\nginx/conf/nginx.conf syntax is ok
nginx: configuration file D:\dev\nginx/conf/nginx.conf test is successful
実行・停止用のbat
start nginx
nginx -s stop
nginxでphpMyAdmin
phpのインストール
Windowsでphpを実行するには別途、Visual Studio 2012 Visual C++ 再頒布可能パッケージが必要になります。
[https://www.microsoft.com/ja-JP/download/details.aspx?id=30679] (Visual Studio 2012 更新プログラム 4 の Visual C++ 再頒布可能パッケージ)
Version
> php -v
PHP 5.6.17 (cli) (built: Jan 6 2016 13:28:21)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
php.ini
php.ini-developmentをphp.iniにリネームして下記の箇所を修正します。(抜粋)
extension_dir = "D:\dev\php-5.6.17\ext"
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
date.timezone = "Asia/Tokyo"
phpMyAdminのインストール
アーカイブファイルをダウンロードし、展開して出来たディレクトリをnginxのドキュメントルートにphpMyAdmin
という名前でコピーします。
config.inc.php
config.sample.inc.phpをconfig.inc.phpにリネームして下記の箇所を修正します。(抜粋)
$cfg['blowfish_secret'] = '<適当な文字列を記述>'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = '<pmaユーザーのパスワードを記述>';
ここのコメントをはずします。
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
sql/create_tables.sql
sqlディレクトリ下にデータベースやテーブルを作成するsqlファイルが用意されています。
コメントになっているGRANT文を有効にします。
-- Privileges
--
-- (activate this statement if necessary)
GRANT SELECT, INSERT, DELETE, UPDATE, ALTER ON `phpmyadmin`.* TO 'pma'@localhost;
MySQL
MySQLを起動しrootユーザーでログインし、上記のsqlファイルでデータベースとテーブルを作成します。
> source D:\dev\nginx\html\phpMyAdmin\sql\create_tables.sql
pmaユーザーのパスワードを設定します。
> set password for pma@localhost = password('<pmaのパスワード>');
nginxの設定
nginx.conf
confファイルに下記を追記します。
server {
listen 80;
server_name phpmyadmin.localhost;
access_log logs/php.access.log main;
location / {
root html/phpMyAdmin;
index index.php;
}
location ~ \.php$ {
root html/phpMyAdmin;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
hosts
hostsファイルに下記を追記します。
127.0.0.1 phpmyadmin.localhost
php-cgi
nginxでphpスクリプトが実行できるようphp-cgiを起動します。
> php-cgi.exe -b 127.0.0.1:9001
動作確認
http://phpmyadmin.localhost/
にアクセスしてphpMyAdminのログインページが表示されることを確認します。
バックエンドのwebアプリケーションと連携させる
同一ホスト上で実行しているspring-bootで作成したwebアプリケーションと連携させます。
nginxの設定
serverディレクティブの記述を下記のように修正します。
server {
listen 80;
server_name localhost;
access_log logs/web.access.log main;
location / {
proxy_http_version 1.1;
proxy_pass http://localhost:9000;
proxy_redirect http://localhost:9000/ /;
proxy_cookie_path / /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-By $server_addr:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Port $server_port;
root html;
index index.html index.htm;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
動作確認
http://localhost/
にアクセスしてspring-bootで作成したwebアプリケーションのページが表示されることを確認します。
nginxのssl設定の参考
- [HowTo: Create a Self-Signed SSL Certificate on Nginx For CentOS / RHEL] (http://www.cyberciti.biz/faq/nginx-self-signed-certificate-tutorial-on-centos-redhat-linux/)
- [nginx managed SSL with Tomcat 7] (http://stackoverflow.com/questions/19916906/nginx-managed-ssl-with-tomcat-7)