スキップしてメイン コンテンツに移動

投稿

ラベル(webサーバ)が付いた投稿を表示しています

nginx にて fcgiwrapを導入し CGI 実行環境 構築 on FreeBSD13

FreeBSD13 にて CGI が動作するWebサーバを構築する。 nginx は CGI の実行ができないので fcgiwrapを導入する。 nginxとfcgiwrapの通信は UNIXドメインソケットを利用する。 FreeBSDのバージョンは 13.0p8 % freebsd-version 13.0-RELEASE-p8 インストール ここに nginx と fcgiwrap をインストールする。 % doas pkg install nginx fcgiwrap New packages to be INSTALLED: fcgi-devkit: 2.4.0_5 fcgiwrap: 1.1.0_11 nginx: 1.20.2_3,2 pcre: 8.45 ===> Creating groups. Using existing group 'www'. ===> Creating users Using existing user 'www'. ===== Message from nginx-1.20.2_3,2: -- Recent version of the NGINX introduces dynamic modules support. In FreeBSD ports tree this feature was enabled by default with the DSO knob. Several vendor's and third-party modules have been converted to dynamic modules. Unset the DSO knob builds an NGINX without dynamic modules support. To load a module at runtime, include the new `load_module' directive in the main context, specifying the path to the shared object file for the module, ...

Let's Encrypt の更新プログラム certbot が自動更新してくれない

Let's Encrypt を使いサーバの通信を行っているが、 自動更新するように cron の設定をしてもエラーが出て更新されない。 サーバはwebサーバとメールサーバで証明書を使っているがwebサーバの方しか更新されない。 エラーログを確認してみると原因がわかった。 次のファイルに更新時に使う設定が書かれている。 /etc/letsencrypt/renewal/ドメイン名.conf この設定が authenticator = standalone となっていた。 standaloneだと、webサービスを停止しないと更新ができない模様。 そこで、その部分をコメントアウトし、authenticator と installer を書き加えた。 [renewalparams] #authenticator = standalone authenticator = nginx installer = nginx これで、更新テストをしたらうまくいった。 # certbot-auto renew --dry-run 強制的に更新するなら次のように行う。 # certbot-auto renew --force-renewal certbot - GitHub https://github.com/certbot/certbot

Let's Encrypt 等のSSL/TSL証明書の詳細確認方法 on Linux

opensslコマンドを用いて証明書の有効期限などを確認する方法。 次の2つについて手順を書いておく。 外部のサーバの証明書を確認 ローカルに保存された証明書の確認 外部のサーバの証明書を確認 クライアントとして証明書を確認する。 blogger.com の証明書を見るには次のコマンドで確認できる。 $ openssl s_client -showcerts -connect www.blogger.com:443 有効期限を見るには次のようにするとnoAfterに有効期限が表示される。 $ openssl s_client -connect www.blogger.com:443 | openssl x509 -noout -enddate ブラウザでチェックサイトから証明書を確認も出来る。 DigiCert® SSL Installation Diagnostics Tool https://www.digicert.com/help/ ローカルに保存された証明書の確認 サーバへsshなどでログインし、直接保存されている証明書を確認する。 Let's Encrypt を利用しているなら証明書の保存場所は /etc/letsencrypt/live/ドメイン名/cert.pem となっているはず。 有効期限は次のコマンドで確認できる。 # openssl x509 -noout -dates -in /etc/letsencrypt/live/example.jp/cert.pem 詳細な情報は -dates オプションを -text に変更する。 # openssl x509 -noout -text -in /etc/letsencrypt/live/example.jp/cert.pem

フレームワークの一覧

フレームワークをちょっとだけまとめた。 終わりに機械学習に関するものをリストアップした。 各種Webフレームワーク Perl、Ruby、PythonのWebアプリケーションフレームワークの一覧。 主要なものをちょっとだけまとめてみた。 Perl https://www.perl.org/ Mojolicious (モジョリシャス) http://mojolicio.us/ https://github.com/mojolicious/mojo Catalyst (カタリスト) http://www.catalystframework.org/ Dancer http://www.perldancer.org/ https://github.com/PerlDancer/Dancer2 Amon2 https://amon.64p.org/ https://github.com/tokuhirom/Amon Ruby https://www.ruby-lang.org/ Ruby on Rails (ルビー オン レールズ) http://rubyonrails.org/ https://github.com/rails/rails Sinatra (シナトラ) http://www.sinatrarb.com/ https://github.com/sinatra/sinatra Padrino (パドリーノ) http://www.padrinorb.com/ https://github.com/padrino/padrino-framework Python https://www.python.org/ Django (ジャンゴ) https://www.djangoproject.com/ https://github.com/django/django Flask (フラスク) https://palletsprojects.com/p/flask/ https://github.com/pallets/flask Bottle (ボトル) https://bottlepy.org/ https://github.com/bottlep...

webサイトが開けなくなった。

nginx で公開しているWebサイトがブラウザで見られなくなった。 このWebサーバは nginx + Let's Encrypt でhttps接続をするように設定してあるが、 開くと次のようなエラーが表示される ========== このサイトは安全に接続できません 無効な応答が送信されました。 ERR_SSL_PROTOCOL_ERROR ========== 三日前に表示できたのに突如上記表示がされるようになった。 19-7-22 表示できた 19-7-24 cronによりLet's Encryptの自動更新 19-7-25 表示できない 調べると自動更新後から見れなくなっている可能性が高い。 取り敢えず次のサイトを参考に対処した。 [参考] Let's Encryptの自動更新でERR_SSL_PROTOCOL_ERROR発生 https://qiita.com/MasaGon/items/c6719e723e9fb57e3a4f 結論をいえば、 Let's Encrypt導入時に自動的に作られたファイルを修正した。 修正したファイル  /etc/nginx/conf.d/default.access.conf 追加した内容  ssl_session_tickets  off; この一行を追加してnginxを再起動したら復旧した。 原因はセッションの手続きに問題があったようだ。 https://github.com/jwilder/nginx-proxy/issues/580 この件を調べている最中にSSLのテストを行うサイトで確認をした。 [参考] Chromeで「このサイトは安全に接続できません」となり接続エラーとなる場合の解除方法は?  https://aprico-media.com/posts/1592 SSL Server Test  https://www.ssllabs.com/ssltest/ SSL Server Test では SSLの証明書に登録されているドメイン名について色々調べてくれるようだ。

smashing をインストールしたが 起動しない

smasshing を使ってダッシュボードを作ってみた。 Raspberry Pi にダッシュボードをインストールしデジタルサイネージ(電子看板)を作る https://atsreport.blogspot.com/2019/06/raspberry-pi.html 仮想環境に構築し色々設定し起動してみたがエラーが出て起動しない。 bundler: failed to load command: thin (/usr/local/bin/thin) ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. 環境によるみたいで次の内容を Gemfile ファイルに次の追記すると起動した。 === gem 'execjs' gem 'therubyracer' === [参考] Dashingで簡単にダッシュボードを作る方法 https://www.ryuzee.com/contents/blog/6861

Raspberry Pi にダッシュボードをインストールしデジタルサイネージ(電子看板)を作る

前に書いたメモを参考にデジタルサイネージ(電子看板)を作る。 デジタルサイネージを作りたいので、そのためのメモ https://atsreport.blogspot.com/2019/05/blog-post.html 今回の方法はsmashing をインストールし、ブラウザでアクセスすればよい。 smashing https://github.com/Smashing/smashing ruby.h が入っていないと怒られるので最初にruby-devをインストールしておく。 $ sudo apt install ruby-dev 以下の手順ははsmashingの公式に書かれている通りである。 まず、bundler をインストール bundler https://bundler.io/ $ sudo gem install bundler つぎに smashing をインストール $ sudo gem install smashing このインストールはちょっと時間がかかった。 3分ぐらい。 これで基本的なインストールは終わり。 次に表示するプロジェクトを作成。 $ smashing new my-project プロジェクトのディレクトリ内に移動。 $ cd my-project 必要なgemがあればインストールする。 $ bundle ダッシュボードを起動する。 $ smashing start 起動するとtwitter API key を入力するようにエラーが表示される。 デフォルトのWidgetにはtwitterが含まれている為である。 API key を得るためには申請する必要がある。 ブラウザで localhost:3030 にアクセスすると表示される。 F11 とかで全画面にするとデジタルサイネージとして使える。 smashing を実行したコンピュータへブラウザで接続すると表示されるため、 smashing 実行用とデジタルサイネージ用のコンピュータを分けてもよい。 後は必要に応じてカスタマイズをすればよい。 [参考] Raspberry Piで作るお手軽Dashbord https://qiita.com/moonstruck...

Webページの Basic認証

Webサイトの特定のアドレスへのアクセスにパスワードを設定したい。 そこでBasic認証の設定を行う。 Webサーバは、Apache と nginx の場合を記す。 Apache の場合 httpd.conf の 設定を AllowOverride All にしておく。 AllowOverride http://httpd.apache.org/docs/trunk/ja/mod/core.html#allowoverride この設定で .htaccess ファイルが有効になる。 その上で次の2つのファイルを作ると そのディレクトリにアクセスするにはユーザ名とパスワードが必要になる。 ===.htaccess ====== AuthUserfile /絶対パス/.htpasswd AuthName "Please enter your ID and password" AuthType Basic require valid-user =============== === .htpasswd ====== ユーザ名 : パスワードのハッシュ =============== [参考] .htaccess による認証用 パスワード暗号化ツール http://www.luft.co.jp/cgi/htpasswd.php ベーシック認証用 .htacess 作成ツール https://www.softel.co.jp/labs/tools/basic-auth/ nginxの場合 nginxの設定ファイルに次を書き込む。 書き込むのはBasic認証をさせたいlocationディレクティブの中に書く。 ===== auth_basic "メッセージ"; auth_basic_user_file /絶対パス/.htpasswd; ===== ここで設定したアドレスにパスワードのファイルをおく。 === .htpasswd ====== ユーザ名 : パスワードのハッシュ =============== [参考] Nginx で Basic 認証 https://qiita.com/kotarella1110/items/be76...

Webサイトのリダイレクトをブラウザで行う

Webサイトのリダイレクトは次のような方法で行うことが出来る。 Webサーバの設定 Javascript HTML metaタグ サーバの設定ができるのであればこちらの方法でリダイレクトをすればよい。 この場合すべてのアクセスをリダイレクト出来る。 しかし、設定が行えない状況であればその他の方法を選ぶ必要がある。 JavascriptやHTMLタグを利用する場合は、 クライアント側の処理なのでサイト運営者側でコントロール出来ないため 必ずリダイレクトされるとは限らない。 以下に挙げる例は、https://www.google.com/ にリダイレクトする例である。 Javascriptを利用する場合 次の文を書き込む。 location.href = “https://www.google.com/”; タグを利用する場合 次の文をヘッダに書き込むと5秒後にリダイレクトする。 <meta http-equiv="refresh" content="5;URL='https://www.google.com/'” /> これらを含めたソースは以下のようなものになる。 ===== <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>転送</title> <meta http-equiv="refresh" content="5;url='https://www.google.com/'" /> <script> setTimeout("location.href='https://www.google.com/'",1000*5); </script> </head> <body> 本文 </body> </html> =====

nginx で CMS を導入したら CSS や 画像が表示されなくて困った話

nginx で CMS を構築した。 アクセスするとレイアウトが崩れている。 心当たりがあったので対処してみた。 SELinux の無効 とりあえず SELinux を無効にしてみた。変化はなかった。 nginx.conf の確認 画像だけが表示されないなど、 nginx.conf の設定を間違うと起こるのでいろんなサイトを調べてみた。 よくある原因は、 ディレクティブの優先順位がうまくできていない include    mime.types; が書かれていない 等がよく見つかった。 今回の原因はパーミッションの問題だった。 アクセスしたいファイルの3つ上のディレクトリに実行権限がついていないため アクセスできなくなっていた。 実行権限をつけ無事に閲覧できた。

nginx の設定 on CentOS7

nginx でWebサーバを立ち上げた。 立ち上げるにあたって次の設定を行った。 ディレクトリにアクセスされたらindex.htmlに飛ばす エラーページをApache風にする IPアドレス直打ちでのアクセスはエラー表示する ディレクトリへのアクセスを index.html へ飛ばすには、 server ディレクティブ内につぎを書き加える。 index    index.html; Apache のエラーページを表示させるには、 server ディレクティブ内にエラーページの設定をおこなう。 error_page 403 404 500 502 503 504 = /apache_404.html; location = /apache_404.html {           return 404 "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p>The requested URL $request_uri was not found on this server.</p>\n<hr>\n<address>Apache/2.2.31 Server at $host Port $server_port</address>\n</body></html>";            internal;  } IPアドレスでのアクセスはエラー表示にするためには、 デフォルトサーバの設定を変更すし、 http://example.jp/ へのアクセスには必要な設定を行う。 server {     listen ...

Webサーバ に Let's Encrypt を導入し https で接続できるようにした

稼働中の Webサーバ に Let's Encrypt を導入してみた。 環境は、CentOS 6 に Nginx でWebサービスを可動済み。 次の順に手続きをおこなう。 Let's Encrypt のインストール Nginx の設定 証明書の更新 Let's Encrypt のインストール 次のコマンドでダウンロードする。 $ git clone https://github.com/certbot/certbot 次のコマンドでインストールが始まる。 このコマンドの実行時点でWebが外からつながるようになっていることと、443ポートがアクセスできるようにしておく必要がある。 # ./certbot/certbot-auto --debug このコマンドの中でyumが起動し必要なプログラムをインストールし、 その後、Let's Encrypt の設定をきいてくるので入力する。 この時に設定ファイルからドメイン名を拾ってくるので、 どのドメイン名のアクセスを https で繋げる必要があるか答える。 また、この設定の中で Nginx の設定を自動で変更するかきいてくる。 ここで自動変更を選ぶと Nginx の設定ファイルが書き換えられる。 Nginx の設定 インストール時に設定変更しなかったのなら手動で変更する必要がある。 ここまでで https での接続が出来るはずなので確認する。 証明書の更新 Let's Encrypt の証明書は有効期限が 90日なので、cronで更新できるようにする。 # certbot-auto renew このコマンドで証明書の更新がされる。 ただし、有効期限まで30日を切らないと更新されない模様。 強制的に更新するなら次のようにするとよい。 # certbot-auto renew --force-renew [参考] Let's Encrypt+NginxでSSL証明書発行、自動更新の設定方法 https://qiita.com/yudsuzuk/items/83115236e9ca184326d2

adiary 構築 on NGINX in CentOS6 其の二

VirtualBox に CentOS6 の仮想環境を準備し、そこにWebサーバ nginx をインストールし、ブログシステム adiary を導入した。 https://atsreport.blogspot.com/2017/12/adiary-on-nginx-in-centos6.html adiaryの公式サイトにある手順通りに行ったが、表示がおかしい。 具体的には、ページは読み込まれるのにcssファイルが読み込まれない為、レイアウトがおかしい。 原因はSELinuxだった。 次のコマンドで一時的に無効にするとレイアウトがきちんと表示された。 # setenforce 0 取り敢えずこの状態でブログシステムは稼働するが、SELinuxの設定をする場合は以下のページを参照して設定する。 [参考] Security-Enhanced Linux - Red Hat Engineering Content Services https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/security-enhanced_linux/ SELinux - fedora https://docs-old.fedoraproject.org/ja-JP/Fedora/19/html/Security_Guide/ch09.html

adiary 構築 on NGINX in CentOS6

CentOS6 に nginx を入れ、adiary を構築してみた。[ adiary 公式サイト ]  epel リポジトリが登録してなければ次を実行。 # yum install epel-release この記事に従って nginx をインストールしてたら、epel リポジトリは登録されている。 Webサーバ nginx のインストール on CentOS6 https://atsreport.blogspot.com/2017/12/web-nginx-on-centos6.html adiary は perl で動作しfcgi に対応しているので、perl-FCGI もインストールする。 # yum install perl-FCGI 以上で動作環境は整ったので、次に adiary を導入する。 tarボールを落としてきて展開する 又は git を使いデータを取ってくる。 tarボールは公式サイトから探してきて必要な場所に展開すればよい。 git を使う場合は、まずコマンドのインストールをする。 # yum install git この後、adiary を展開するディレクトリに移動し、次のコマンドを実行。 $ git clone https://github.com/nabe-abk/adiary 展開後、次の設定を行う。 ディレクトリパーミッションの設定 adiary.conf.cgiの設定 以上で adiary の導入は終わり、後は nginx の設定を行う。 nginx はデフォルトの状態だと /etc/nginx/nginx.conf が最初に読み込まれ、 このファイルから /etc/nginx/conf.d/*.conf が読み込まれる。 そして、/etc/nginx/conf.d/default.conf から /etc/nginx/default.d/*.conf が読み込まれる。 そこで、/etc/nginx/default.d/adiary.conf を作り、次を書き込む。         location /adiary/ {     ...

Perlで動作するCMS 一覧

Movable Type https://www.movabletype.jp/ Perl、MySQL 商用有償、個人無償 なライセンス (OpenSourceではない) adiary (aDiary ではない) https://adiary.org/ Perlで動作、DB不要、MySQL、PostgreSQLを使うことも可 AGPLv3ライセンス FreeStyle Wiki http://fswiki.osdn.jp/cgi-bin/wiki.cgi Perlで動作、DB不要 GNU GPLライセンス YukiWiki 結城浩 Perl 日本語Wikiの草分け的存在。最新バージョンは2.1.2a。 http://www.hyuki.com/yukiwiki/ TWiki Perl http://twiki.org/ ライセンス GPL

Webサーバ nginx のインストール on CentOS6

Webサーバ を CentOS6 上に起動してみた。 apache ではなく、nginx を動かしてみた。 まず、インストールする。 EPEL リポジトリに登録されているのでリポジトリを追加。 # yum install epel-release nginx をインストール。 # yum install nginx nginx を起動。 # service nginx start ブラウザから確認。  Welcome to nginx on EPEL! が表示された。 なお、Firewall の確認が必要。 nginx エイリアスの設定 設定ファイルは /etc/nginx/nginx.conf である。 このファイルで全体に関わる設定がされている。 # For more information on configuration, see: #   * Official English Documentation: http://nginx.org/en/docs/ #   * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events {     worker_connections  1024; } http {     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '             ...

Webサーバ apache のインストール on CentOS6

テストで作った仮想サーバー上の CentOS6 に Webサーバ apache を インストールした。 # yum install httpd でインストールし、 # service httpd start で起動した。が、起動しない。 設定ファイルがおかしいのかと思いチェックした。 # apachectl -t httpd: apr_sockaddr_info_get() failed for myhostname httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName Syntax OK ググるとホスト名の件でトラブっているみたい。 サーバ名を localhost.localdomain に設定する為、 /etc/httpd/conf/httpd.conf の 次の行を書き換えた。 #ServerName www.example.com:80 ServerName localhost.localdomain 再度チェックするとエラーが出ないことを確認。 # apachectl -t Syntax OK httpd を起動。 # service httpd start ファイアウォールがあると接続できないので確認をする。 仮想環境のテストサーバなので取り敢えず # iptables -F で取り敢えず接続できることを確認した。 この後、エイリアスの設定を行った。 設定ファイルは /etc/httpd/conf.d/*.conf を読み込むように書かれているので、 エイリアスの設定は この場所においた。 /etc/httpd/conf.d/alias.conf alias /user0001/ /home/localuser/html/ <Directory /home/localuser/html >   Allow from all </Directory>