やっとわかってきたぞ。
$ cd /etc/nginx/
$ sudo vi nginx.conf
で、設定ファイルの内容を変更する。
念のためにnginx.confのバックアップを取っておくことを超お勧めする。
全文は次の通り。
色の変わっているところが変更部分だ。
とりあえずの設定だから、80ポートにアクセスするとwsgiファイルが反応する。
他のhtmlファイル等は反応できないので、それは別途調整が必要。
=== 以下、nginx.confファイルの内容===
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream unit_backend {
server 127.0.0.1:8400;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://unit_backend;
proxy_set_header Host $host;
}
}
}
wsgiファイルをいじってみる
Pythonのコードを書いてゆくうえで、まずはwsgiを変更してゆけばよい
wsgi.pyを変更したら、
$ sudo systemctl restart unit
でnginx unitの再起動が必要。
テストから離れたディレクトリの変更などは、別途挑戦予定。
→ディレクトリ変更はできた。
/var/www/python-app に移動して、表示できることを確認済み。
wsgi.pyを変更したら、
$ sudo systemctl restart unit
でnginx unitの再起動が必要。
テストから離れたディレクトリの変更などは、別途挑戦予定。
→ディレクトリ変更はできた。
/var/www/python-app に移動して、表示できることを確認済み。
nginx unitの設定値を見てみる
まず現状のnginx unitの設定値がどうなっているのか調べてみる。
$ sudo curl --unix-socket /var/run/control.unit.sock http://localhost/
{
"applications": {
"example_python": {
"type": "python 3.6",
"user": "nobody",
"processes": 2,
"path": "/usr/share/doc/unit-python3.6/examples/python-app",
"module": "wsgi"
}
},
"listeners": {
"*:8400": {
"application": "example_python"
}
}
}
なんか良く分からないが、8400ポートはexsample_pythonというアプリケーションのリスナーに使われている。
アプリケーションの設定は"applications"の中で定義されていて、ポート8400にアクセスがあると、/usr/share/doc/unit-python3.6/examples/python-app というディレクトリにあるwsgiというモジュールを読み込んでいるらしい。wsgiファイルはwsgi.py が正式なファイル名だった。
では、ここから実験。
アプリケーションリスナー設定を削除してみる。
$ sudo curl -X DELETE --unix-socket /var/run/control.unit.sock http://localhost/listeners/*:8400
{
"success": "Reconfiguration done."
}
アプリケーション設定も削除してみる。
$ sudo curl -X DELETE --unix-socket /var/run/control.unit.sock http://localhost/applications/example_python
{
"success": "Reconfiguration done."
}
本当に削除されたのか確認。
$ sudo curl --unix-socket /var/run/control.unit.sock http://localhost/
{
"applications": {},
"listeners": {}
}
削除されて空っぽになっている。
この状態でポート番号8400にアクセスするとどうなるのか?
$ curl http://localhost:8400
curl: (7) Failed to connect to localhost port 8400: 接続を拒否されました
予定通り繋がらなくなっている。
じゃあ最初の設定を start.json というファイルに保存して、再設定を掛けたらどうなるのか?
$ sudo curl -X PUT -d @start.json --unix-socket /var/run/control.unit.sock http://localhost/
{
"success": "Reconfiguration done."
}
成功したらしい。
ちゃんと動いているのか確認してみる。
$ curl http://localhost:8400
2018-07-13 01:49:38 PM
Python: 3.6.5 (default, Apr 1 2018, 05:46:30)
[GCC 7.3.0]
ENV Variables:
LANG ja_JP.UTF-8
LANGUAGE ja_JP:ja
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
INVOCATION_ID 4495414f19f340b695fbcf64bf14c449
JOURNAL_STREAM 9:19378
DAEMON_ARGS --log /var/log/unit.log --pid /run/unit.pid
動いているね。
ふむふむ、少しずつ分かってきたような。。。気もしてきた。
$ sudo curl --unix-socket /var/run/control.unit.sock http://localhost/
{
"applications": {
"example_python": {
"type": "python 3.6",
"user": "nobody",
"processes": 2,
"path": "/usr/share/doc/unit-python3.6/examples/python-app",
"module": "wsgi"
}
},
"listeners": {
"*:8400": {
"application": "example_python"
}
}
}
なんか良く分からないが、8400ポートはexsample_pythonというアプリケーションのリスナーに使われている。
アプリケーションの設定は"applications"の中で定義されていて、ポート8400にアクセスがあると、/usr/share/doc/unit-python3.6/examples/python-app というディレクトリにあるwsgiというモジュールを読み込んでいるらしい。wsgiファイルはwsgi.py が正式なファイル名だった。
では、ここから実験。
アプリケーションリスナー設定を削除してみる。
$ sudo curl -X DELETE --unix-socket /var/run/control.unit.sock http://localhost/listeners/*:8400
{
"success": "Reconfiguration done."
}
アプリケーション設定も削除してみる。
$ sudo curl -X DELETE --unix-socket /var/run/control.unit.sock http://localhost/applications/example_python
{
"success": "Reconfiguration done."
}
本当に削除されたのか確認。
$ sudo curl --unix-socket /var/run/control.unit.sock http://localhost/
{
"applications": {},
"listeners": {}
}
削除されて空っぽになっている。
この状態でポート番号8400にアクセスするとどうなるのか?
$ curl http://localhost:8400
curl: (7) Failed to connect to localhost port 8400: 接続を拒否されました
予定通り繋がらなくなっている。
じゃあ最初の設定を start.json というファイルに保存して、再設定を掛けたらどうなるのか?
$ sudo curl -X PUT -d @start.json --unix-socket /var/run/control.unit.sock http://localhost/
{
"success": "Reconfiguration done."
}
成功したらしい。
ちゃんと動いているのか確認してみる。
$ curl http://localhost:8400
2018-07-13 01:49:38 PM
Python: 3.6.5 (default, Apr 1 2018, 05:46:30)
[GCC 7.3.0]
ENV Variables:
LANG ja_JP.UTF-8
LANGUAGE ja_JP:ja
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
INVOCATION_ID 4495414f19f340b695fbcf64bf14c449
JOURNAL_STREAM 9:19378
DAEMON_ARGS --log /var/log/unit.log --pid /run/unit.pid
動いているね。
ふむふむ、少しずつ分かってきたような。。。気もしてきた。
/etc/nginx/mime.types の中身
types { text/html html htm shtml; text/css css; text/xml xml; image/gif gif; image/jpeg jpeg jpg; application/javascript js; application/atom+xml atom; application/rss+xml rss; text/mathml mml; text/plain txt; text/vnd.sun.j2me.app-descriptor jad; text/vnd.wap.wml wml; text/x-component htc; image/png png; image/svg+xml svg svgz; image/tiff tif tiff; image/vnd.wap.wbmp wbmp; image/webp webp; image/x-icon ico; image/x-jng jng; image/x-ms-bmp bmp; font/woff woff; font/woff2 woff2; application/java-archive jar war ear; application/json json; application/mac-binhex40 hqx; application/msword doc; application/pdf pdf; application/postscript ps eps ai; application/rtf rtf; application/vnd.apple.mpegurl m3u8; application/vnd.google-earth.kml+xml kml; application/vnd.google-earth.kmz kmz; application/vnd.ms-excel xls; application/vnd.ms-fontobject eot; application/vnd.ms-powerpoint ppt; application/vnd.oasis.opendocument.graphics odg; application/vnd.oasis.opendocument.presentation odp; application/vnd.oasis.opendocument.spreadsheet ods; application/vnd.oasis.opendocument.text odt; application/vnd.openxmlformats-officedocument.presentationml.presentation pptx; application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx; application/vnd.openxmlformats-officedocument.wordprocessingml.document docx; application/vnd.wap.wmlc wmlc; application/x-7z-compressed 7z; application/x-cocoa cco; application/x-java-archive-diff jardiff; application/x-java-jnlp-file jnlp; application/x-makeself run; application/x-perl pl pm; application/x-pilot prc pdb; application/x-rar-compressed rar; application/x-redhat-package-manager rpm; application/x-sea sea; application/x-shockwave-flash swf; application/x-stuffit sit; application/x-tcl tcl tk; application/x-x509-ca-cert der pem crt; application/x-xpinstall xpi; application/xhtml+xml xhtml; application/xspf+xml xspf; application/zip zip; application/octet-stream bin exe dll; application/octet-stream deb; application/octet-stream dmg; application/octet-stream iso img; application/octet-stream msi msp msm; audio/midi mid midi kar; audio/mpeg mp3; audio/ogg ogg; audio/x-m4a m4a; audio/x-realaudio ra; video/3gpp 3gpp 3gp; video/mp2t ts; video/mp4 mp4; video/mpeg mpeg mpg; video/quicktime mov; video/webm webm; video/x-flv flv; video/x-m4v m4v; video/x-mng mng; video/x-ms-asf asx asf; video/x-ms-wmv wmv; video/x-msvideo avi; }
/etc/nginx/nginx.conf の中身
#user nobody;
#Defines which Linux system user will own and run the Nginx server
worker_processes 1;
#Referes to single threaded process. Generally set to be equal to the number of CPUs or cores.
#error_log logs/error.log; #error_log logs/error.log notice;
#Specifies the file where server logs.
#pid logs/nginx.pid;
#nginx will write its master process ID(PID).
events {
worker_connections 1024;
# worker_processes and worker_connections allows you to calculate maxclients value:
# max_clients = worker_processes * worker_connections
}
http {
include mime.types;
# anything written in /opt/nginx/conf/mime.types is interpreted as if written inside the http { } block
default_type application/octet-stream;
#
#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;
sendfile on;
# If serving locally stored static files, sendfile is essential to speed up the server,
# But if using as reverse proxy one can deactivate it
#tcp_nopush on;
# works opposite to tcp_nodelay. Instead of optimizing delays, it optimizes the amount of data sent at once.
#keepalive_timeout 0;
keepalive_timeout 65;
# timeout during which a keep-alive client connection will stay open.
#gzip on;
# tells the server to use on-the-fly gzip compression.
server {
# You would want to make a separate file with its own server block for each virtual domain
# on your server and then include them.
listen 80;
#tells Nginx the hostname and the TCP port where it should listen for HTTP connections.
# listen 80; is equivalent to listen *:80;
server_name localhost;
# lets you doname-based virtual hosting
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#The location setting lets you configure how nginx responds to requests for resources within the server.
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#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;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
#Defines which Linux system user will own and run the Nginx server
worker_processes 1;
#Referes to single threaded process. Generally set to be equal to the number of CPUs or cores.
#error_log logs/error.log; #error_log logs/error.log notice;
#Specifies the file where server logs.
#pid logs/nginx.pid;
#nginx will write its master process ID(PID).
events {
worker_connections 1024;
# worker_processes and worker_connections allows you to calculate maxclients value:
# max_clients = worker_processes * worker_connections
}
http {
include mime.types;
# anything written in /opt/nginx/conf/mime.types is interpreted as if written inside the http { } block
default_type application/octet-stream;
#
#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;
sendfile on;
# If serving locally stored static files, sendfile is essential to speed up the server,
# But if using as reverse proxy one can deactivate it
#tcp_nopush on;
# works opposite to tcp_nodelay. Instead of optimizing delays, it optimizes the amount of data sent at once.
#keepalive_timeout 0;
keepalive_timeout 65;
# timeout during which a keep-alive client connection will stay open.
#gzip on;
# tells the server to use on-the-fly gzip compression.
server {
# You would want to make a separate file with its own server block for each virtual domain
# on your server and then include them.
listen 80;
#tells Nginx the hostname and the TCP port where it should listen for HTTP connections.
# listen 80; is equivalent to listen *:80;
server_name localhost;
# lets you doname-based virtual hosting
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#The location setting lets you configure how nginx responds to requests for resources within the server.
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#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;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
/etc/nginx/conf.default.conf の中身
#user nobody; #Defines which Linux system user will own and run the Nginx server worker_processes 1; #Referes to single threaded process. Generally set to be equal to the number of CPUs or cores. #error_log logs/error.log; #error_log logs/error.log notice; #Specifies the file where server logs. #pid logs/nginx.pid; #nginx will write its master process ID(PID). events { worker_connections 1024; # worker_processes and worker_connections allows you to calculate maxclients value: # max_clients = worker_processes * worker_connections } http { include mime.types; # anything written in /opt/nginx/conf/mime.types is interpreted as if written inside the http { } block default_type application/octet-stream; # #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; sendfile on; # If serving locally stored static files, sendfile is essential to speed up the server, # But if using as reverse proxy one can deactivate it #tcp_nopush on; # works opposite to tcp_nodelay. Instead of optimizing delays, it optimizes the amount of data sent at once. #keepalive_timeout 0; keepalive_timeout 65; # timeout during which a keep-alive client connection will stay open. #gzip on; # tells the server to use on-the-fly gzip compression. server { # You would want to make a separate file with its own server block for each virtual domain # on your server and then include them. listen 80; #tells Nginx the hostname and the TCP port where it should listen for HTTP connections. # listen 80; is equivalent to listen *:80; server_name localhost; # lets you doname-based virtual hosting #charset koi8-r; #access_log logs/host.access.log main; location / { #The location setting lets you configure how nginx responds to requests for resources within the server. root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #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; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
nginxの再インストールでハマった件
なんかnginx unitと組み合わせてごちゃごちゃやっていたら壊れてしまった。
再インストールしても起動しなかった。
理由は次の3つのファイルがないため。
/etc/nginx/conf/default.conf
/etc/nginx/nginx.conf
/etc/nginx/mime.types
これが再インストール時に自動的に復活しない仕様はどうなんだよ、と思う。
再インストールしても起動しなかった。
理由は次の3つのファイルがないため。
/etc/nginx/conf/default.conf
/etc/nginx/nginx.conf
/etc/nginx/mime.types
これが再インストール時に自動的に復活しない仕様はどうなんだよ、と思う。
Nginx Unitを自動起動させるには
毎回手動で立ち上げるのはめんどくさいからさ。
Nginx Unitをサーバ起動時に自動的に稼働させるためには
$ sudo systemctl enable unit
Synchronizing state of unit.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable unit
ではリブートした後どうなるか?
$ curl http://localhost:8400/
2018-07-03 08:44:39 PM
Python: 3.6.5 (default, Apr 1 2018, 05:46:30)
[GCC 7.3.0]
ENV Variables:
LANG ja_JP.UTF-8
LANGUAGE ja_JP:ja
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
INVOCATION_ID 8bc876ae223a4d618ebed74ed7ed9650
JOURNAL_STREAM 9:20761
DAEMON_ARGS --log /var/log/unit.log --pid /run/unit.pid
うん、立ち上がっているね!!
Nginx Unitをサーバ起動時に自動的に稼働させるためには
$ sudo systemctl enable unit
Synchronizing state of unit.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable unit
ではリブートした後どうなるか?
$ curl http://localhost:8400/
2018-07-03 08:44:39 PM
Python: 3.6.5 (default, Apr 1 2018, 05:46:30)
[GCC 7.3.0]
ENV Variables:
LANG ja_JP.UTF-8
LANGUAGE ja_JP:ja
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
INVOCATION_ID 8bc876ae223a4d618ebed74ed7ed9650
JOURNAL_STREAM 9:20761
DAEMON_ARGS --log /var/log/unit.log --pid /run/unit.pid
うん、立ち上がっているね!!
Nginx Unitのインストール
Ubuntuだと比較的楽にインストールできるそうだ。
最初にキーファイルをダウンロードする。
$ wget https://nginx.org/keys/nginx_signing.key
--2018-07-02 20:15:26-- https://nginx.org/keys/nginx_signing.key
nginx.org (nginx.org) をDNSに問いあわせています... 2606:7100:1:69::3f, 2001:1af8:4060:a004:21::e3, 206.251.255.63, ...
nginx.org (nginx.org)|2606:7100:1:69::3f|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 1561 (1.5K) [text/plain]
`nginx_signing.key' に保存中
nginx_signing.key 100%[=================================================>] 1.52K --.-KB/s 時間 0s
2018-07-02 20:15:26 (105 MB/s) - `nginx_signing.key' へ保存完了 [1561/1561]
apt-keyでキーファイルを追加する。
$ sudo apt-key add nginx_signing.key
/etc/apt/sources.list.d/unit.listを作成する。
$ sudo vi /etc/apt/sources.list.d/unit.list
今回はUbuntu18.04を使っているので、次の内容を記載して保存する。
deb https://packages.nginx.org/unit/ubuntu/ bionic unit
deb-src https://packages.nginx.org/unit/ubuntu/ bionic unit
それじゃインストールを始めますか。
$ sudo apt update
$ sudo apt install unit
インストールが終わるとこんなメッセージが出る。
----------------------------------------------------------------------
Thank you for installing NGINX Unit!
Additional modules are available in standalone packages.
To see the available modules, run: apt search --names-only '^unit-'
Online documentation is available at https://unit.nginx.org/
----------------------------------------------------------------------
追加モジュールをインストールしろということなのな。
で、何を利用できるのか、追加モジュール一覧を表示させてみる。
$ apt search --names-only '^unit-'
ソート中... 完了
全文検索... 完了
unit-dbg/stable 1.2-1~bionic amd64
NGINX Unit (debug symbols)
unit-go1.10/stable 1.2-1~bionic all
Go 1.10 module for NGINX Unit
unit-go1.9/stable 1.2-1~bionic all
Go 1.9 module for NGINX Unit
unit-perl/stable 1.2-1~bionic amd64
Perl module for NGINX Unit
unit-perl-dbg/stable 1.2-1~bionic amd64
Perl module for NGINX Unit (debug symbols)
unit-php/stable 1.2-1~bionic amd64
PHP module for NGINX Unit
unit-php-dbg/stable 1.2-1~bionic amd64
PHP module for NGINX Unit (debug symbols)
unit-python2.7/stable 1.2-1~bionic amd64
Python 2.7 module for NGINX Unit
unit-python2.7-dbg/stable 1.2-1~bionic amd64
Python 2.7 module for NGINX Unit (debug symbols)
unit-python3.6/stable 1.2-1~bionic amd64
Python 3.6 module for NGINX Unit
unit-python3.6-dbg/stable 1.2-1~bionic amd64
Python 3.6 module for NGINX Unit (debug symbols)
unit-ruby/stable 1.2-1~bionic amd64
Ruby module for NGINX Unit
unit-ruby-dbg/stable 1.2-1~bionic amd64
Ruby module for NGINX Unit (debug symbols)
今回はPythonだから、次のコマンドで追加モジュールをインストールする。
$ sudo apt install unit-python3.6
インストールが終わるとこんなメッセージが表示される。
----------------------------------------------------------------------
The Python 3.6 module for NGINX Unit has been installed.
To check out the sample app, run these commands:
sudo service unit restart
sudo service unit loadconfig /usr/share/doc/unit-python3.6/examples/unit.config
curl http://localhost:8400/
Online documentation is available at https://unit.nginx.org
----------------------------------------------------------------------
いったんサーバをリブートしてみる。
$ sudo service unit restart
$ sudo service unit loadconfig /usr/share/doc/unit-python3.6/examples/unit.config
Loading configuration from /usr/share/doc/unit-python3.6/examples/unit.config...
{
"success": "Reconfiguration done."
}
$ curl http://localhost:8400/
2018-07-02 08:39:02 PM
Python: 3.6.5 (default, Apr 1 2018, 05:46:30)
[GCC 7.3.0]
ENV Variables:
LANG ja_JP.UTF-8
LANGUAGE ja_JP:ja
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
INVOCATION_ID 11aa09ac823a44d2ab01da6ad6208da1
JOURNAL_STREAM 9:26162
DAEMON_ARGS --log /var/log/unit.log --pid /run/unit.pid
なんかよくわからないが、なんか動いているんだよね。
最初にキーファイルをダウンロードする。
$ wget https://nginx.org/keys/nginx_signing.key
--2018-07-02 20:15:26-- https://nginx.org/keys/nginx_signing.key
nginx.org (nginx.org) をDNSに問いあわせています... 2606:7100:1:69::3f, 2001:1af8:4060:a004:21::e3, 206.251.255.63, ...
nginx.org (nginx.org)|2606:7100:1:69::3f|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 1561 (1.5K) [text/plain]
`nginx_signing.key' に保存中
nginx_signing.key 100%[=================================================>] 1.52K --.-KB/s 時間 0s
2018-07-02 20:15:26 (105 MB/s) - `nginx_signing.key' へ保存完了 [1561/1561]
apt-keyでキーファイルを追加する。
$ sudo apt-key add nginx_signing.key
/etc/apt/sources.list.d/unit.listを作成する。
$ sudo vi /etc/apt/sources.list.d/unit.list
今回はUbuntu18.04を使っているので、次の内容を記載して保存する。
deb https://packages.nginx.org/unit/ubuntu/ bionic unit
deb-src https://packages.nginx.org/unit/ubuntu/ bionic unit
それじゃインストールを始めますか。
$ sudo apt update
$ sudo apt install unit
インストールが終わるとこんなメッセージが出る。
----------------------------------------------------------------------
Thank you for installing NGINX Unit!
Additional modules are available in standalone packages.
To see the available modules, run: apt search --names-only '^unit-'
Online documentation is available at https://unit.nginx.org/
----------------------------------------------------------------------
追加モジュールをインストールしろということなのな。
で、何を利用できるのか、追加モジュール一覧を表示させてみる。
$ apt search --names-only '^unit-'
ソート中... 完了
全文検索... 完了
unit-dbg/stable 1.2-1~bionic amd64
NGINX Unit (debug symbols)
unit-go1.10/stable 1.2-1~bionic all
Go 1.10 module for NGINX Unit
unit-go1.9/stable 1.2-1~bionic all
Go 1.9 module for NGINX Unit
unit-perl/stable 1.2-1~bionic amd64
Perl module for NGINX Unit
unit-perl-dbg/stable 1.2-1~bionic amd64
Perl module for NGINX Unit (debug symbols)
unit-php/stable 1.2-1~bionic amd64
PHP module for NGINX Unit
unit-php-dbg/stable 1.2-1~bionic amd64
PHP module for NGINX Unit (debug symbols)
unit-python2.7/stable 1.2-1~bionic amd64
Python 2.7 module for NGINX Unit
unit-python2.7-dbg/stable 1.2-1~bionic amd64
Python 2.7 module for NGINX Unit (debug symbols)
unit-python3.6/stable 1.2-1~bionic amd64
Python 3.6 module for NGINX Unit
unit-python3.6-dbg/stable 1.2-1~bionic amd64
Python 3.6 module for NGINX Unit (debug symbols)
unit-ruby/stable 1.2-1~bionic amd64
Ruby module for NGINX Unit
unit-ruby-dbg/stable 1.2-1~bionic amd64
Ruby module for NGINX Unit (debug symbols)
今回はPythonだから、次のコマンドで追加モジュールをインストールする。
$ sudo apt install unit-python3.6
インストールが終わるとこんなメッセージが表示される。
----------------------------------------------------------------------
The Python 3.6 module for NGINX Unit has been installed.
To check out the sample app, run these commands:
sudo service unit restart
sudo service unit loadconfig /usr/share/doc/unit-python3.6/examples/unit.config
curl http://localhost:8400/
Online documentation is available at https://unit.nginx.org
----------------------------------------------------------------------
いったんサーバをリブートしてみる。
$ sudo service unit restart
$ sudo service unit loadconfig /usr/share/doc/unit-python3.6/examples/unit.config
Loading configuration from /usr/share/doc/unit-python3.6/examples/unit.config...
{
"success": "Reconfiguration done."
}
$ curl http://localhost:8400/
2018-07-02 08:39:02 PM
Python: 3.6.5 (default, Apr 1 2018, 05:46:30)
[GCC 7.3.0]
ENV Variables:
LANG ja_JP.UTF-8
LANGUAGE ja_JP:ja
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
INVOCATION_ID 11aa09ac823a44d2ab01da6ad6208da1
JOURNAL_STREAM 9:26162
DAEMON_ARGS --log /var/log/unit.log --pid /run/unit.pid
なんかよくわからないが、なんか動いているんだよね。
Nginx稼働に関する管理方法
大事なことだから転記しておく。
Nginxを停止する場合
$ sudo systemctl stop nginx
停止していたNginxを稼働させる場合
$ sudo systemctl start nginx
Nginxを再起動(一旦停止後再起動)させる場合
$ sudo systemctl restart nginx
Nginxの設定を変更した場合は、再起動させずに設定の反映が可能
$ sudo systemctl reload nginx
Nginxをサーバ起動時に自動的に稼働させたくない場合
$ sudo systemctl disable nginx
Nginxをサーバ起動時に自動的に稼働させたい場合
$ sudo systemctl enable nginx
Nginxを停止する場合
$ sudo systemctl stop nginx
停止していたNginxを稼働させる場合
$ sudo systemctl start nginx
Nginxを再起動(一旦停止後再起動)させる場合
$ sudo systemctl restart nginx
Nginxの設定を変更した場合は、再起動させずに設定の反映が可能
$ sudo systemctl reload nginx
Nginxをサーバ起動時に自動的に稼働させたくない場合
$ sudo systemctl disable nginx
Nginxをサーバ起動時に自動的に稼働させたい場合
$ sudo systemctl enable nginx
Ubuntu18にNginxをインストールする
参考にしたのはこちら。
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-18-04
$ sudo apt update
$ sudo apt install nginx
シレっとインストール完了。
FireWallのステータスを確認する。
$ sudo ufw app list
利用可能なアプリケーション:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Samba
で、Nginxのためにポートを開放する。
$ sudo ufw allow 'Nginx HTTP'
ルールを追加しました
ルールを追加しました (v6)
じゃ状況はどうなったか?
$ sudo ufw status
状態: アクティブ
To Action From
-- ------ ----
Nginx HTTP ALLOW Anywhere
Nginx HTTP (v6) ALLOW Anywhere (v6)
OK、OK。
もちろん上記には、差しさわりのあるポート開放情報は表示はさせていないよ。
Webサーバのステータスはどんな感じ?
$ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2018-07-02 05:24:27 JST; 7min ago
Docs: man:nginx(8)
Process: 2360 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 2348 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 2361 (nginx)
Tasks: 5 (limit: 4370)
CGroup: /system.slice/nginx.service
├─2361 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─2364 nginx: worker process
├─2366 nginx: worker process
├─2368 nginx: worker process
└─2370 nginx: worker process
7月 02 05:24:27 niwatori systemd[1]: Starting A high performance web server and a reverse proxy server...
7月 02 05:24:27 niwatori systemd[1]: Started A high performance web server and a reverse proxy server.
動いてはいるが、プロセスを5つも立ち上げる必要はないな。
これはあとで調整しよう。
で、念のためにサーバをリブートして、ブラウザからhttp://IPアドレスと打ってどうなるか?
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.
Thank you for using nginx.
と表示されたら成功だ。
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-18-04
$ sudo apt update
$ sudo apt install nginx
シレっとインストール完了。
FireWallのステータスを確認する。
$ sudo ufw app list
利用可能なアプリケーション:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Samba
で、Nginxのためにポートを開放する。
$ sudo ufw allow 'Nginx HTTP'
ルールを追加しました
ルールを追加しました (v6)
じゃ状況はどうなったか?
$ sudo ufw status
状態: アクティブ
To Action From
-- ------ ----
Nginx HTTP ALLOW Anywhere
Nginx HTTP (v6) ALLOW Anywhere (v6)
OK、OK。
もちろん上記には、差しさわりのあるポート開放情報は表示はさせていないよ。
Webサーバのステータスはどんな感じ?
$ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2018-07-02 05:24:27 JST; 7min ago
Docs: man:nginx(8)
Process: 2360 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 2348 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 2361 (nginx)
Tasks: 5 (limit: 4370)
CGroup: /system.slice/nginx.service
├─2361 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─2364 nginx: worker process
├─2366 nginx: worker process
├─2368 nginx: worker process
└─2370 nginx: worker process
7月 02 05:24:27 niwatori systemd[1]: Starting A high performance web server and a reverse proxy server...
7月 02 05:24:27 niwatori systemd[1]: Started A high performance web server and a reverse proxy server.
動いてはいるが、プロセスを5つも立ち上げる必要はないな。
これはあとで調整しよう。
で、念のためにサーバをリブートして、ブラウザからhttp://IPアドレスと打ってどうなるか?
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.
Thank you for using nginx.
と表示されたら成功だ。