とりあえずPHPでHelloWorld

やっと環境ができたので、

プログラムで最初にやるのはHelloWorldの表示させることでしょうか

<?php
echo "HelloWorld";
?>

まあ、表示するだけなら上ので終わりなんですよね


なので練習問題的なのを探してそれをやってみました

<?php
/**
 *
 * ループでHello World!5回表示する
 *
 * http://vipprog.net/wiki/exercise.html#eb2c4338
 *
 */
for ($i=0; $i<5; $i++) {
    echo "HelloWorld!".nl2br("\n");
}

?>

classを使うとこんな感じ?

<?php
/**
 *
 * ループでHello World!5回表示する
 *
 * http://vipprog.net/wiki/exercise.html#eb2c4338
 *
 */
class HelloWorldObj {
    private $count = 0;
    private $text = "HelloWorld!";

    public function getText() {
        return $this->text;
    }

    public function setCount($count) {
        $this->count = $count;
    }

    public function loopEcho() {
        for ($i=0; $i<$this->count; $i++) {
            echo $this->getText().nl2br("\n");
        }
    }
}
$HelloWorld = new HelloWorldObj();
$HelloWorld->setCount(5);
$HelloWorld->loopEcho();
?>

次は順番で行くとfizzbuzzかな

あとnl2brがnewline to breakって意味だってわかった

Vagrantの共有フォルダで403Forbiddenエラーがでる

Vagrantの共有フォルダをhttpdのDocumentRootとして扱う

これならWindows上でファイル編集できるからやりやすそうと思ってVagrantfileを編集してみた

config.vm.synced_folder "../data/var/www/html", "/var/www/html"

これで/html/index.htmlとか作って表示をさせたかった

アクセスしてみると403エラー

アクセスしてみると次の403エラーで表示できなかった

Forbidden
You don't have permission to access /index.html on this server.

表示させるには?

SELinuxを無効にすればとりあえずは表示するようになった

SELinuxの操作

SELinuxの確認

# getenforce
Enforcing
enforcing
SELinux機能,アクセス制限が有効
permissive
SELinuxは警告を出力、アクセス制限は無効
disabled
SELinux機能、アクセス制限がが無効

SELinuxを一時的に有効、無効にする

SELinuxを一時的に無効にする

# setenforce 0

SELinuxを一時的に有効にする

# setenforce 1

上の設定はサーバー再起動すると元に戻る

SELinuxの設定

サーバーを再起動させても設定を保持したい場合は設定ファイルを変更しないといけない

;; 設定ファイルの場所
# vi /etc/selinux/config

でファイルを開いたあとSELINUX=***の箇所を変更する

;; 有効
SELINUX=enforcing
;; 無効
SELINUX=disabled

変更したあとサーバーを再起動させる

ps

SELinuxを有効のまま表示させる方法は結局わからなかった

Vagrant1.9.1でprivate_networkを設定しても有効にならない現象

Vagrantの記事をみると当たり前のようにprivate_networkの設定をやってます。

私の記事では設定は飛ばしてました。

それは、設定ができなかったから・・・

過去記事から延々と探しても探しても

config.vm.network “private_network”, ip: “192.168.33.10” これでOK

としか書いてなくて、どうししたらええんや (ノ`Д´)ノ.:・┻┻)`з゜)・:゙;

このエントリーはprivate_networkの設定までのメモです。

Vagrant1.9.1でprivate_networkを設定しても有効にならない現象

Vagrantfileのprivate_networkを設定しても指定したIPで接続できない

#Vagrantfileの変更箇所
config.vm.network "private_network", ip: "192.168.33.10"

CentOSに接続してIPを確認してもVagrantfileで設定したIPがない

[vagrant@localhost ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:22:5b:53 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
       valid_lft 86390sec preferred_lft 86390sec
    inet6 fe80::5054:ff:fe22:5b53/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 08:00:27:05:e3:07 brd ff:ff:ff:ff:ff:ff

次のコマンドでVagrantfileのprivate_networkが有効になる

[vagrant@localhost ~]$systemctl restart network

有効になってるか確認 private_networkで指定したIPが表示されてればつながるはず

[vagrant@localhost ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:22:5b:53 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
       valid_lft 86387sec preferred_lft 86387sec
    inet6 fe80::5054:ff:fe22:5b53/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:05:e3:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.33.10/24 brd 192.168.33.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe05:e307/64 scope link
       valid_lft forever preferred_lft forevre

原因

Vagrant1.9.1でのバグっぽい

https://github.com/mitchellh/vagrant/issues/8096

対応

下のどれかでしのぐ

  • ログインしたあとコマンドでsystemctl restart networkする
  • Vagrantfileに
    config.vm.provision "shell", inline: "systemctl restart network.service", run: "always"
    を追加する
  • 1.9.2がでるまで1.9.0を使う

ですかねー

はてなブログにGoogleアナリティクスを設定する

ブログやってる人はほぼ設定してるとおもうGoogleアナリティクス

ブログ開始して一ヶ月たったけど設定してませんでした

なので、Googleアナリティクスを設定までのメモです

googleアナリティクスを登録する

1. googleアカウントを作る

googleアカウントは作成済みとしてすすむ

2. googleアナリティクスを登録する

https://analytics.google.com/

にアクセスして作ったgoogleアカウントでログインします。

ログインしたら「お申し込み」を選択します

f:id:nyan4:20170203195545p:plain

次に

を設定して「トラッキングIDを取得」を選択します。

f:id:nyan4:20170203195737p:plain

次の画面に移ったら「UA-******」がトラッキングIDになります。

f:id:nyan4:20170203195815p:plain

wordpressとかの場合はそのしたのトラッキングコードを使うようですが

はてなブログなトラッキングIDを設定するだけでいいみたいです

はてなブログgoogleアナリティクスを設定する

はてなブログの管理画面に移動して

「設定」ー>「詳細設定」に移動して下にスクロールすると 「解析ツール googleAnalytics埋め込み」があるのでそこにトラッキングIDを設定すれば完了

f:id:nyan4:20170203195828p:plain

難しそうだなーって、さぼってましたが結構簡単にできました

CentOSにPHPをいれる

気づいたら一週間近く立ってたよ・・・

このエントリーはCentOSPHPをインストールするメモです

PHPをインストールする

PHPを使えるようにするためにPHPをインストールします

コマンドは次になります

yum -y install php

インストールされてか確認

[vagrant@localhost ~]$ php -v
PHP 5.4.16 (cli) (built: Nov  6 2016 00:29:02)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

インストールされました。

5.4.xでいいという人はこれでインストールは完了です

だけど最新は5.6.x、7.xで新しいのを使いたいって場合は追加手順が必要になります

yumリポジトリを追加する

EPELとRemiリポジトリを追加します

PHP7.xインストールするのに必要なのはremiリポジトリだからepel必要ないじゃんって飛ばしてやったら失敗した

remi入れるのにepelが必要ってことだった

なのでepelをいれてからremiをいれます

# epelのインストール
yum -y install epel-release
# remiのインストール
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

PHPがインストール済みなら一旦けしてインストールし直す

次のコマンドで古いPHP関連のものを全部けします

# 古いPHP関連を削除
yum remove php-*
# phpのインストール
yum -y install --enablerepo=remi,remi-php70 php

必要な機能があるなら追加で php-devel php-mbstring php-pdo php-gd

念のため確認

[vagrant@localhost ~]$ php -v
PHP 7.0.15 (cli) (built: Jan 17 2017 17:10:58) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

7.0.15がインストールされました

ページを表示させる

確認ページのファイルを作ります

cd /var/www/html/
vi phpinfo.php
<?php
phpinfo();
?>

とhtml内にphpinfo.phpファイルを作り

内容をphpinfo();を呼び出す処理を書いてそれを表示するもの

httpdを再起動させます。

systemclt restart httpd

127.0.0.1:8080/phpinfo.phpにアクセスします

php情報が表示されたら成功です

f:id:nyan4:20170202210119p:plain

CentOSにhttpdを入れてテストページを表示する

Vagrantから動かしたCentOShttpdをいれてテストページを表示するまでのメモです

Vagrantfileの編集

まずVagrantfileを編集します

次の行のコメント(#)をはずします

はずしたらvagrant upで起動させます

# config.vm.network "forwarded_port", guest: 80, host: 8080
↓
config.vm.network "forwarded_port", guest: 80, host: 8080

httpdのインストール

次のコマンドでhttpdをインストールします

Completeと表示されればインストールは完了です

sudo yum -y install httpd

httpdの起動

インストールしたhttpdを起動します

systemctl start httpd.service

httpdの 停止

systemctl stop httpd.service

httpdの状態の確認

Active: active (running) が表示されれば動いてる状態です

systemctl status httpd.service

httpd自動起動の設定

必要ならCentOSを起動させたのと同時にhttpdが起動するようにします。

systemctl enable httpd.service

httpd自動起動の設定の確認

STATEがenabledなら自動起動有効、disabledなら自動起動無効、staticなら単体では有効/無効にできないものになります

enableになっていれば自動起動が有効になってます

systemctl list-unit-files | grep httpd

テストページの確認

ゲスト(CentOS)のhttpdを起動したあとホスト(winsows)のブラウザから次にアクセスします

127.0.0.1:8080

テストページが表示されれば成功です

f:id:nyan4:20170123182835p:plain


次はPHP入れて動かすまでやりたいです

TeraTermのマクロを使ってログインする

前回、TeraTermを使ってCentOSにログインできるところまでやりました

nyan4.hatenablog.com

ただ、毎回ユーザー名と秘密鍵を指定するのは手間です

なので簡単にする方法を調べてみました。

TeraTermのマクロを使う

TeraTermにはTeraTerm用マクロ(TTPMACRO.exe)があります

これでオートログインを実現することができます

やることは

  1. 拡張子ttlのファイルを作成します
  2. 作成したファイルを編集します
拡張子ttlのファイルを作成します

新規作成からテキストファイルを作り拡張子を.ttlにします

作成したファイルの編集します 作成したファイルを次のように書き換えます
;; ユーザー名
username = 'vagrant'

;; 秘密鍵
keyfile = '<privaet_keyの場所>'

;; ホスト名
hostname = '127.0.0.1'

;; パスワード
password = ''
msg = hostname strconcat msg ':2222 /ssh2 /auth=publickey /user=' strconcat msg username strconcat msg ' /keyfile=' strconcat msg keyfile

connect msg

コピペで秘密鍵の箇所だけ変更でよいはずです

細かな変更があるとしたら

  • ユーザー名
  • 秘密鍵のパス
  • ホスト名
  • パスワード
  • ポート番号

あたりでしょうか

編集したあと.ttlファイルをTTPMACR.exeに関連付けをすれば完了です

デフォルトのインストール場所は(私が使ってるPCはwindows8です)

C:\Program Files (x86)\teraterm

ログインは.ttlファイルをダブルクリックでいけます