DockerによるPhalcon(3.2.1)の開発環境構築(Ubuntu:16.04 + Nginx + MySQL)

パソコンシャットダウンしようとしたら間違って再起動しちゃって、もっかいシャットダウンしようとしたらユーザー選択画面で固まりやがった HDDアクセスランプは点いてるしどうしようかね
SBTのマルウェア騒ぎ 最後に、サーバにもEDRが入っていれば、当該ユーザーでなにをしているか即時確認ができたはず。 ただし、通常EDR製品ではread動作までは記録されないから、ネットワーク側でどのパスにアクセスしたかを確認する必要がある。 そうなるとネットワーク対策の質依存
スマートフォンは訳すと【賢い電話】。実質小さいパソコンなので、スマートミニパソコンなどの商品名でも良かったと思う人もいるだろう。しかし、一般的には電話は必須だが、PCは使わない人も多い。ガラケーでネットにアクセスするユーザーもいたハズ。フォン ⇒ 電話なんだ で、流通を作ったのだ
イナゴ 話題性の高いニュースなどに反応して、サーバーを倒すほど大量にアクセスしてくるユーザー群のこと。ネットイナゴとも呼ばれる。
エラーを直す、ユーザーデータにアクセスする、重大なアップデートを通知する時にはアラートは有効 #fincwwdc
忍者アクセス解析なら、ユーザーの閲覧環境を見える化! 訪問者が利用している、 ・OS(携帯電話の場合は機種名)と割合 ・ブラウザと割合 ・言語と割合 ・ドメイン(ISP)と割合 ・ディスプレイの解像度と色数の値と割合 ・ディスプレイの解像度と割合 ・ディスプレイのカラー数と割合
先生…やはり、想像通りです。サーバーに、生徒達のアクセス履歴が残ってました。登録ユーザー名簿には、妹の友達の名前もありました
〜FaceBookの特徴〜 ①日本のfacebookユーザー2700万人 ②数あるSNSの中でもユーザーの年齢層が高い facebookを活用することでアクセスを大量に集め 継続的に安定的な収入を見込める『facebookアフィリエイト』 気になった方はDM下さい(^^)
ラオスのVientianeからATOK for iOSのユーザー辞書登録の記事にアクセスあったw
ユーザーの興味や関心をもとに、ツイートなどの項目に「浮力」を設定して、アクセスするごとにそれに応じて情報の表示順や頻度を設定するとかできないの? サーバーの負担が大きくなるからダメなんかな
なんでそんなん分かるのかって聞かれるけど、サイトやってる時にユニークユーザー数十台だったころ、数百台だったころ、一万代だったころ、みたいなのを色々経験して、その中のどの時期にもアクセス解析とにらめっこしながら作品を作っていたからだよ!
【アクセス障害について】 本日下記の時間帯に、一部ユーザー様がアクセスしにくい状態がございました。 ◯障害内容 7月26日 3:05〜12:10 ※現在状況は改善しております。 ご不便とご迷惑をお掛けいたしましたこと、深くお詫び申し上げます。
アク禁 ⇒アク禁とはアクセス禁止(アクセス禁止処置・アクセス禁止処分)の略で、WEBサイトや掲示板の管理人、またはプロバイダーが、特定経路(特定IPアドレス、特定プロバイダー、特定国家)からのユーザーのアクセスを禁止する行為を意味する。
(自動)【中央アクセスが人気なわけ】 その③対策バッチリ!安心快適! 中央アクセスでは女性専用車両を導入しておりません!ただし、これは中央アクセスユーザー1200人に聞いたアンケートの結果!!しかも検挙率はNo.1の実績!
公開後、急速にユーザー数を増やし、2010年にサイトのアクセス数がGoogleを抜き話題になる。
ユーザーにとって"価値あるコンテンツ"を作ることで、検索エンジンに評価されて、特定のキーワードで上位表示できると、安定的なアクセスが集まるようになっていきます。
ニコニコ君とかいうやつホラーだろうけど、PCからニコニコ使うユーザー層は一切興味ないだろうし、キッズ層はほとんどスマホからアクセスするのにスマホ版にはニコニコ君出てこないし、そもそもキッズ層はYoutubeだろうし、何したいか分からないいつものニコニコだ
testも一緒にdeployしてしまって、いざという時にはユーザーにそこにアクセスさせるって面白い考え方
ユーザーのメールアドレスを名簿屋に売るようなことをするつもりはない。ただ一時、こういうことを思いついたことはある。学生が履歴書をアップロードし、ハーバード大学で求人したい企業に有料でアクセスさせるウェブサイトだ。
アメブロの大量水増しアクセス解析は、離れていってほしくないための策だろう。ユーザーが頭でわかっていたとしても、目に見える数字の与えるインパクトはそれだけデカイからだ。
そして、アクセスしてくるユーザーの大半は ゲームが好きな人はゲーム実況や情報の動画へ アニメや漫画が好きな人は関連する動画へと 自分の趣味であるオタクジャンルの 動画へアクセスしてきます。
ずっとdocomoユーザーで色んな登録・変更はPCからMydocomoにアクセスしているのだが、Mydocomoの画面が使いにくいたらありゃしない。どこがどう使いにくいか相手に説明しようとする度にイライラして消耗するほどの使いにくさ。
ラブサーチにアクセス ↓↓↓↓↓ 会員登録フォームにプロフィールを入力 ↓↓↓↓↓ ご登録メールアドレスに[申込確認メール]が届きます ↓↓↓↓↓ ご登録メールアドレスにユーザーIDとパスワードを発行します ↓↓↓↓↓ 18歳以上の確認を行います ↓ #無駄知識
ユーザーエージェント非通知ですか?そんなマナーの悪いアクセスにはもちろん403です!

ローカルにて、作業用ディレクトリを作成し、各種ファイルを生成/記述。各種ファイルにおいて、[ユーザー名]は任意のユーザー名に変更。

$ mkdir workdir && cd workdir
$ touch Dockerfile docker-compose.yml phalcon_sample_nginx.conf composer.json
Dockerfile
FROM ubuntu:16.04

RUN useradd -d /home/[ユーザー名] -m -s /bin/bash [ユーザー名]

ENV APP_ROOT /home/[ユーザー名]/www/

WORKDIR $APP_ROOT

RUN apt-get -y update && 
    apt-get -y install vim && 
    apt-get -y install git && 
    apt-get -y install nginx && 
    ln -s /home/[ユーザー名]/www/phalcon_sample_nginx.conf /etc/nginx/sites-enabled/ && 
    apt-get -y install -fpm -mysql && 
    echo "mysql-server mysql-server/root_password password pass" | debconf-set-selections && 
    echo "mysql-server mysql-server/root_password_again password pass" | debconf-set-selections && 
    apt-get -y install mysql-server && 
    apt-get -y install curl && 
    curl -sS https://getcomposer.org/installer |  && 
    mv composer.phar /usr/local/bin/composer && 
    curl -s https://packagecloud.io/install/repositories/phalcon/stable/script.deb.sh | bash && 
    apt-get -y install 7.0-phalcon

WORKDIR /home/[ユーザー名]/

USER [ユーザー名]

COPY composer.json ./
RUN composer install

WORKDIR $APP_ROOT

USER root

RUN ln -s /home/[ユーザー名]/vendor/phalcon/devtools/phalcon. /usr/bin/phalcon && 
    chmod ugo+x /usr/bin/phalcon

# bash から日本語入力できない症状への対処
RUN apt-get install -y language-pack-ja-base language-pack-ja
ENV LANG=ja_JP.UTF-8
docker-compose.yml
# mysql
db:
  image: mysql:5.7
  container_name: mysql_phalcon_sample
  environment:
    MYSQL_ROOT_PASSWORD: pass
  ports:
    - "3306:3306"
  volumes:
    - ./mysql:/etc/mysql/conf.d

# phalcon_sample
web:
  build: .
  container_name: phalcon_sample
  links:
    - db:mysql_phalcon_sample
  ports:
    - "8080:80"
  volumes:
    - ../workdir:/home/[ユーザー名]/www
  tty: true
phalcon_sample_nginx.conf
server {
    listen      80;
    server_name localhost;

    root /home/[ユーザー名]/www/phalcon_sample/public;
    index index.php index.html index.htm;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?_url=$uri&$args;
    }

    location ~ .php {
        fastcgi_pass  unix:/run/php/php7.0-fpm.sock;
        fastcgi_index /index.php;

        include fastcgi_params;
        fastcgi_split_path_info       ^(.+.php)(/.+)$;
        fastcgi_param PATH_INFO       $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /.ht {
        deny all;
    }
}
composer.json
{
    "require": {
        "phalcon/devtools": "dev-master"
    }
}

workdir 内に、MySQL 用の設定ファイル my.cnf を作成。

$ mkdir mysql && touch mysql/my.cnf
mysql/my.cnf
[client]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
innodb-file-format=barracuda
innodb_file_format_max=barracuda
innodb-file-per-table=1
innodb_large_prefix=1

今回 DB 管理ツールには、phpMyAdmin より高速かつ軽量でシンプルな Adminer を利用する。

へアクセスしてプログラム本体をダウンロード。
ダウンロードした adminer-x.x.x-mysql.php を先ほど作成した workdir ディレクトリへ移動しておく。

サービス(web、db)のビルドを実行。

$ docker-compose build

「ERROR: client and server don’t have same version」となる場合は、以下。

$ export COMPOSE_API_VERSION=auto
$ docker-compose build

コンテナを作成して起動。

$ docker-compose up -d

ここで、先ほど作成した mysql/my.cnf を編集。

mysql/my.cnf
[client]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
innodb-file-format=barracuda
innodb_file_format_max=barracuda
innodb-file-per-table=1
innodb_large_prefix=1
default-time-zone='Asia/Tokyo'     # これを追加

※ DB コンテナをビルドする前に default-time-zone=’Asia/Tokyo’ を記述してしまうと、DB コンテナ起動に失敗するため、このタイミングで記述する。

mysql/my.cnf の変更を反映させるため、コンテナを再起動する。

$ docker-compose stop
$ docker-compose start

※ ここで docker-compose restart としてしまうと変更は反映されない。必ず上記のように docker-compose stop → docker-compose start の順に実行する。

アプリケーションコンテナに接続。

$ docker exec -it phalcon_sample bash

アプリケーションコンテナにて Phalcon プロジェクトを作成。

# phalcon project phalcon_sample

cache ディレクトリのアクセス権を変更する。

# cd phalcon_smaple
# chmod -R 777 cache

php7.0-fpm、nginx を起動。

# service php7.0-fpm start
# service nginx start

ブラウザから「localhost:8080」へアクセス。「Congratulations!」が表示されれば OK。

Adminer を利用するため、adminer-x.x.x-mysql.php を移動してリネームする。

# mv ../adminer-x.x.x-mysql.php public/adminer.php

アプリケーションコンテナにて、環境変数を表示。

# env

MYSQL_PHALCON_SAMPLE_PORT_3306_TCP_ADDR の値を確認。ここでは、表示された値が「172.17.0.3」であったものとして進めます。「PHALCON_SAMPLE」の表示は適宜読み替えてください。

ブラウザから「localhost:8080/adminer.php」へアクセス。以下を入力してログイン。

入力項目 入力値
サーバー 172.17.0.3
ユーザ名 root
パスワード pass

「データベースを作成」をクリックし、データベース名: phalcon_sample、照合順序: utf8_general_ci として DB を作成。

最後に DB とアプリケーションの設定を更新します。

app/config/config/config.php を編集。

app/config/config/config.php
'database' => [
    'adapter'     => 'Mysql',
    'host'        => '172.17.0.3',     // 編集
    'username'    => 'root',
    'password'    => 'pass',     // 編集
    'dbname'      => 'phalcon_sample',     // 編集
    'charset'     => 'utf8',
],

baseUri の値も変更。

app/config/config/config.php
'baseUri'        => preg_replace('/public([/\\])index.php$/', '', '/'),

以上です。
次回はログイン機能を実装します。

[紹介元] PHPタグが付けられた新着投稿 – Qiita DockerによるPhalcon(3.2.1)の開発環境構築(Ubuntu:16.04 + Nginx + MySQL)

  • コメント

    1. 匿名希望
      2017/07/25(火) 00:06:59

      エラーを直す、ユーザーデータにアクセスする、重大なアップデートを通知する時にはアラートは有効 #fincwwdc

    2. 匿名希望
      2017/07/25(火) 00:06:59

      イナゴ
      話題性の高いニュースなどに反応して、サーバーを倒すほど大量にアクセスしてくるユーザー群のこと。ネットイナゴとも呼ばれる。

    3. 匿名希望
      2017/07/25(火) 00:06:59

      スマートフォンは訳すと【賢い電話】。実質小さいパソコンなので、スマートミニパソコンなどの商品名でも良かったと思う人もいるだろう。しかし、一般的には電話は必須だが、PCは使わない人も多い。ガラケーでネットにアクセスするユーザーもいたハズ。フォン ⇒ 電話なんだ で、流通を作ったのだ

    4. 匿名希望
      2017/07/25(火) 00:06:59

      SBTのマルウェア騒ぎ
      最後に、サーバにもEDRが入っていれば、当該ユーザーでなにをしているか即時確認ができたはず。
      ただし、通常EDR製品ではread動作までは記録されないから、ネットワーク側でどのパスにアクセスしたかを確認する必要がある。
      そうなるとネットワーク対策の質依存

    5. 匿名希望
      2017/07/25(火) 00:06:59

      パソコンシャットダウンしようとしたら間違って再起動しちゃって、もっかいシャットダウンしようとしたらユーザー選択画面で固まりやがった
      HDDアクセスランプは点いてるしどうしようかね

    記事に戻る

関連記事