Raspberry Pi Model 2、Gentoo Linux、およびNginxサーバー上のセキュアMoodle
こんにちは、
Gentoo LinuxオペレーティングシステムとNginxウェブサーバを実行しているRaspberry Pi Model 2ハードウェアにMoodleをインストールしたときの経験を共有したいと思います。それはここに到達することができます: [1]
最初に私はこの手引きに従ってRaspberry Pi Model 2ハードウェアにGentoo Linuxをインストールしました: [2]
それから私はこれらのガイドに従ってNginxウェブサーバーをインストールしてセットアップしました: [3] [4]
私のnginx.configファイルは次のとおりです。
ユーザーnginx nginx。 worker_processes 1 ; error_log / var / log / nginx / error_log情報。 イベント{ worker_connections 1024 ; epollを使う } http { / etc / nginx / mime.typesを含めます。 default_typeアプリケーション/オクテットストリーム。 log_formatメイン '$ remote_addr - $ remote_user [$ time_local]' '"$ request" $ status $ bytes_sent' '"$ http_referer" "$ http_user_agent"' '"$ gzip_ratio"' ; client_max_body_size 15m。 client_header_timeout 10m。 client_body_timeout 10m。 send_timeout 10メートル。 connection_pool_size 256 ; client_header_buffer_size 1k。 large_client_header_buffers 4 2 k; request_pool_size 4k。 gzipオフ output_buffers 1 32k。 postpone_output 1460 。 sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 75 20 ; ignore_invalid_headers on; index index.html index.php; add_header厳密トランスポートセキュリティ"max-age = 15768000; includeSubDomains"常に。 サーバー{ 443 SSL HTTP2を聞きます。 listen [ :: ] : 443 ssl http2; server_name www.cspl.hu; root / var / www / localhost / htdocs; location = / KisTechTavOktKulcsosPicike.ico { log_not_found off; access_logオフ。 } ssl_certificateの/ etc / sslの/ certsの/ chained.pem。 ssl_certificate_key / etc / ssl / private / domain.key; ssl_session_timeout 5メートル。 ssl_protocols TLSv1 TLSv1.1 TLSv1.2。 ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-S HA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA- AES256-SHA:DHE-RSA-AES128-SHA:EECDH + CHACHA20:EECDH + AES128:RSA + AES128:EECDH + AES256:RSA + AES256:EECDH + 3DES: RSA + 3DES:! MD5; ssl_session_cache共有:SSL:50メートル。 ssl_dhparamの/ etc / sslの/ certsの/ dhparam.pem。 ssl_prefer_server_ciphers on; access_log / var / log / nginx / localhost.access_log main; error_log / var / log / nginx / localhost.error_log info; access_log / var / log / nginx / localhost.ssl_access_log main; error_log / var / log / nginx / localhost.ssl_error_log情報; location〜 [ ^ / ] \ .php ( / | $ ) { fastcgi_split_path_info ^(+ \ phpの。?。)$(/ *。); if ( !- f $ document_root $ fastcgi_script_name ) { 404を 返します。 } fastcgi_pass UNIXの場合:/ var /実行/ PHP-FPM / PHP-fpm.sock。 fastcgi_index index.php; fastcgi_paramsを含める。 fastcgi.confをインクルードします。 } location / dataroot / { 内部; 別名 / var / www / localhost / moodle / ; #パスが/で終わることを確認してください。 } location / moodlelib / { 内部; 別名 / var / www / localhost / htdocs / moodle / lib / ; #パスが/で終わることを確認してください。 } location / moodlepix / { 内部; 別名 / var / www / localhost / htdocs / moodle / pix / ; #パスが/で終わることを確認してください。 } 場所/ムードリム/ { 内部; 別名 / var / www / localhost / htdocs / moodle / theme / ; #パスが/で終わることを確認してください。 } } サーバー{ 80を聞きます。 聞く[ :: ] : 80 ; server_name www.cspl.hu; 301 https: // $ server_name $ request_uriを 返します。 } }
私のfastcgi.configファイルは次のとおりです。
fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name ; fastcgi_param QUERY_STRING $ query_string ; fastcgi_param REQUEST_METHOD $ request_method ; fastcgi_param CONTENT_TYPE $ content_type ; fastcgi_param CONTENT_LENGTH $ content_length ; fastcgi_param SCRIPT_NAME $ fastcgi_script_name ; fastcgi_param REQUEST_URI $ request_uri ; fastcgi_param DOCUMENT_URI $ document_uri ; fastcgi_param DOCUMENT_ROOT $ document_root ; fastcgi_param SERVER_PROTOCOL $ server_protocol ; fastcgi_param REQUEST_SCHEME $スキーム 。 fastcgi_param HTTPS $ https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI / 1.1 ; fastcgi_param SERVER_SOFTWARE nginx / $ nginx_version ; fastcgi_param REMOTE_ADDR $ remote_addr ; fastcgi_param REMOTE_PORT $ remote_port ; fastcgi_param SERVER_ADDR $ server_addr ; fastcgi_param SERVER_PORT $ server_port ; fastcgi_param SERVER_NAME $ server_name ; #PHPのみ。PHPが--enable-force-cgi-redirectでビルドされている場合に必要 fastcgi_param REDIRECT_STATUS 200 。
私のfastcgi_paramsファイルは:
fastcgi_param PATH_INFO $ fastcgi_path_info ; fastcgi_param QUERY_STRING $ query_string ; fastcgi_param REQUEST_METHOD $ request_method ; fastcgi_param CONTENT_TYPE $ content_type ; fastcgi_param CONTENT_LENGTH $ content_length ; fastcgi_param SCRIPT_NAME $ fastcgi_script_name ; fastcgi_param REQUEST_URI $ request_uri ; fastcgi_param DOCUMENT_URI $ document_uri ; fastcgi_param DOCUMENT_ROOT $ document_root ; fastcgi_param SERVER_PROTOCOL $ server_protocol ; fastcgi_param REQUEST_SCHEME $スキーム 。 fastcgi_param HTTPS $ https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI / 1.1 ; fastcgi_param SERVER_SOFTWARE nginx / $ nginx_version ; fastcgi_param REMOTE_ADDR $ remote_addr ; fastcgi_param REMOTE_PORT $ remote_port ; fastcgi_param SERVER_ADDR $ server_addr ; fastcgi_param SERVER_PORT $ server_port ; fastcgi_param SERVER_NAME $ server_name ; #PHPのみ。PHPが--enable-force-cgi-redirectでビルドされている場合に必要 fastcgi_param REDIRECT_STATUS 200 。
ここから証明書を取得します。 [5]
最後に、私は以下のことをこの順序で行いました:
- webapp-configの助けを借りて以前のMoodleインストールを削除します
webapp-config -Cムードル3.2.3
- (私のMoodleサイトをHTTPからHTTPSに移行する前に3.2.3バージョンのmoodleをインストールしました)
- emergeでGentoo moodleパッケージを削除してください。
emerge --depclean www-apps / moodle
- アンインストールしてから、ゴーストインストールのためにwebapp-configパッケージを再インストールしてください(これについてはここを見てください: [6]
emerge --unmerge app-admin / webapp-config
rm -rf / var / db / webapps /
emerge -a app-admin / webapp-config
派遣確認
- ここで私は「u」を選択しますが、その後/ etc / vhosts / webapp-configを編集する必要があります
vhost_server = "nginx"
- 再度moodleパッケージをインストールしてください(ただし、これは新しい3.3.1バージョンです)。
emerge -a www-apps / moodle
webapp-config -I moodle 3.3.1
- インストール後、メッセージ「POST-INSTALL INSTRUCTIONS」が表示されます。このメッセージには、Moodleサイトのインストールをどのように進めるかを案内しています。 mysqlおよびpostgresqlデータベース、実行するコマンドなどについて
- config.phpファイルを設定します。
私のconfig.phpファイルは次のとおりです。
<?php 設定解除 ( $ CFG ) ; //この行を無視 グローバル $ CFG 。 //これはPHPUnitの実行に必要です $ CFG = new stdClass ( ) ; $ CFG - > dbtype = 'pgsql' ; // 'pgsql'、 'mariadb'、 'mysqli'、 'mssql'、 'sqlsrv'、または 'oci' $ CFG - > dblibrary = 'native' ; //現時点では 'ネイティブ' $ CFG - > dbhost = 'localhost' ; // 'localhost'、 'db.isp.com'、IPなど $ CFG - > dbname = 'moodle' ; //データベース名、例えばmoodle $ CFG - > dbuser = 'postgres' ; //データベースのユーザー名 $ CFG - > dbpass = 'secret_password' ; //データベースのパスワード $ CFG - > prefix = 'mdl_' ; //すべてのテーブル名に使用する接頭辞 $ CFG - > dboptions = array ( 'dbpersist' => false 、 //持続的データベース接続を確立する // 中古?最も安定している場合は 'false'に設定します。 //設定、 'true'はパフォーマンスを向上させることができます // 時々 'dbsocket' => '/ var / run / postgresql /' 、 // UNIXソケット経由の接続を使うべきか // 'true'またはカスタムパスに設定した場合 //ここでdbhostを 'localhost'に設定します //(mysqlは常にソケットを使用していることに注意してください。 // dbhostが 'localhost'の場合 - 必要な場合 //ローカルポート接続は「127.0.0.1」を使用) 'dbport' => '' 、 //接続時に使用するTCPポート番号 //サーバーに。空の文字列を //デフォルトポート ); $ CFG - > wwwroot = 'https://www.cspl.hu/moodle' ; $ CFG - > dataroot = '/ var / www / localhost / moodle' ; $ CFG - > ディレクトリ 権限 = 02777 。 $ CFG - > admin = 'admin' ; $ CFG - > slasharguments = true ; $ CFG - > xsendfile = 'X-Accel-Redirect' ; $ CFG - > xsendfilealiases = array ( '/ dataroot /' => $ CFG - > dataroot 、 '/ moodlelib /' => '/ var / www / localhost / htdocs / moodle / lib' 、 '/ moodlepix /' => '/ var / www / localhost / htdocs / moodle / pix' 、 '/ moodletheme /' => '/ var / www / localhost / htdocs / moodle / theme' ); require_once ( dirname ( __ FILE__ ) 。 '/lib/setup.php' ) ; //編集しない ?
最後に、私を助けてくれた人々、 Matteo Scaramuccia 、 Ken Task 、そして他の多くの人々にも感謝します。