Cordovaを用いてハイブリットアプリを開発をはじめた
ゴール
Cordovaを用いたハイブリットアプリの開発環境を整える
Cordovaとは?
- 一言でまとめると
- Apache Cordova is a platform for building native mobile applications using HTML, CSS and JavaScript
- About Apache Cordova™から要点を抜き出すと
- web technologies are used, and they are hosted in the app itself locally
- Cordova provides a set of uniform JavaScript libraries that can be invoked, with device-specific native backing code for those JavaScript libraries
- 歴史的には
下準備
- AndroidStudioをインストール
- JVMのインスール
- JVMがない場合、AndroidStudioを開いたときにインスールしてね!とメッセージが出るのでそこからインストールするのが早い。
- ADT Pluginをインストール
- AndroidStudioの初回起動で言われた通りに進めれば入る
- node.jsをインストール
- 確認
$ java -version java version "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode) $ node -v v0.10.25 $ git --version git version 2.3.2 (Apple Git-55)
- パーミッション変更
sudo chown -R $(whoami) /usr/local
Cordovaの準備
- Cordovaのインストール
- 以下コマンドを実行(git必要)
$ sudo npm install -g cordova
シンボリックリンクはここに貼られている感じ
/usr/local/bin/cordova ->/usr/local/lib/node_modules/cordova/bin/cordova
$ source ~/.bash_profile
確認は以下で
$ android -h Usage: android [global options] action [action options] Global options: -h --help : Help on a specific command.
$ adb version Android Debug Bridge version 1.0.32
プロジェクトを作成する
- git管理かのディレクトリで以下コマンドでcordovaプロジェクトを作成。
cordova create timer_demo com.nifty.timer_demo TimerDemo -d
「timer_demoディレクトリを作りその配下にcom.nifty.timer_demoというアプリ識別子をもつTimerDemoという名前のアプリのプロジェクトを作成する」という感じ。
- platformを追加する
$ cordova platform add android Adding android project... Creating Cordova project for the Android platform: Path: platforms/android Package: com.nifty.timer_demo Name: TimerDemo Activity: MainActivity Android target: android-22 Copying template files...
$ cordova platform add ios Adding ios project... iOS project created with cordova-ios@3.8.0 Installing "cordova-plugin-whitelist" for ios
実行してみる
$ cordova emulate android
$ cordova emulate ios ios-sim was not found. Please download, build and install version 3.0.0 or greater from https://github.com/phonegap/ios-sim into your path. Or 'npm install -g ios-sim' using node.js: http://nodejs.org Error: /Users/OKD/sandbox/ffa500.github.io/sandbox/timer_demo/platforms/ios/cordova/run: Command failed with exit code 2
エミュレーターがないよ!と言われるので言われた通りにインストールする。 せっかくnodeがあるので以下で。emulateを再実行すれば起動確認できる。
$ npm install -g ios-sim
エミュレーターで確認完了
Atom + Git + Monaca LocalKit + Monacaデバッガーでチーム開発を始める人へ
ゴール
Atom + Git + Monaca LocalKit + Monacaデバッガーで開発できる状態を整える
Atomを準備
Atomを利用するメリット
手順
- Atomエディタのインストール
- プラグインパッケージの追加
- Atom > Preferences を選択
- SettingsのInstallを選択して以下のパッケージをインストール
- file-icons
- ファイルの横にファイルアイコンをつけてくれる
- Term2
- ターミナルをatomエディタ内で開いてくれる。gitを使うときに便利だが、日本語が入力できないことが難点。途中で使わなくなるかも
- Script
- atom上でScriptを実行してくれる
- highlight Tips
- 全角スペースを◽︎で表示してくれる
- project-manager
- 開いているプロジェクトを保存して次回起動時に呼び出したりできる
- Japanese Wrap
- ウィンドウのサイズによって日本語の折り返しなどをよしなにしてくれる
- atom-html-preview
- file-icons
MonacaデバッガーとMonaca LocalKitを準備
手順
- Monaca LocalKitをインストール
- OSのバージョンによって開発者が不明となり開けないので環境設定>セキュリティとプライバシー>一般からダウンロードしたアプリケーションの実行を許可してあげる(体験版で30日しかフル機能を利用できないらしいが問題なさそう)
- リモートIDEからプロジェクトをインポート
- Monaca LocalKitを開くとプロジェクト一覧には何も表示されていない状態なので、
+ > インポート > クラウドIDEからインポート
を選択しサンプルプロジェクトをインポートする - プロジェクトを選択し、作業ディレクトリを指定して「インポート」[^1]
- Monaca LocalKitを開くとプロジェクト一覧には何も表示されていない状態なので、
- 実機(Monaca デバッガー)とペアリングをする
- iPnoneをPCと同じWifiに接続する
- Monaca デバッガーを起動する
- 「新しいコンピーターが見つかりました」のアラートビューが出るのでペアリングを選択
- ペアリング完了
- ファイル編集
- インポートしたローカルのプロジェクトを好きなエディタで開いて編集
- エディタ上で保存するとSyncしているMonaca デバッガーがリスタートされ即時実機に反映される
ペアリングできないとき
- Monaca デバッガーのスタートメニューを起動
- メニュー > ローカルコンピューターを選択
- 「コンピューターを手動追加する」を選択
- PCのローカルIPアドレス調べる
Gitを準備
Monacaのプロジェクトを作成
- MonacaLocalKitで
Command + n
でMonacaプロジェクト作成 - 作業ディレクトリをGitの準備で作成した配下に設定し、テンプレートは
Onsen UI Master-Detail
にする(Git管理下のrootディレクトリだと作成できなかった...)
参考
新米エンジニアが押させえておくべきデータベースのいろは
ゴール
- DBの種類と特徴を抑える
- 用途に応じてDBを考えられるようになる
データベースとデータベース管理システム
「データベース」とは
「複数の応用目的で共有を意図して組織的かつ永続的に格納されたデータ群」のことを指す。すこし崩すと、対象とする実世界の状態や構造を表現すべくデータを「体系的」に「組織化」したものがデータベース
「データベース管理システム(DBMS)」とは
データ群を管理し利用しやすくするためのソフトウェアをデータベース管理システム(Database management system,DBMS)と呼ぶ ぶっちゃけDBMSとかもDBに包含して使っていたりするがそっちの方が伝わるのでいいかなと
DBSの発端
DBMSとDBMSで管理されるデータベースを一体として捉えたものがデータベースシステム(DBS) 大量のデータを永続化する手段としてはOSより提供されているファイルシステムがあるが以下が問題点となりDBSが開発された模様
- データとアプリケーションの相互依存
- ファイルシステムだとデータの格納やアクセス方法をアプリケーションを意識しないといけない
- 整合性維持機能の欠如
- データの整合性を保つ制約を認識させる機能がない。アプリケーション任せ
- 不十分な機密保護
- ファイルのアクセス権限は付けられるが、そのファイルの中の一部のデータに権限管理することはできない
- 複数ユーザの同時アクセス
- 同時に書き込んだらおかしなことになる。回避する機能は提供されているが、アプリケーション任せ
- 不十分な障害時データ保護
- ファイルシステムは障害に対する対策が手薄
DBMSの種類
RDBMS(Relational DataBase Management System)
データベースをリレーション(関係)の集まりとしてモデル化して管理しており、ACID特性をもつ
- 特徴
NoSQL(Not only SQL)
- 非リレーショナルな分散データベースシステム。RDBMSじゃない方
- 読み書きが非常に高速で柔軟性がある
代表的なRDBMSとその特徴
MySQL
- 特徴
- 機能は多くないがその分シンプルで早い
- マルチユーザ対応でWebアプリケーショントとの親和性が高い
- マルチスレッド
- 多様な開発言語のAPIが用意されている
- ライセンス
- 非商用利用の場合無償
- 有償のEnterprise Serverも用意されている
PostgreSQL
BSDライセンスのORDBMS(オブジェクトリレーショナルデータベース管理システム)
Oracle Database
- 特徴
- 完全な行レベルの占有ロックが可能
- 読み取り一貫性が保証されている
- UNDO表領域を使って同時実行性とデータの一貫性を確保している
- ライセンス
- 有料(16万〜500万円くらい)
SQLite
- 特徴
その他RDBMS
NoSQLの種類
KVS(Key-Value sotre型)
キーと、格納したいデータを紐付け、キーを指定することでそれに対応したデータを格納/取得する。読み書きが非常に高速だが、複雑な検索処理には向いていない
- DBMS例
列指向型(テーブル指向型)
列データをファイルシステム上の連続した位置に格納することによって、大量の行に対する少数の列の集約処理や、同一の値をまとめるデータ圧縮などを効率的に行う。大量のデータを対象とした分析やデータマイニングなど適している
- DBMS例
ドキュメント指向型
XMLやJSONなどのように半構造化されたドキュメントデータの格納し、各ドキュメントに一意のキーを割り当てることで管理をする。スケーラビリティが高く、サーバを追加しやすい
- DBMS例
- MongoDB
- スキーマを持たない
- トランザクションやJOINはサポートしていないがほぼRDBMSと同等に使える
- 導入例:foursquare,bit.ly,sourceforge
- MongoDB
グラフ指向型
ノード、エッジ、プロパティから構成されるグラフ構造でデータを格納する。データ同士の複雑な関連性を表現できることに強みがある。頻繁に更新される大量の非構造化データを扱う場合に向いている
2015年8月度DBランキング
TOP10(出典:DB-Engines Ranking)
ここは月一回で更新されるのでウォッチしておくと良いかも
Rank | DBMS | Database Model | Score (Aug 2015) | DIFF(Jul 2015) |
---|---|---|---|---|
1. | Oracle | Relational DBMS | 1453.02 | -3.70 |
2. | MySQL | Relational DBMS | 1292.03 | +8.69 |
3. | Microsoft SQL Server | Relational DBMS | 1108.66 | +5.60 |
4. | MongoDB | Document store | 294.65 | +7.26 |
5. | PostgreSQL | Relational DBMS | 281.86 | +9.04 |
6. | DB2 | Relational DBMS | 201.23 | +3.12 |
7. | Microsoft Access | Relational DBMS | 144.20 | -0.10 |
8. | Cassandra | Wide column store | 113.99 | +1.28 |
9. | SQLite | Relational DBMS | 105.82 | -0.05 |
10. | Redis | Key-value store | 98.81 | +3.73 |
参考
サーバーを手に入れたらやるべき5つの初期設定
今回はAPIを作るために、新しくサーバーを立てたので、初めにやるべき初期設定を備忘録としてまとめます。 ミドルウェア等を入れる前のホントの初期設定です。
環境
- OS:CentOS 6.6 64bit
- メモリ:512MB
- CPU:1vCPU
1. rootユーザのパスワード設定
デフォルトはrootにパスワードが設定されていないので今後のためにパスワードを設定します。 passwdコマンドのあとに引数を付けなければrootユーザのパスワードを設定できます。
# passwd ユーザ root のパスワードを変更。 新しいパスワード:<ここにパスワード> 新しいパスワードを再入力してください:<ここに再度パスワード> passwd: 全ての認証トークンが正しく更新できました。
2. 新規ユーザの作成
ユーザ作成時のデフォルト設定確認
useraddコマンドに -Dオプションを付ける事でデフォルトの設定を確認できます。
# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
それぞれの設定項目の説明は以下の通り
設定 | 説明 |
---|---|
GROUP | グループIDを100に設定する。Red Hat系ディストリビューションの場合、 500 から順番に与えられる。 |
HOME | デフォルトのホームディレクトリの場所。この場合、「 /home/ユーザ名 」でホームディレクトリが作成される。 |
INACTIVE | パスワードが無効になった後、そのユーザのアカウントが無効になるまでの期限。「 -1 」は無期限 |
EXPIRE | ユーザアカウントの有効期限。値が無い場合は無期限を意味する |
SHELL | デフォルトのログインシェル |
SKEL | 新規ユーザーのホームディレクトリのテンプレート。この場合/etc/skel のコピーが新規ユーザのホームディレクトリに作成される |
ユーザを作成して確認する
# useradd <新規作成するユーザ名> # id -a <新規作成したユーザ名> uid=500(<新規作成したユーザ名>) gid=500(<新規作成したユーザ名>) 所属グループ=500(<新規作成したユーザ名>)
新規ユーザのパスワード設定
# passwd <新規作成したユーザ名> ユーザー <新規作成したユーザ名> のパスワードを変更。 新しいパスワード: 新しいパスワードを再入力してください: passwd: 全ての認証トークンが正しく更新できました。
wheelグループに追加
ユーザの作成が完了したので追加したユーザの権限を設定する
# usermod -G wheel <新規作成したユーザ名>
sudo許可設定
コレまでの設定で新規ユーザに切り替えて以下のコマンドを打つと
$ sudo ls We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for <新規作成したユーザ> : <新規作成したユーザのパスワード> <新規作成したユーザ> は sudoers ファイル内にありません。この事象は記録・報告されます。
ものすごくドキッとするメッセージが返却されます。メッセージ通り、新規に作成したユーザはsudoの権限を持っていません。 なので、sudo権限を付けてあげます。設定するときはvisudoコマンドを使用します。 vi sudo ではなく、visudoです。 visudoコマンドで編集すると保存時にSytaxCheckをしてくれるので、まさかの事態に陥らずに済みます。
# visudo ## Allows people in group wheel to run all commands # %wheel ALL=(ALL) ALL # ↑のコメントアウトを外す↓ %wheel ALL=(ALL) ALL
確認設定画完了したらもう一度sudoを使ってみると、ドキッとするメッセージは表示されません。
$ sudo ls
bin boot dev etc home lib lib64 lost+found media mnt opt proc root sbin selinux srv sys tmp usr var
coffee break①〜そもそもwheelってなに?
WheelグループはSUコマンドでアクセスできるUnixSystemへのコントロール権限をもつスーパーユーザグループのこと。[big wheel]で大物、勢力家、重鎮だとかの意味なのでそれが由来らしいです。新規ユーザを追加したらwheelグループに追加する事で『大物=su権限』を持つ”者”にできるわけですね。 ejje.weblio.jp
3. 公開鍵認証を使って新規ユーザでログインできるようにする
.sshディレクトリ作成
上記まででユーザの設定が完了したのでmacなどのクライアントから新規作成したユーザで接続できるように設定していきます。新規ユーザのホームディレクトリに移動します。デフォルトの設定で作成した場合パスは以下になります。
# pwd /home/<新規ユーザ名>
上記のディレクト配下に.sshディレクトリを作成してパーミッションを700に設定します。
# mkdir .ssh/ # chmod 700 .ssh/ # ls -la
公開鍵を配置する
私が利用しているクラウドサービスは初期接続がすでに鍵認証方式のみで、サーバー作成時に公開鍵が設置されます。 秘密鍵は手元にあるものを使い、サーバ側に配置している公開鍵を新規に作成したユーザが使えるように配置します。 サーバー側の公開鍵は以下のディレクトリに配置されていたので、それをコピーして所有者をrootから新規作成したユーザに変更します。
# cp ~/.ssh/authorized_keys /home/<新規作成したユーザ名>/.ssh/ # chown <新規作成したユーザ名> /home/<新規作成したユーザ名>/.ssh/
クライアント側(mac)から接続確認
.ssh/configに設定してもいいですし、コマンドラインで頑張るのもいいと思います。 自分は~/.ssh/configに書きます。
Host <ホスト名をお好きに (例):hogehoge > Hostname <サーバーのIPアドレスを記述> port 22 User <新規作成したユーザ> IdentityFile <秘密鍵のフルパス記載>
新規にターミナルを開いて新規に作成したユーザで接続できるか確認する
$ ssh hogehoge [<新規作成したユーザ名>@localhost ~]$
上記で接続完了。
4.セキュリティを強化する
やるべきこととしては、①rootでのログインを禁止する、②ポートを変更する だけです。パスワード認証はデフォルトで拒否しているので。(してない方は/etc/ssh/sshd_configのPasswordAuthentication noにしてあげてください。※公開鍵でログインできる事が前提です)
rootでのログインを禁止する
rootはユーザ名を必要とせずログインできるので秘密鍵が漏れた際に侵入される危険性が高まります。なので、rootでのログインを禁止します。設定は/etc/ssh/sshd_configに記載されいるので、バックアップを作成後、編集します。 クラウドサービスの場合、デフォルトの設定が弄られていることが多いですが、私の場合以下の様な設定になっていました。
# Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # ForceCommand cvs server PermitRootLogin without-password
以下に変更します。
# Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # ForceCommand cvs server PermitRootLogin no
設定を保存したら、デーモンを再起動させ、設定を反映させます。
# service sshd restart sshd を停止中: [ OK ] sshd を起動中: [ OK ]
問題なく再起動できたら、mac等の別ターミナルを開いて『rootでログイン出来ないこと』と『新規作成ユーザでログインできる』ことを確認します。この時サーバーに接続しているターミナルは閉じない方が良いです。新規ユーザで接続出来なかったらrootでもログイン出来ないので。
#以下は接続出来ない。 $ ssh root@hogehoge #以下は接続できる $ ssh hogehoge
PermitRootLoginの設定値について
設定 | 設定値 | 概要 |
---|---|---|
PermitRootLogin | no | rootでのログインを禁止する |
PermitRootLogin | yes | rootでのログインを許可する |
PermitRootLogin | without-password | パスワード認証以外でのrootでのログインを禁止する |
PermitRootLogin | forced-commands-only | コマンドオプションが指定されたときのみ、公開鍵認証によるrootでのログインを許可 |
coffee break②〜sshdや、httpdの"d"ってなに?
httpdは[HyperText Transfer Protocol Daemon]の略で、sshd[Secure Shell daemon]の略なので、DはDaemonのDですね。
デーモン (Daemon) は、UNIXなどのマルチタスクオペレーティングシステム (OS) においてバックグラウンドプロセスとして動作するプログラムを意味する。 ユーザーが直接対話的に制御するプログラムではない。 典型的なデーモンは名前の最後尾に "d" が付く。 例えば、syslogd はシステムログを扱うデーモン、sshd は外からのSSH接続要求を受け付けるデーモンである。
sshのPortを変更する
新規ユーザからの接続が確認できたら、最後にポート番号22番から適当なポートに変更し再起動します。 FWをクラウドサービスで提供されているものを使っている場合、Webコンソールから設定したポートを開ける必要があります。 もちろん、クライアント側の.ssh/configを設定していたらProtの部分を書き換えることもお忘れなく。
#vim /etc/ssh/sshd_config # Port 22 Port <適当なポート番号>
# service sshd restart sshd を停止中: [ OK ] sshd を起動中: [ OK ]
その他
FWの設定は必須です。必要なポートだけ開けましょう。
5. ホスト名を変更する
初期状態だとターミナルには以下のように表示されていると思います。
[<ユーザ名>@localhost <ディレクトリ>]
これだとターミナルを複数立ち上げて複数のサーバーで作業する際にどのサーバーで作業しているかわからなくなるので変更してあげます。
$ sudo vim /etc/sysconfig/network NETWORKING=yes #HOSTNAME=localhost.localdomain HOSTNAME=<好きなホスト名>.localdomain
編集が完了したらサーバーを再起動して設定を反映させます。
$ sudo reboot
1分位で再起動が完了するので、接続すると
[<ユーザ名>@<設定したホスト名> <ディレクトリ>]
となっていると思います。
以上で初期設定は完了です! こんなこと設定したほうが良いよ!などありましたら教えて下さい。
参考
Nginx+MySQL+PHP+WordpressをCentOS6.4にセットアップ
phpインストール
環境OS:CentOS 6.4 64bit Plain まずはすべてのファイルをアップデートしてPHPをインストールする
$yum update -y $yum -y install php-mysql php-common php php-cgi php-fpm php-gd php-mbstring
完了したらインストールされているかチェック
$ php -v PHP 5.3.3 (cli) (built: Aug 6 2014 05:54:27) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
PHP-FPM(FastCGI Process Manager)の設定
www.confを編集します
$cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.back $vim /etc/php-fpm.d/www.conf ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache Choosed to be able to access some dir as httpd ;user = apache //nginxに変更 user = nginx ; RPM: Keep a group allowed to write in log dir. ;group = apache //nginxに変更 group = nginx
mysqlをインストール
完了したらインストールされているか確認
$yum install mysql mysql-server -y $mysql --version mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1
mysqlデーモンを起動
$/etc/init.d/mysqld start MySQL データベースを初期化中: Installing MySQL system tables... OK Filling help tables... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h localhost.localdomain password 'new-password' Alternatively you can run: /usr/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. You can start the MySQL daemon with: cd /usr ; /usr/bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd /usr/mysql-test ; perl mysql-test-run.pl Please report any problems with the /usr/bin/mysqlbug script! [ OK ] mysqld を起動中: [ OK ]
問題がなければ自動起動設定
$chkconfig mysqld on
mysqlをセットアップ
設定を新規ファイルに書き出す
$ vim ~/work/wordpress.sql set password for root@localhost=password('ここにrootのパスワード'); insert into user set user="ここに新規ユーザ名", password=password("新規ユーザのパスワード"), host="localhost"; /* wprdpress用にwordpressというデータベースを作る。名前は自由だが、後で使うのでメモる create database wordpress; grant all on wordpress.* to ユーザ名; /* 上で宣言した新規ユーザにデータベースwordpressへの全権限を与える FLUSH PRIVILEGES;
msysqlに流し込む
$ mysql -u root -D mysql < work/wordpress.sql
設定が反映されているか確認する。 まず、rootでログインできる事を確認
$ mysql -p Enter password: 設定したrootのパスワード Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 5.1.73 Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> exit Bye
新規DBヘ新規ユーザでログインできる事を確認
$ mysql -u 新規ユーザ名 -D DB名 -p Enter password: 新規ユーザのパスワード Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 16 Server version: 5.1.73 Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> exit Bye
niginxをインストールする
$ rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm $ yum install nginx -y
nginxの設定を行う
ドキュメントルートを変更し、phpの設定も追加する
$ vim /etc/nginx/conf.d/default.conf location / { #root /usr/share/nginx/html; root /var/www/html; index index.html index.htm; } location ~ \.php$ { # root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; include fastcgi_params; }
php-fpmのデーモンを起動する
$ /etc/init.d/php-fpm start php-fpm を起動中: [ OK ] nginxのデーモンを起動する $ /etc/init.d/nginx start nginx を起動中: [ OK ] デーモンを起動し、自動起動設定 $ chkconfig php-fpm on $ chkconfig nginx on
適当にphpファイルをドキュメントルートに設置して動作確認。 問題なければWordPressをインストールをします。
WordPressをインストール
$ wget http://ja.wordpress.org/wordpress-3.9.2-ja.zip
変更したドキュメントルートへ移動して解凍する。 ドキュメントルートに余計なファイルがあると上手く行かないので削除してから行う方が良い。*1
$ mv wordpress-0.9.2-ja.zip /var/www/html/. $ cd /var/www/html/ $ unzip -qq wordpress-3.9.2-ja.zip $ mv wordpress/* . $ rm -fR wordpress
あとはブラウザからアクセスして画面上で設定すれば完了。
Laravel5をComposerでCentOS6.6にセットアップする
CentOS6.6にPHP+Apache+Laravel5の環境を構築したのでその手順をメモ。 サーバを立てた直後からの構築なので事前準備は何もしてません。全てデフォルトのままです。
PHP・Apache・Composerのインストール
パッケージのインストール
パッケージ管理は使わない方が今後のためかもしれませんが、スピード重視のため使いまくります。 以下のコマンドでApache,PHP,その他依存パッケージをガバっと入れます。
$yum install php
Composerをインストール
Laravelを導入するにあたり、PHPのパッケージ管理「Composer」を使います。 以下コマンドでインストール済みのPHPにComporserを紐付けてインストールします。
$curl -sS https://getcomposer.org/installer | php -- --install-dir=/bin
PHPのバージョンアップ
現時点でyumリポジトリに用意されているPHPは5.3系でした。 LaravelはPHP5.3系でも動くようですが、致命的な問題が発生してます的な警告がでるのでepelリポジトリとremiリポジトリを追加してアップデートします。
epelリポジトリの追加
$rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
remiリポジトリの追加
$rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
php5.5とのインストール
yum list で追加したリポジトリの中にあるPHPパッケージを確認します。 PHP5.5とその他パッケージをインストールします。 不要なもの、必要なものがその他あれば適宜置き換えて下さい。
$yum list --enablerepo=remi --enablerepo=remi-php55 | grep php $yum install --enablerepo=remi --enablerepo=remi-php55 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug
Laravel5の構築
laravel5のインストール
先ほどインストールしたComposerを使ってLaravel5をインストールします。 確認はlaravelコマンドで。以下のように表示されればOK。
$composer global require "laravel/installer=~1.1" $laravel Laravel Installer version 1.1 Usage: [options] command [arguments] Options: --help (-h) Display this help message --quiet (-q) Do not output any message --verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug --version (-V) Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output --no-interaction (-n) Do not ask any interactive question Available commands: help Displays help for a command list Lists commands new Create a new Laravel application. composer.phar create-project laravel/laravel laravel
laravelプロジェクトの作成
プロジェクトを作成するディレクトにcdしてlaravelプロジェクトを生成します。 その後、生成したプロジェクト配下のstorageディレクトリのパーミッションを変更します。/var/www/配下で作成した場合は/var/www/laravelProject/storageです。 laravelのstorageディレクトリはキャッシュ用ディレクトリなので読み書き権限の付与が必要らしいです。
$cd /var/www/ $laravel new laravelProject $chmod -R 777 laravelProject/storage/
Apacheの設定
ここまででLravel5のセットアップは完了です。 ブラウザでアクセスするとLravel5のディレクトリ構成が丸見え状態になりますが、Apacheの設定を変更すれば大丈夫です。
httpd.confの編集
ドキュメントルートを生成したlaravelProjectのpublicディレクトリにします。(httpd.confのバックアップはお忘れなく) その後、Apacheを再起動してブラウザで確認します。
$vim /etc/httpd/conf/httpd.conf # DocumentRootを以下のように書き換えます。 DocumentRoot "/var/www/laravelProject/public" $service httpd restart
以下の画面が表示されればLaravel5のセットアップ完了です
ついでにセキュリティ強化
現状のままだとHTTPHeaderにApacheのバージョンやPHP情報などが丸見えです。 「バージョンがユーザから見える」=「脆弱性がまるわかり」ということなので隠します。
PHP情報を隠す
$vim /etc/php.ini #expose_php = On #↑を下記のように書き換え expose_php = Off
Apacheのバージョン情報を隠す
$vim /etc/httpd/conf/httpd.conf # ServerTokens OS #↑を下記のように書き換え ServerTokens ProductOnly
Apacheを再起動して確認
再起動がすんだらブラウザで確認します。 HTTPHeaderが以下のようになっていると思います。X-Powered-ByとServerの部分が変更されていればOKです。
<変更前>
Cache-Control:no-cache Connection:close Content-Length:791 Content-Type:text/html; charset=UTF-8 Server:Apache/2.2.15 (CentOS) X-Powered-By:PHP/5.5.21
<変更後>
Cache-Control:no-cache Connection:close Content-Length:805 Content-Type:text/html; charset=UTF-8 Server:Apache
以上で完了です。 何か間違っているところなどありましたら教えてください。