chevron_left

メインカテゴリーを選択しなおす

cancel
arrow_drop_down
  • このサイトで利用しているフレームワーク

    そんな物はない 理由は簡単、必要ないからだ このサイトもサーバサイドはPHPで組んであるが、フレームワークなど邪魔にしかならない 上記に挙げたフレームワークはこのサイトのようなSPA(Single Page Application)と相性が悪い UIのほとんどをJavaScriptでゴリゴリ書いていくようなシステムは、PHP用のフレームワークでは書くことは現実的ではないのだ

  • フレームワークとは

    ソフトを開発する上での枠組みを提供してくれるライブラリ PHPにも様々なフレームワークが存在しており、開発手順を体系化することができる フレームワークを使わない開発は、何のチュートリアルもなくオープンワールドのゲームの世界に放り出されるのに似ている フレームワークを利用することによって、クエストを進めるかのごとく開発を行うことができる 逆に言うと、開発に自由度がなくなり、似たり寄ったりのシステムが出来上がることを意味するが、オリジナリティーあふれるシステムを求める顧客も希有である 便利ではあるが、基本文法もろくに覚えていないうちからフレームワークを利用するのはお勧めできない

  • フレームワークに関して

    フレームワークとは 代表的なフレームワーク このサイトで利用しているフレームワーク MVC

  • PHPについて

    PHPはHTMLに埋め込む感覚で使える、WEBサーバ上で動作するスクリプト言語 WEBベースのアプリケーションを作るのに特化しているため、そのような用途であればとても効率的に開発を進めることができる

  • はじめに

    PHPについて 言語の種類 サーバとクライアント

  • nginxの設定

    /etc/nginx/sites-available/default を編集先頭あたりに定義(プロセスが複数の場合はserver行を増やす)upstream nodesock{ server unix:/mnt/c/work/www/node_app/sock/app.sock.0; } server { ・・・ } のブロック内に以下の内容を追加 location = /node_app/ { proxy_pass http://nodesock/; }サービスの更新service nginx reloadブラウザから確認http://localhost/node_app/

  • Node.js+TypeScript

    インストール サンプルアプリケーションの作成 nginxの設定

  • サンプルアプリケーションの作成

    以下のフォルダを作成mkdir /mnt/c/work/www/node_appcd /mntc/work/www/node_appmkdir appmkdir logmkdir sockecosystem.config.js でpm2の設定を行うmodule.exports = { apps: [{ name: "app", script: "./app/index.ts", watch: ["app"], instances: 1, exec_mode: "cluster", "log-date-format": "YYYY-MM-DD HH:mm Z", error_file: "./log/error.log", out_file: "./log/access.log", node_args: ["--inspect=0.0.0.0:9229"], env: { "NODE_OPTIONS": " --inspect=localhost:9229" } }] }inspectでデバッグ用のポートを設定していますが、exec_modeがclusterの場合、ポート番号がプロセスごとに+1されて作られます最初のプロセスは9229+1で9230になりますexec_modeがforkの場合は指定通り9229となりますまた、clusterの場合はオプション指定がnode_argsになり、forkの場合はNODE_OPTIONSになるので注意が必要ですさらにforkの場合、node_argsがあると起動に失敗します色々と勘弁して欲しい仕様ですapp/index.ts//ドメインソケット用パス const SOCK_PATH = 'sock/app.sock.' + (process.env.NODE_APP_INSTANCE '0') console.log(SOCK_PATH) var fs = require('fs') var http = require('http') var server = http.createServer() server.on('request', function

  • PHP入門

    サンプルソースコード https://github.com/mofon001/PHPTest正確な情報は公式のドキュメントを読むのが確実である

  • インストール

    推奨版である10系統をインストールしますちなみにパッケージを選択しないと8系統になりますcurl -sL https://deb.nodesource.com/setup_10.x sudo bash - sudo apt -y install nodejs sudo npm install -g typescript ts-node pm2sudo pm2 install typescript ts-nodeさらにアプリケーションサーバとして動作させるため、pm2を追加インストールしています。

  • 動作確認

    コンテンツフォルダがc:\work\www\htmlになっている場合c:\work\www\html\test.php<?phpphpinfo()ブラウザから確認http://localhost/test.php

  • 起動設定

    ・Linuxから起動sudo service php7.3-fpm start ・Windowsから起動wsl sudo service php7.3-fpm start ・PowerShell(管理)でログイン時に起動させる設定schtasks /create /tn php-fpm /tr '\"wsl\""sudo service php7.3-fpm start"' /sc onlogon /F ・PowerShell(管理)でWindows起動時に一緒に起動させる設定schtasks /create /tn php-fpm /tr '\"wsl\""sudo service php7.3-fpm start"' /sc onstart /np /F ・タスクスケジューラから削除schtasks /delete /tn php-fpmタスクスケジューラを利用した自動起動は、sudoのパスワード回避を設定しておく必要があります

  • Windowsの一般領域をコンテンツ置き場にする

    WSLはWindowsのネイティブドライブにアクセス可能なので、コンテンツフォルダをWindows管理下の場所に設定することが可能です。コンテンツ置き場を c:\work\www\html に設定する場合/etc/nginx/sites-available/defaultroot /var/www/html; ↓root /mnt/c/work/www/html;サービスの更新service nginx reload以降から c:\work\www\html にコンテンツを設置すると、http://localhost/ から表示することが可能になります。

  • nginx

    WSL+Ubuntuではaptで一通りのパッケージをインストールすることが出来ます。もちろんnginxもすんなり入ります。インストールと起動 動作確認 自動起動の設定 手動の起動/停止用BATファイル Windowsの一般領域をコンテンツ置き場にする

  • 手動の起動/停止用BATファイル

    開発テスト用に利用する場合は、以下のようなBATを作っておけば、好きなタイミングでWindows側から起動できる・起動start_nginx.batwsl sudo service nginx start・停止stop_nginx.batwsl sudo service nginx stop

  • AjaxとPHP

    PHPの入門時においては、PHPはHTMLを吐き出す言語だと思って差し支えはないただしJavaScriptとデータをやりとりするAjaxという仕組みを使った場合、根本的に開発手法が変わるクライアントに対してPHPはデータを返すのであって、HTMLを返すための言語ではないことに気がつくだろう

  • 自動起動の設定

    Windowsの実行機能を利用する必要があるので、タスクスケジューラに設定を流し込みます※要sudoのパスワード回避PowerShell(管理者)から以下のコマンドを実行・ログイン時に自動起動させるschtasks /create /tn nginx /tr '\"wsl\""sudo service nginx start"' /sc onlogon /F ・Windows起動時に自動起動schtasks /create /tn nginx /tr '\"wsl\""sudo service nginx start"' /sc onstart /np /F・設定の解除schtasks /delete /tn nginxタスクスケジューラは別のWindowsマシンにコマンドを送り、即時実行することも可能なので、使い方を覚えると別マシンのリモート操作などに応用することが出来ます

  • インストール

    ・PHP7.3のインストールapt -y install software-properties-common apt-add-repository -y ppa:ondrej/php apt -y install php7.3-fpm

  • 動作確認

    Windows上のブラウザから以下のアドレスへアクセスhttp://localhostnginxはLinux向けのプロセスですが、LinuxサブシステムによってWindowsのネイティブプロセスとして動作します。つまり扱いはWindowsのプログラムと同じなので、ネットワークインタフェイスはWindowsと同一になります。動き方はWindows用のWebサーバを起動した状態と同じだと考えてください。

  • PHP

    ここではPHP7.3をnginx経由で使えるようにしますインストール 起動設定 nginx側の設定 動作確認

  • 接続方法

    Windowsでsshクライアントを起動してlocalhostに接続してください

  • 公開鍵による認証

    公開鍵はRLogin等で作成した文字列を流し込んでくださいecho 公開鍵 >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys

  • パスワード認証の許可

    ssh_configを編集してパスワードを許可するコマンドsed -i '/# PasswordAuthentication yes/s/#//' /etc/ssh/ssh_configservice ssh restartセキュリティが気になる場合は、これをやらず次の項目「公開鍵による認証」を設定してください

  • 起動設定等

    ・Linuxから起動sudo service ssh start・Windowsから起動wsl sudo service ssh start・PowerShell(管理)でログイン時に起動させる設定schtasks /create /tn ssh /tr '\"wsl\""sudo service ssh start"' /sc onlogon /F ・PowerShell(管理)でWindows起動時に一緒に起動させる設定schtasks /create /tn ssh /tr '\"wsl\""sudo service ssh start"' /sc onstart /np /F・タスクスケジューラから削除schtasks /delete /tn sshタスクスケジューラを利用した自動起動は、sudoのパスワード回避を設定しておく必要があります

  • 起動方法

    Storeからインストールが完了するとスタートに登録されるのでそこから起動可能です。コマンドプロンプトからwslと入力しても起動します

  • WSL+Ubuntuによるサーバ構築

    WSL(Windows Subsystem for Linux)はWindows10(1709)以降に搭載されたLinux用のSubsytemです。これを利用することによってLinuxのプログラムをWindows上で動作させることが可能です。WSLと仮想環境の違い Ubuntuを入れた場合のネイティブLinuxとの相違点 用途に関して

  • 最初に行うコマンド

    sudoをパスワード無しにしますこの時に一度パスワードを求められますが、それ以降は必要なくなりますこれをやっておかないと、windows側からコマンドを流し込むのが面倒になりますsudo sh -c "echo $USER ALL=\(ALL\) NOPASSWD:ALL >> /etc/sudoers"以下はパッケージのアップデートですsudo apt updatesudo apt -y upgrade

  • Ubuntuのインストール

    Microsoft Storeから「Ubuntu」を検索バージョン番号が付いているものと無印のものがありますが、無因は2019年3月現在で18.04.1です。dockerなどが必要な場合を除き、無因でOKです。オフラインインストールするなら以下を参照https://docs.microsoft.com/en-us/windows/wsl/install-manual

  • 環境構築

    WSLを有効にする Ubuntuのインストール 起動方法 最初に行うコマンド

  • Ubuntuを入れた場合のネイティブLinuxとの相違点

    WSLからUbuntuを利用した場合とネイティブLinuxとの相違点で注意するべきなのは以下の点です・ネイティブ(仮想環境) ブートプロセスが存在し、そこで必要なサービスを起動する NICが別に存在・WSL ブートプロセスは存在せず、正確にはWindowsの起動がブートプロセスである サービスを自動起動させたければ、Windows側のスタートアップの仕組みを利用する UbuntuのデータはWindowsのユーザフォルダに格納され、Windows側から直接アクセス可能 Windows側のドライブは/mntに自動マウントされ、直接アクセス可能 NICはWindowsと共有(そもそも同じOSで同じ環境)なので、localhostでUbuntuにアクセスできる UNIXドメインソケットやプロセスforkの仕組みを利用できる

  • WSLと仮想環境の違い

    Windows上でLinuxのプログラムを動作させるためには、通常は仮想環境を入れてPCの動作そのものをエミュレーションさせて動かします。その場合はメモリやCPU資源を大量に消費することになるので、ホストOS(Windows)側にそれなりに負荷がかかります。 WSL(Windows Subsystem for Linux)を使用した場合、Linux向けのプログラムがそのまま動きます。文字通りそのままです。これはWindows自体にLinux用のAPIを処理するためのSubsystemが実装されたためです。Linuxのプログラムをそのまま動かした場合、CPUやメモリの消費量はWindows用のプログラムを動かすのと変わりません。 ただしWSLはあくまでもLinuxのAPIを処理するためのSubsystemなので、追加でLinuxのディストリビューションを入れる必要があります。MicrosoftStoreで好きなディストリビューションをインストールすることができ、インストールが完了すればそのディストリビューションをWindows上でそのまま動かすことができます。 WSLで動作させているプログラムは、Windowsの一般プログラムと同じように、タスクマネージャから個別に確認することができます。

  • WSLを有効にする

    ・直接有効にする場合(PowerShellの管理者) Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux・GUIから有効にする場合 optionalfeatures.exeを実行

  • 外部接続の許可

    ・TCPでの受付を許可する/etc/postgresql/11/main/postgresql.conf 以下の設定を追加listen_addresses = '*' ・md5パスワード認証を設定/etc/postgresql/11/main/pg_hba.conf 以下の設定を追加host all all all md5・UNIXドメインソケットで認証を行う場合/etc/postgresql/11/main/pg_hba.conf 以下の設定を追加local all all md5

  • インストール

    root権限を持った状態wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc apt-key add -RELEASE=$(lsb_release -cs) echo "deb http://apt.postgresql.org/pub/repos/apt/ ${RELEASE}"-pgdg main tee /etc/apt/sources.list.d/pgdg.listapt updateapt -y install postgresql-11

  • 結果の確認

    node_appフォルダをカレントディレクトリに設定し、以下のコマンドを実行nodejs app/index.js 確認http://アドレス/nodejs/ログアウトしても動作させたい場合は、コマンドを以下のようにするnohup nodejs app/index.js &ただしこの方法をテスト以外の目的で使用するのはお勧めしない

  • Node.js

    UbuntuでNode.jsの10系統を使用し、Nginxと連携するところまでを解説するインストール インストール結果の確認 テストアプリケーションの作成 Nginxの設定 結果の確認

  • 設定ファイルの場所

    ・基本設定ファイル /etc/postgresql/11/main/postgresql.conf・認証設定ファイル /etc/postgresql/11/main/pg_hba.conf

  • テストアプリケーションの作成

    これ以降の操作は一般ユーザ&ホームディレクトリで行う前提条件として以下のような構成を作るnode_app Node.jsアプリ作成用親ディレクトリ app Node.jsのプログラム置き場 sock UNIXドメインソケット置き場 まずは必要なディレクトリを作成するmkdir node_appcd node_appmkdir appmkdir sockテストプログラムの作成vi app/index.jsconst SOCK_PATH = 'sock/app.sock' //ドメインソケット用パス var fs = require('fs') var http = require('http') var server = http.createServer() server.on('request',function(req,res) { res.writeHead(200) res.write('<html><body>Hello world</body></html>\n') res.end() }) try{fs.unlinkSync(SOCK_PATH)}catch(e){} //ソケットファイルの削除 server.listen(SOCK_PATH) //ソケットの待ち受け設定 fs.chmodSync(SOCK_PATH, '666') //アクセス権の変更プログラムはUNIXドメインソケットを使用している面倒なのは二回目の実行時に前回のソケットファイルが残っていると正常に動作しないので、削除しなければならないことだまた、実行ユーザとNginxのIDが異なると、アクセス権の問題で接続できないので、Otherに書き込み権限を与える必要があるOtherにアクセス権を与えたくない場合は、usermod -Ga ユーザ名 www-dataで、実行ユーザのグループにnginxのユーザIDを追加して対処を行うグループへの追加コマンドを実行したらnginxの再起動を行わないと、アクセス権が更新されないので注意すること

  • PostgreSQL11

    インストール 起動設定 設定ファイルの場所 ユーザの作成 外部接続の許可

  • インストール結果の確認

    nodejs -v

  • 起動設定

    ・その場で起動systemctl start postgresql・自動起動systemctl enable postgresql

  • インストール

    Node.jsの10系統を選択(デフォルトでは8系統が選択されている)curl -sL https://deb.nodesource.com/setup_10.x bash -インストールapt -y install nodejs

  • デバッグの開始

    ブレークポイントを置いて、デバッグを開始するブラウザから該当するプログラムを呼び出し、ブレークポイントで止まるかどうか確認する

  • デバッグ設定

    launch.json { "version": "0.2.0", "configurations": [ { "name": "Listen for XDebug", "type": "php", "request": "launch", "port": 9000, "pathMappings": { "/var/www/html": "${workspaceRoot}/" } } ] }

  • サーバとクライアント

    基本的な動作 AjaxとPHP

  • Samba用ユーザの作成

    smbpasswd -a ユーザ名

  • Samba

    Linux上でWebアプリケーションを組む場合、面倒になるのがコンテンツのアップロードだ Sambaを利用することによって、直接ファイルが編集できるようになるので、そのあたりがかなり楽になるファイアウオールに穴を開ける(GCEを使用している場合) パッケージのインストール サービスの起動と有効化 Samba用ユーザの作成 確認 書き込みアクセスの許可

  • 確認方法

    /var/www/html/test.php<?php phpinfo();http://アドレス/test.phpこれでphpinfoの出力結果が表示されれば作業完了だ

  • nginxからphp-fpmに接続するための設定

    /etc/nginx/sites-enabled/default location ~ \.php$ { include snippets/fastcgi-php.conf; # With php-fpm (or other unix sockets): fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; # With php-cgi (or other tcp sockets): #fastcgi_pass 127.0.0.1:9000; }親切に最初からPHPを利用するためのコードが入っているやることは#のコメントアウトを解除するだけだfastcgi_passはphp7.0になっているところを7.3に直す必要があるまた、fastcgi_passの127.0.0.1:9000の方はコメントアウトしたままにすることUNIXドメインソケットを使った方が高速に動作する

  • サービスの起動と有効化

    systemctl enable smbd systemctl start smbd

  • php-fpmにnginxと連携するための設定を行う

    /etc/php/7.3/fpm/pool.d/www.conf に設定を記述していくことになるデフォルトではwww-dataというユーザに対する設定が入っているこれはUbuntuのnginxのユーザ名であるCentOS7ではデフォルトがApacheになっていたので修正が必要だったが、Ubuntuでは必要ない

  • 確認

    /etc/samba/smb.confに以下の内容を追加[www] path=/var/www/html writable=yesサービスの再起動systemctl restart smbd

  • php-fpmの起動と有効化

    php-fpmを起動時に有効にし、その場で起動する systemctl enable php7.3-fpm systemctl start php7.3-fpm

  • パッケージのインストール

    apt -y install samba

  • 言語の種類

    ・コンパイラ 主な言語 C/C++、Java、Golang、Nim コンパイルが必要、動作速度が速い・インタプリタ 主な言語 PHP,Perl,Ruby、Python コンパイルが不要、動作に別プログラムが必要、動作速度が遅い

  • 証明書の発行

    sudo certbot certonly --manual \--preferred-challenges=dns \--manual-auth-hook /var/lib//DirectEdit/txtregist.php \--manual-cleanup-hook /var/lib/DirectEdit/txtdelete.php \--server https://acme-v02.api.letsencrypt.org/directory \--manual-public-ip-logging-ok \--agree-tos -m メールアドレス \-d ドメイン名 -d *.ドメイン名 以上のコマンドで証明書が発行され、/etc/cron.d/certbotに、自動的に定期更新コマンドが登録される

  • MyDNSのアカウント設定

    /var/lib/DirectEdit/txtedit.conf<?php // ------------------------------------------------------------ // // txtedit.conf // // ------------------------------------------------------------ ?> <?php $MYDNSJP_URL = 'https://www.mydns.jp/directedit.html'; $MYDNSJP_MASTERID = ''; $MYDNSJP_MASTERPWD = ''; $MYDNSJP_DOMAIN = ''; ?> ID、パスワード、ドメインなど必要事項を記入

  • VirtualHostのデータを削除

    前回の設定ファイルが残っているのなら削除するrm -f /etc/nginx/sites-enabled/www /etc/nginx/sites-enabled/www2 systemctl reload nginx

  • 必要なものをインストールする

    apt -y install certbot

  • Let's Encryptによるhttps環境の構築

    Webコンテンツに対するアクセスを行う場合使われるプロトコルはhttpかhttpsである。httpsは暗号化されているため、セキュリティ面で使用が推奨されている。 ただしhttpsを使うためには、認証局(CA)に証明書を登録しなければならない。有料のCAを使うと年間に数万円の費用が発生する。これを無料で行ってくれるのがLet's Encryptである。 Let's Encryptで発行した証明書は、ドメインに関する操作権限は確認するものの、発行先の身元の証明は一切無い。ドメイン所有者との通信を保証することだけが目的となる。必要なものをインストールする VirtualHostのデータを削除 証明書の作成 VirtualHostの設定 証明書の定期更新

  • ブラウザで確認

    ブラウザに以下のアドレスを入れ、コンテンツが切り替わることを確認するhttp://www.ドメイン名/http://www2.ドメイン名/設定したドメイン以外でアクセスした場合は、nginxのデフォルトフォルダのコンテンツが返る

  • nginxの設定

    /etc/nginx/sites-enabled/wwwserver { listen 80; server_name www.ドメイン名; root /var/www/www; }/etc/nginx/sites-enabled/www2server { listen 80; server_name www2.ドメイン名; root /var/www/www2; }サーバの更新systemctl reload nginx

  • パラメータのチェック

    if(isset($_GET['SET'])) echo $_GET['SET'];else echo "データ未入力";初期表示時にエラーを出さないためには、初期化されていない変数を読み出さないようにするそのためにはisset()関数を使い、変数が存在するのかチェックする

  • インストール

    最初から入っています

  • 利用するドメインの設定

    ユーザ登録するとメールでIDとパスワードが送られてくる両方とも自分で変更することはできないログインしたら、「DOMAIN INFO」を選ぶ最初の方に使用可能なドメイン名の一覧があるので、好きなものを選ぶ下の方までスクロールすると以下の項目があるので、選んだドメイン名を入力するDomain* : (FQDN)選んだドメイン名のうち???の部分は自分でオリジナルの名前をつける名前がかぶっていなければ設定できる。さらに以下の項目を設定するHostname*, Type*, Content, Delegateid or your id. (Hostname is not FQDN)アスタリスクを設定することによって、一つ一つ設定しなくても複数のサブドメインに対応できる

  • ユーザ登録

    MyDNSのサイトへ移動し、「JOIN US」からユーザ登録を行う結びつけるIP一つごとに一つアカウントが必要となる30日更新通知を行わないとアカウントは削除される

  • 通知コマンド

    サーバからIPアドレスを通知するためには以下のコマンドを使うcurl -o /dev/null -s --user ID:PASS https://www.mydns.jp/login.htmlもちろんIDとPASSはメールで受け取ったものと差し替えるMyDNS側のLOG INFOでIPv4 UPDATEという表示が入っていれば成功だIP登録情報にサーバのIPが表示されているはずだサーバ上で以下のコマンドを入力し正引きが可能か確認するdig ドメイン名これでIPアドレスが返ってくれば問題ないもし駄目なようなら以下のようにして再度コマンドを実行するnslookup ドメイン名 ns1.mydns.jpMyDNSのサーバに直接問い合わせている最初のコマンドが駄目でこれで通るようなら、駄目な情報がGCEのDNSサーバにキャッシュされてしまっているキャッシュが更新されるまで数分待つ必要がある

  • ダイナミックDNSとは

    動的IPとドメイン名を結びつけるための仕組みDDNSを提供するアドレスへ、一定期間ごとにIPを通知することで成り立つ

  • タイムゾーンの設定

    GCEではタイムゾーンがUTCになっている特に問題を感じなければそのままでもかまわないが、日本時間に直すには以下の設定を行う確認date結果Tue Aug 21 07:43:12 UTC 2018設定timedatectl set-timezone Asia/TokyoFailed to set time zone: Invalid time zone 'Asia/Tokyo' というエラーが出た場合は、以下のパッケージをインストールapt -y install tzdata確認date結果Tue Aug 21 16:44:44 JST 2018

  • swap領域の作成

    dd if=/dev/zero of=/swapfile bs=1M count=1024chmod 600 /swapfilemkswap /swapfileswapon /swapfileecho /swapfile swap swap defaults 0 0 >> /etc/fstab サイズは1GBだが、変更したければcountの値を調整してほしい確認free結果 total used free shared buff/cache availableMem: 601792 131452 367260 5468 103080 363132Swap: 1048572 0 1048572

  • root権限を得る

    毎回sudoをするぐらいなら、rootになってしまった方が早い sudo su -

  • rootにパスワードをつける

    GCEでは初期ユーザがsudoをパスワードなしで使用できるため必須の作業ではないsudo passwd root

  • Ubuntuによるサーバ構築

    前提条件としてGoogleのGCP(GCE)環境下でのUbuntu(対象18.10)のサーバ構築方法をまとめていくちなみにCentOS7とUbuntuを比較すると、ランタイムやアプリのデフォルトのバージョンがUbuntuの方が新しいものを使用しているできるだけ新しいものを利用したいと考えるならUbuntuをおすすめするちなみに真に新しいものに飛びつきたいのならFedoraが一番だが、飛び抜けすぎていてGCPにはパッケージが提供されていないおそらく危ないからサーバで使うなということなのだろう

  • デバッグの開始

    ブレークポイントを置いて、デバッグを開始するブラウザから該当するプログラムを呼び出し、ブレークポイントで止まるかどうか確認する

  • RLoginでのポートフォワード設定

    RLoginのプロトコル設定からポートフォワードを選択し、以下のように設定を入れる設定が完了したら、サーバへの接続を切ってから再接続する

  • デバッグ設定

    launch.json { "version": "0.2.0", "configurations": [ { "name": "Listen for XDebug", "type": "php", "request": "launch", "port": 9000, "pathMappings": { "/usr/share/nginx/html": "${workspaceRoot}/" } } ]}

  • 確認

    test.php<?phpphpinfo();http://アドレス/test.php

  • php-fpmにnginxと連携するための設定を行う

    /etc/php-fpm.d/www.conf に設定を記述していくことになるデフォルトではApacheに対する設定が入っているこのままでは正常に動作しないので、Apacheとは離婚してもらいnginxとお付き合いしてもらう必要がある手動で設定するのは面倒なので、sedコマンドで必要項目を置換するsed -i '1,/user = /s/apache/nginx/' /etc/php-fpm.d/www.conf sed -i '1,/group = /s/apache/nginx/' /etc/php-fpm.d/www.conf sed -i '1,/listen = /s%127.0.0.1:9000%/var/run/php-fpm/php-fpm.sock%' /etc/php-fpm.d/www.conf sed -i '1,/;listen.owner = nobody/s/;listen.owner = nobody/listen.owner = nginx/' /etc/php-fpm.d/www.confsed -i '1,/;listen.group = nobody/s/;listen.group = nobody/listen.group = nginx/' /etc/php-fpm.d/www.confsystemctl restart nginx

  • php-fpmとnginx

    PHPを利用するに当たってApacheであればモジュールとして内部に組み込むことができる一方nginxはphp-fpmを別に起動して連携する方式となるphp-fpmのインストール(PHP7.3) php-fpmの起動と有効化 php-fpmにnginxと連携するための設定を行う nginxからphp-fpmに接続するための設定 確認

  • php-fpmの起動と有効化

    php-fpmを起動時に有効にし、その場で起動するsystemctl enable php-fpmsystemctl start php-fpm

  • php-fpmのインストール(PHP7.3)

    CentOS7ではデフォルトでPHP5系統が選択されるPHPのアプリの中にはすでに5系統の対応を打ち切っているものもあり、現時点では7系統を入れるのが妥当であるこれを実行することによって、yumでPHP7系統を選択することができるrpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpmPHP7.3のリポジトリをデフォルトで有効にするsed -i '/enable/s/0/1/' /etc/yum.repos.d/remi-php73.repophp-fpmとxdebugをインストールするyum -y install php-fpm php-xdebug

  • nginxでLets'sEncryptのアクセスだけhttpsにリダイレクトしない設定

    server { listen 80 default; location ^~ /.well-known/ { alias /usr/share/nginx/html/.well-known/; } location ~ ^(?!/\.well-known/) { rewrite ^ https://$host$request_uri? permanent; } }

  • VirtualHostの設定

    server設定でドメイン名とコンテンツを関連付けるファイルは一つにまとめてもかまわないし、server設定ごとに複数に分けることもできる今回は複数に分けて設定していく/etc/nginx/conf.d/hogehoge.confserver { listen 443 ssl http2; ssl_certificate /etc/letsencrypt/live/hogehoge/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hogehoge/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; server_name hogehoge; root /usr/share/nginx/html/;}/etc/nginx/conf.d/www.hogehoge.confserver { listen 443 ssl http2; ssl_certificate /etc/letsencrypt/live/hogehoge/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hogehoge/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; server_name www.hogehoge; root /usr/share/nginx/www/;} /etc/nginx/conf.d/www2.hogehoge.confserver { listen 443 ssl http2; ssl_certificate /etc/letsencrypt/live/hogehoge/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hogehoge/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; server_name www2.hogehoge; root /usr/share/nginx/www2/;}

  • 証明書の作成

    以下の3つ分の証明書を一つにまとめて作成する例hogehogewww.hogehogewww2.hogehoge-wはcertbotが確認用のファイルを置く場所-dは証明書を発行するドメイン名で複数記述すると、一つの証明書で複数に対応できる出力される証明書のデータは、最初に指定したドメイン名でフォルダが作成されるcertbot certonly --webroot -w /usr/share/nginx/html -d hogehoge -d www.hogehoge -d www2.hogehoge証明書の期限が近づくと、設定したメールアドレスに通知が送られてくるPlugins selected: Authenticator standalone, Installer NoneEnter email address (used for urgent renewal and security notices) (Enter 'c' tocancel): メールアドレスここは同意のaPlease read the Terms of Service athttps://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You mustagree in order to register with the ACME server athttps://acme-v02.api.letsencrypt.org/directory- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(A)gree/(C)ancel: a特に用はないのでnWould you be willing to share your email address with the Electronic FrontierFoundation, a founding partner of the Let's Encrypt project and the non-profitorganization that develops Certbot? We'd like to send you email about our workencrypting the web, EFF news, c

  • 5.Node.jsの特徴

    向いてない作業 向いてる作業 まとめ

  • トップページの内容変更

    vi /usr/share/nginx/html/index.html

  • 初期設定

    インストールと起動 設定ファイルなど 動作確認 トップページの内容変更

  • 動作確認

    ブラウザからURLを入力http://IP/結果

  • コンテンツ保存用のディレクトリを作成

    mkdir /usr/share/nginx/wwwmkdir /usr/share/nginx/www2

  • VirtualHost

    VirtualHostとはドメイン名によって、コンテンツを切り替える機能である 前項目のMyDNSの設定が終わっていることを前提に設定を行っていくVirtualHost用コンテンツを用意する nginxの設定 ブラウザで確認

  • 設定ファイルなど

    nginxの基本設定ファイル/etc/nginx/nginx.confserver設定に追加項目を入れる場所nginx.confを直接設定する必要が無ければ、こちらにファイルを設置する/etc/nginx/default.d/*.conf新たなserver設定を追加する場合は以下の場所にファイルを設置する/etc/nginx/conf.d/*.conf

  • インストールと起動

    yum -y install nginxsystemctl enable nginxsystemctl start nginx

  • nignxによるWebサーバの構築

    一昔前はWebサーバと言えばApacheだったが、軽量で高速に動作するサービスが求められnginxが利用されることが増えている ここではnginxの基本的な設定方法を紹介する

  • 自動通知

    cronで定期実行するため、以下のファイルを作成する/etc/cron.d/ddns.confSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root@reboot root sleep 5;curl -o /dev/null -s --user ID:PASS https://www.mydns.jp/login.html*/10 * * * * root curl -o /dev/null -s --user ID:PASS https://www.mydns.jp/login.html 起動時と10分ごとに通知を行う設定である有効にするには以下のコマンドを使うsystemctl reload crond

  • 通知コマンド

    サーバからIPアドレスを通知するためには以下のコマンドを使うcurl -o /dev/null -s --user ID:PASS https://www.mydns.jp/login.htmlもちろんIDとPASSはメールで受け取ったものと差し替えるMyDNS側のLOG INFOでIPv4 UPDATEという表示が入っていれば成功だIP登録情報にサーバのIPが表示されているはずだサーバ上で以下のコマンドを入力し正引きが可能か確認するdig ドメイン名これでIPアドレスが返ってくれば問題ないもし駄目なようなら以下のようにして再度コマンドを実行するnslookup ドメイン名 ns1.mydns.jpMyDNSのサーバに直接問い合わせている最初のコマンドが駄目でこれで通るようなら、駄目な情報がGCEのDNSサーバにキャッシュされてしまっているキャッシュが更新されるまで数分待つ必要がある

  • 書き込みアクセスの許可

    setfacl -R -m u:ユーザ名:rwx /usr/share/nginx/html

  • 確認

    WindowsからならWin+Rキーを押し\\アドレスという形でUNCパスを指定するwwwという共有フォルダがあるので、好きなようにファイルを編集できるようになっている

  • Samba用ユーザの作成

    smbpasswd -a ユーザ名

  • ファイアウオールに穴を開ける(GCEを使用している場合)

    環境に合わせて、445ポートに接続できるように設定するgcloud compute firewall-rules create allow-samba --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:445 --source-ranges=0.0.0.0/0

  • サービスの起動と有効化

    systemctl enable smbsystemctl start smb

arrow_drop_down

ブログリーダー」を活用して、空雲さんをフォローしませんか?

ハンドル名
空雲さん
ブログタイトル
空雲リファレンス
フォロー
空雲リファレンス

にほんブログ村 カテゴリー一覧

商用