2012年04月30日
講義057日目
------------------------------1H------------------------------
★VMware
●OSの消し方
・ユーザのドキュメントにあるMy Virtual Machinesフォルダ内の目的のOS名の付いたフォルダを削除する
・VMware
●時間の同期
・自動同期の設定
[root@localhost ~]# ls /var
ntpフォルダがあるか確認
・なければ作る
[root@localhost ~]# mkdir /var/ntp
・手動で同期
[root@localhost ~]# /usr/sbin/ntpdate ntp.jst.mfeed.ad.jp
30 Apr 10:28:53 ntpdate[6260]: step time server 210.173.160.57 offset 362134.230662 sec
[root@localhost ~]# date
2012年 4月 30日 月曜日 10:29:00 JST
・[root@localhost ~]# vi /var/ntp/ntpdata.sh
#!/bin/sh
/usr/sbin/ntpdata ntp.jst.mfeed.ad.jp > /dev/null
> /dev/null は実行結果を画面に出さずに消す命令をリダイレクトしてる
・[root@localhost ~]# crontab -l
定期的に実行させる -lでcronのリストを表示
#*/1 * * * * /bin/bash /home/nishi/datemake.sh
・[root@localhost ~]# crontab -e
viで開かれるので
*/5 * * * * /var/ntp/ntpdate.sh
の記述を追加
5分ごと 毎時 毎日 毎月 毎曜日「/var/ntp/ntpdate.sh」を動かすと言う意味
VMの性質上5分ごとに時間あわせをしてる、普通のサーバは一日一回とかでもいいんじゃね?的な
・ファイル名を間違えたらmvコマンドで書き換える
[root@localhost ~]# ls -l /var/ntp
合計 4
-rw-r--r-- 1 root root 60 4月 30 10:42 ntpdata.sh
[root@localhost ~]# mv /var/ntp/ntpdata.sh /var/ntp/ntpdate.sh
・[root@localhost ~]# chmod 700 /var/ntp/ntpdate.sh
書き込み権限を変更
・[root@localhost ~]# view /var/spool/mail/root
You have mail in /var/spool/mail/root
メールを見ることができる
:qで抜ける
------------------------------2H------------------------------
★VMware
●phpmyadminをインストール
・FFFTPでサーバへ移動する
zipファイルをドラック&ドロップ
・ユーザでサーバにアクセス
・[nishi@localhost ~]$ unzip phpMyAdmin-3.5.0-all-languages.zip
unzipコマンドで解凍する
・[nishi@localhost ~]$ mv phpMyAdmin-3.5.0-all-languages phpmyadmin
短い名前にリネームする
・
vhostに登録
・8yy
8行コピー(ヤンク)する
・p
ペーストされる
・phpmyadmin用に書き換える
<VirtualHost *:80>
ServerName phpmyadmin.com
DocumentRoot /home/nishi/phpmyadmin
<Directory "/home/nishi/phpmyadmin">
AllowOverride All
Options -Includes -ExecCGI
</Directory>
・hostsファイルの書き換え
SwitchHostでphpmyadmin.comを作成
・[root@localhost ~]# /etc/init.d/httpd restart
再起動
httpd を停止中: [ OK ]
httpd を起動中:
アパッチを再起動させた
●eclipseの再設定の方法
リモート接続のエクスプローラで該当の接続を右クリックして、
「パスワードのクリア」で再度ID/passが入力できる
プロパティから接続先IPアドレスの変更ができる
root内のファイルをいじるのは危険なのでマイ・ホームを使う
------------------------------3H------------------------------
★symfony
●symfonyコマンド
基本symfonyコマンドは下にsymfonyで作ったフォルダが存在するフォルダに移動してで実行する
・symfony cc
キャッシュのクリアを行う。設置ファイル変更後によく実施する
・symfony fix-perms
プロジェクト下のアクセス制限を正常にする
●symfonyプロジェクトを作成
・外部からのアクセスを受け取るディレクトリ
プロジェクト名/web
symfonyでは上記の配下がURLでのルートパスになる
そのため、vhostのDocumentoRoot等はwebを指定する
・追加する
<VirtualHost *:80>
ServerName sftest.com
DocumentRoot /home/nishi/sftest/web
<Directory "/home/nishi/sftest/web">
AllowOverride All
Options -Includes -ExecCGI
</Directory>
</VirtualHost>
・[root@localhost ~]# vi /etc/httpd/conf.d/httpd-vhost.conf
[root@localhost ~]# /etc/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]
・SwitchHostを編集する
sftest.comを登録する
------------------------------4H------------------------------
★symfony
●アプリケーションを作成
・symfony init-app front
アプリケーションを作成するsymfonyコマンド
frontアプリケーションを作成する
アプリケーション名は任意で変えられるが、一番最初に作成するアプリケーションはfrontにしておくと良い
●モジュールを作成
・symfony init-module front default
frontアプリケーション下にdefaultモジュールを作成する
モジュール名も任意に変えられるが、
アプリケーション下に最初に作成するモジュールはdefaultが良い
●symfonyの構成を作成する基本的な流れ
・symfony init-pro
プロジェクトを作る
・symfony init-app front
アプリケーションを作る
・symfony init-mod front default
モジュールを作る
●indexSuccess.php
/apps/front/modules/default/templates/indexSuccess.php
「templates」ディレクトリの下のファイルはView用
htmlのタグや文言が書かれる
●actions/actions.class.php
・「actions/actions.class.php」には
テンプレートに渡すデータやロジックが書かれる
smartyでのindex.phpのような場所になる
class defaultActions extends sfActions
{
/**
* Executes index action
*
*/
public function executeIndex()
{
return sfView::SUCCESS; ←追加
//$this->forward('default', 'module'); ←コメントアウト
}
}
●inputFormSuccess.phpの作成
・actions/actions.class.phpに追加
public function executeInputForm()
{
return sfView::SUCCESS;
}
・/templates/にinputFormSuccess.phpを作成
何か記述してみて、http://sftest.com/default/inputForm/で表示してみるテスト
●executeIndex メソッド、およびindexSuccess.phpには、トップp-時の情報が書かれるのが基本
●アクション
executeIndex:indexアクション
executeInputForm:inputFormアクション
sftestプロジェクトのトップページは
「frontアプリケーションのdefaultモジュールのindexアクション」です
------------------------------5H------------------------------
★symfony
●テンプレート側へのデータのアサイン
$this->変数名 でアサインし。テンプレート側では$変数名で使える
●GETやPOSTで送られてきたデータを受け取るには
仮に「id」という添え字が付けられたデータを受け取りたいなら
$hoge = $this->getRequestParameter("id");
・複数の値を取得したい場合は/で区切って表示
今までのGETでの渡し方
?id=あああ&name=いいい
symfonyでのPOST、GETの渡し方
id/あああ/name/いいい
echo $this->getRequestParameter("id");
echo $this->getRequestParameter("name");
●ページのソースを見てみる
・layout.php
metaタグやbodyタグ作ってくれているファイル
-----------------------------memo------------------------------
2012年4月30日月曜日
2012年4月27日金曜日
2012年04月26日 講義056日目
2012年04月26日
講義056日目
------------------------------1H------------------------------
★サーバ設定の復習
●SELinux
・firewallの設定
ポートを空けたりとかする
●色々とインストールする
・yumコマンド
インストールするためのコマンド
・ランレベルの設定
Linuxの動作モード
動作モードによって起動されるプログラムを設定する。基本2-5
・service --status-all
実行中のプログラムを全部表示させる
httpdとmysqldとvsftpdが動いている事を確認
・文字コードの設定
・symfonyのインストール
●NTP(Network Time Protocol)
・cron登録用のシェルを作成
・ファイル権限設定
・自動起動設定
●シェルスクリプト
サーバを自動で動かしたい時に書いておくもの
------------------------------2H------------------------------
★サーバ設定の復習
------------------------------3H------------------------------
★サーバにPHPで作ったwebサイトを移植する
●PHPファイル
・BBSをzipで圧縮
・FFFTPで圧縮したBBS.zipをサーバに上げる
●mysqlファイル
・コマンドプロンプトでデータベース.sqlをローカルにコピーする
・FFFTPでDBごとサーバに上げる
------------------------------4H------------------------------
★サーバにPHPで作ったwebサイトを移植する
●PHPファイルの解凍
・unzip bbs.zip
zipファイルを解凍する
・mysql -u ユーザ名 -p DB名 < ファイル名.sql
mysqlにDBをインポートする
●eclipseでリモート接続
eclipseのリモートシステムエクスプローラを使い、PHPファイルを編集する
------------------------------5H------------------------------
★サーバ上のPHPファイルを編集する
●修正
・localhostにとばされる部分をブラウザに紐付けたサーバ名に変更する
------------------------------6H------------------------------
★移行デバック
●ini_set("display_errors","On");
でエラーを出すようにしてデバック
★symfonyの準備
[nishi@localhost ~]$ mkdir sftest
[nishi@localhost sftest]$ symfony -V
symfony version 1.0.20
[nishi@localhost sftest]$ symfony init-project sftest
>> dir+ /home/nishi/sftest/plugins
>> dir+ /home/nishi/sftest/apps
>> dir+ /home/nishi/sftest/config
>> file+ /home/nishi/sftest/config/properties.ini
>> file+ /home/nishi/sftest/config/schema.yml
>> file+ /home/nishi/sftest/config/config.php
>> file+ /home/nishi/sftest/config/propel.ini
>> file+ /home/nishi/sftest/config/databases.yml
>> file+ /home/nishi/sftest/config/rsync_exclude.txt
>> dir+ /home/nishi/sftest/batch
>> dir+ /home/nishi/sftest/web
>> dir+ /home/nishi/sftest/web/uploads
>> dir+ /home/nishi/sftest/web/uploads/assets
>> file+ /home/nishi/sftest/web/.htaccess
>> dir+ /home/nishi/sftest/web/js
>> dir+ /home/nishi/sftest/web/css
>> file+ /home/nishi/sftest/web/css/main.css
>> dir+ /home/nishi/sftest/web/images
>> file+ /home/nishi/sftest/web/robots.txt
>> file+ /home/nishi/sftest/symfony
>> dir+ /home/nishi/sftest/cache
>> dir+ /home/nishi/sftest/data
>> dir+ /home/nishi/sftest/data/model
>> dir+ /home/nishi/sftest/data/sql
>> dir+ /home/nishi/sftest/lib
>> dir+ /home/nishi/sftest/lib/model
>> dir+ /home/nishi/sftest/doc
>> dir+ /home/nishi/sftest/log
>> dir+ /home/nishi/sftest/test
>> dir+ /home/nishi/sftest/test/bootstrap
>> file+ /home/nishi/sftest/test/bootstrap/unit.php
>> file+ /home/nishi/sftest/test/bootstrap/functional.php
>> dir+ /home/nishi/sftest/test/unit
>> dir+ /home/nishi/sftest/test/functional
>> tokens /home/nishi/sftest/config/properties.ini
>> tokens /home/nishi/sftest/config/propel.ini
>> tokens /home/nishi/sftest/config/propel.ini
>> tokens /home/nishi/sftest/config/config.php
>> chmod 777 /home/nishi/sftest/cache
>> chmod 777 /home/nishi/sftest/log
>> chmod 777 /home/nishi/sftest/web/uploads
>> chmod 777 /home/nishi/sftest/symfony
>> chmod 777 web/uploads/assets
-----------------------------memo------------------------------
講義056日目
------------------------------1H------------------------------
★サーバ設定の復習
●SELinux
・firewallの設定
ポートを空けたりとかする
●色々とインストールする
・yumコマンド
インストールするためのコマンド
・ランレベルの設定
Linuxの動作モード
動作モードによって起動されるプログラムを設定する。基本2-5
・service --status-all
実行中のプログラムを全部表示させる
httpdとmysqldとvsftpdが動いている事を確認
・文字コードの設定
・symfonyのインストール
●NTP(Network Time Protocol)
・cron登録用のシェルを作成
・ファイル権限設定
・自動起動設定
●シェルスクリプト
サーバを自動で動かしたい時に書いておくもの
------------------------------2H------------------------------
★サーバ設定の復習
------------------------------3H------------------------------
★サーバにPHPで作ったwebサイトを移植する
●PHPファイル
・BBSをzipで圧縮
・FFFTPで圧縮したBBS.zipをサーバに上げる
●mysqlファイル
・コマンドプロンプトでデータベース.sqlをローカルにコピーする
・FFFTPでDBごとサーバに上げる
------------------------------4H------------------------------
★サーバにPHPで作ったwebサイトを移植する
●PHPファイルの解凍
・unzip bbs.zip
zipファイルを解凍する
・mysql -u ユーザ名 -p DB名 < ファイル名.sql
mysqlにDBをインポートする
●eclipseでリモート接続
eclipseのリモートシステムエクスプローラを使い、PHPファイルを編集する
------------------------------5H------------------------------
★サーバ上のPHPファイルを編集する
●修正
・localhostにとばされる部分をブラウザに紐付けたサーバ名に変更する
------------------------------6H------------------------------
★移行デバック
●ini_set("display_errors","On");
でエラーを出すようにしてデバック
★symfonyの準備
[nishi@localhost ~]$ mkdir sftest
[nishi@localhost sftest]$ symfony -V
symfony version 1.0.20
[nishi@localhost sftest]$ symfony init-project sftest
>> dir+ /home/nishi/sftest/plugins
>> dir+ /home/nishi/sftest/apps
>> dir+ /home/nishi/sftest/config
>> file+ /home/nishi/sftest/config/properties.ini
>> file+ /home/nishi/sftest/config/schema.yml
>> file+ /home/nishi/sftest/config/config.php
>> file+ /home/nishi/sftest/config/propel.ini
>> file+ /home/nishi/sftest/config/databases.yml
>> file+ /home/nishi/sftest/config/rsync_exclude.txt
>> dir+ /home/nishi/sftest/batch
>> dir+ /home/nishi/sftest/web
>> dir+ /home/nishi/sftest/web/uploads
>> dir+ /home/nishi/sftest/web/uploads/assets
>> file+ /home/nishi/sftest/web/.htaccess
>> dir+ /home/nishi/sftest/web/js
>> dir+ /home/nishi/sftest/web/css
>> file+ /home/nishi/sftest/web/css/main.css
>> dir+ /home/nishi/sftest/web/images
>> file+ /home/nishi/sftest/web/robots.txt
>> file+ /home/nishi/sftest/symfony
>> dir+ /home/nishi/sftest/cache
>> dir+ /home/nishi/sftest/data
>> dir+ /home/nishi/sftest/data/model
>> dir+ /home/nishi/sftest/data/sql
>> dir+ /home/nishi/sftest/lib
>> dir+ /home/nishi/sftest/lib/model
>> dir+ /home/nishi/sftest/doc
>> dir+ /home/nishi/sftest/log
>> dir+ /home/nishi/sftest/test
>> dir+ /home/nishi/sftest/test/bootstrap
>> file+ /home/nishi/sftest/test/bootstrap/unit.php
>> file+ /home/nishi/sftest/test/bootstrap/functional.php
>> dir+ /home/nishi/sftest/test/unit
>> dir+ /home/nishi/sftest/test/functional
>> tokens /home/nishi/sftest/config/properties.ini
>> tokens /home/nishi/sftest/config/propel.ini
>> tokens /home/nishi/sftest/config/propel.ini
>> tokens /home/nishi/sftest/config/config.php
>> chmod 777 /home/nishi/sftest/cache
>> chmod 777 /home/nishi/sftest/log
>> chmod 777 /home/nishi/sftest/web/uploads
>> chmod 777 /home/nishi/sftest/symfony
>> chmod 777 web/uploads/assets
-----------------------------memo------------------------------
2012年4月25日水曜日
2012年04月25日 講義055日目
2012年04月25日
講義055日目
------------------------------1H------------------------------
★Firewallの設定
●最初に設定
・iptables -P INPUT ACCEPT
外部からのアクセスを許可
・iptables -P FORWARD DROP
次にデータを渡す
・iptables -P OUTPUT ACCEPT
外部にデータを渡す
・iptables -F
上のコマンドiptablesのルールの設定を反映させるためのコマンド
●icmp(ping) と自端末からの入力を許可
・iptables -A INPUT -p icmp -j ACCEPT
・iptables -A INPUT -i lo -j ACCEPT
●Web、FTP、POP、smtp による接続を許可
・iptables -A INPUT -p tcp --dport 80 -j ACCEPT
・iptables -A INPUT -p tcp --dport 21 -j ACCEPT
・iptables -A INPUT -p tcp --dport 110 -j ACCEPT
・iptables -A INPUT -p tcp --dport 25 -j ACCEPT
●ssh による接続を許可
・iptables -A INPUT -p tcp --dport 22 -j ACCEPT
●TCP の接続開始と応答、FTP データなどを許可
・iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
●ルールをセーブする
・/etc/init.d/iptables save
●cat /etc/sysconfig/iptables
設定の確認
●reboot
再起動するコマンド
------------------------------2H------------------------------
★Firewallの設定
●SELinuxを停止させる
他のプロセスに影響を及ぼさないようにする機能
・vi /etc/sysconfig/selinux
SELINUX=enforcing
↓
SELINUX=disabled
書き換える
・reboot
再起動
●アパッチのインストール
・getenforce
先ほどの変更がdisableであることを確認
・yum -y install httpd
httpdはアパッチのこと
●eclipseでサーバにリモート接続する
ウィンドウ→パースペクティブを開く→その他→リモートシステムエクスプローラ
リモートシステムタブの空白を右クリック→新規接続
puttyの設定と同じように、ホスト名にサーバのIPアドレスを入力
接続先の名前を設定して完了
・パスワードやユーザ名の入力を求められるので、CentOSで入力したものを使う
------------------------------3H------------------------------
★各種アプリケーションのインストール
●apache
●mysql
●PHP
●vsftpd
●ntp
------------------------------4H------------------------------
★アプリケーションのインストール
●
・ランレベル
[root@localhost ~]# /sbin/chkconfig httpd on
[root@localhost ~]# /sbin/chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
0:off 1:off 2:on 3:on 4:on 5:on 6:off
●apacheの起動
☆apacheの設定ファイルを書き換えた後などにも「restart」で使う
[root@localhost ~]# /etc/init.d/httpd start
httpd を起動中: [ OK ]
☆再起動させたい場合は
/etc/init.d/httpd restart
●Mysqlの起動
マイコンピュータからローカル環境のmysqlのmy.iniの
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
をコピー
・vi /etc/my.cnf
を貼り付け
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
# To enable the InnoDB Plugin, uncomment the 2 next lines
#ignore-builtin-innodb
#plugin-load=innodb=ha_innodb_plugin.so
# To enable InnoDB-related INFORMATION_SCHEMA tables
# Join the following options to above directive
;innodb_trx=ha_innodb_plugin.so
;innodb_locks=ha_innodb_plugin.so
・[mysqld_safe]の後に以下を書き込む
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqldump]
default-character-set = utf8
・自動起動設定
[root@localhost ~]# /sbin/chkconfig mysqld on
[root@localhost ~]# /sbin/chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]# /etc/init.d/mysqld start
------------------------------5H------------------------------
★アプリケーションのインストール
●コマンド入力でバージョンを確認
[root@localhost ~]# mysql -V
mysql Ver 14.14 Distrib 5.1.58, for redhat-linux-gnu (i686) using readline 5.1
[root@localhost ~]# php -v
PHP 5.2.17 (cli) (built: Aug 31 2011 17:06:47)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
[root@localhost ~]# symfony -V
symfony version 1.0.20
●vsftpの起動
・自動起動設定
[root@localhost ~]# /sbin/chkconfig vsftpd on
[root@localhost ~]# /sbin/chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]# /etc/init.d/vsftpd start
vsftpd 用の vsftpd を起動中:
●ntp (時間合わせ)
/usr/sbin/ntpdate ntp.jst.mfeed.ad.jp
●FFFTPにサーバの登録
puttyを参考に
------------------------------6H------------------------------
★サーバでPHPファイルを実行
●phpファイルを実行
・コマンドラインから直接実行して確認
[nishi@localhost ~]$ /usr/bin/php ./test.php
test
●hostsの編集
・ブラウザから確認
・ローカル側の設定
firefoxのswitchhostでアドレス名とサーバIPアドレスを紐付ける
・サーバ側の設定
[root@localhost ~]# cd /etc/httpd/conf
[root@localhost conf]#
・/etc/httpd/conf.dにファイルを作成
[root@localhost httpd]# cd /etc/httpd/conf.d
[root@localhost conf.d]# vi httpd-vhost.conf
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.shonanbbs.com
DocumentRoot /home/nishi/bbs
<Directory "/home/nishi/bbs">
AllowOverride All
Options -Include -ExecCGI
</Directory>
</VirtualHost>
・再起動
[root@localhost conf.d]# /etc/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: Warning: DocumentRoot [/home/nishi/bbs] does not exist
[ OK ]
・eclipse上でbbsフォルダを作成
phpファイルを作成してhostsファイルで設定したサーバ名を入力し、
ブラウザから表示してみる
●mysqlのユーザを作る
・puttyでサーバのmysqlに接続
[root@localhost conf.d]# mysql -u root
・データベースを作成
mysql> create database study;
Query OK, 1 row affected (0.00 sec)
・ユーザ作成
mysql> GRANT ALL ON *.* TO nishi@"localhost" IDENTIFIED BY "password";
Query OK, 0 rows affected (0.01 sec)
-----------------------------memo------------------------------
サーバ面白い
講義055日目
------------------------------1H------------------------------
★Firewallの設定
●最初に設定
・iptables -P INPUT ACCEPT
外部からのアクセスを許可
・iptables -P FORWARD DROP
次にデータを渡す
・iptables -P OUTPUT ACCEPT
外部にデータを渡す
・iptables -F
上のコマンドiptablesのルールの設定を反映させるためのコマンド
●icmp(ping) と自端末からの入力を許可
・iptables -A INPUT -p icmp -j ACCEPT
・iptables -A INPUT -i lo -j ACCEPT
●Web、FTP、POP、smtp による接続を許可
・iptables -A INPUT -p tcp --dport 80 -j ACCEPT
・iptables -A INPUT -p tcp --dport 21 -j ACCEPT
・iptables -A INPUT -p tcp --dport 110 -j ACCEPT
・iptables -A INPUT -p tcp --dport 25 -j ACCEPT
●ssh による接続を許可
・iptables -A INPUT -p tcp --dport 22 -j ACCEPT
●TCP の接続開始と応答、FTP データなどを許可
・iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
●ルールをセーブする
・/etc/init.d/iptables save
●cat /etc/sysconfig/iptables
設定の確認
●reboot
再起動するコマンド
------------------------------2H------------------------------
★Firewallの設定
●SELinuxを停止させる
他のプロセスに影響を及ぼさないようにする機能
・vi /etc/sysconfig/selinux
SELINUX=enforcing
↓
SELINUX=disabled
書き換える
・reboot
再起動
●アパッチのインストール
・getenforce
先ほどの変更がdisableであることを確認
・yum -y install httpd
httpdはアパッチのこと
●eclipseでサーバにリモート接続する
ウィンドウ→パースペクティブを開く→その他→リモートシステムエクスプローラ
リモートシステムタブの空白を右クリック→新規接続
puttyの設定と同じように、ホスト名にサーバのIPアドレスを入力
接続先の名前を設定して完了
・パスワードやユーザ名の入力を求められるので、CentOSで入力したものを使う
------------------------------3H------------------------------
★各種アプリケーションのインストール
●apache
●mysql
●PHP
●vsftpd
●ntp
------------------------------4H------------------------------
★アプリケーションのインストール
●
・ランレベル
[root@localhost ~]# /sbin/chkconfig httpd on
[root@localhost ~]# /sbin/chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
0:off 1:off 2:on 3:on 4:on 5:on 6:off
●apacheの起動
☆apacheの設定ファイルを書き換えた後などにも「restart」で使う
[root@localhost ~]# /etc/init.d/httpd start
httpd を起動中: [ OK ]
☆再起動させたい場合は
/etc/init.d/httpd restart
●Mysqlの起動
マイコンピュータからローカル環境のmysqlのmy.iniの
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
をコピー
・vi /etc/my.cnf
を貼り付け
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
# To enable the InnoDB Plugin, uncomment the 2 next lines
#ignore-builtin-innodb
#plugin-load=innodb=ha_innodb_plugin.so
# To enable InnoDB-related INFORMATION_SCHEMA tables
# Join the following options to above directive
;innodb_trx=ha_innodb_plugin.so
;innodb_locks=ha_innodb_plugin.so
・[mysqld_safe]の後に以下を書き込む
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqldump]
default-character-set = utf8
・自動起動設定
[root@localhost ~]# /sbin/chkconfig mysqld on
[root@localhost ~]# /sbin/chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]# /etc/init.d/mysqld start
------------------------------5H------------------------------
★アプリケーションのインストール
●コマンド入力でバージョンを確認
[root@localhost ~]# mysql -V
mysql Ver 14.14 Distrib 5.1.58, for redhat-linux-gnu (i686) using readline 5.1
[root@localhost ~]# php -v
PHP 5.2.17 (cli) (built: Aug 31 2011 17:06:47)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
[root@localhost ~]# symfony -V
symfony version 1.0.20
●vsftpの起動
・自動起動設定
[root@localhost ~]# /sbin/chkconfig vsftpd on
[root@localhost ~]# /sbin/chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]# /etc/init.d/vsftpd start
vsftpd 用の vsftpd を起動中:
●ntp (時間合わせ)
/usr/sbin/ntpdate ntp.jst.mfeed.ad.jp
●FFFTPにサーバの登録
puttyを参考に
------------------------------6H------------------------------
★サーバでPHPファイルを実行
●phpファイルを実行
・コマンドラインから直接実行して確認
[nishi@localhost ~]$ /usr/bin/php ./test.php
test
●hostsの編集
・ブラウザから確認
・ローカル側の設定
firefoxのswitchhostでアドレス名とサーバIPアドレスを紐付ける
・サーバ側の設定
[root@localhost ~]# cd /etc/httpd/conf
[root@localhost conf]#
・/etc/httpd/conf.dにファイルを作成
[root@localhost httpd]# cd /etc/httpd/conf.d
[root@localhost conf.d]# vi httpd-vhost.conf
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.shonanbbs.com
DocumentRoot /home/nishi/bbs
<Directory "/home/nishi/bbs">
AllowOverride All
Options -Include -ExecCGI
</Directory>
</VirtualHost>
・再起動
[root@localhost conf.d]# /etc/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: Warning: DocumentRoot [/home/nishi/bbs] does not exist
[ OK ]
・eclipse上でbbsフォルダを作成
phpファイルを作成してhostsファイルで設定したサーバ名を入力し、
ブラウザから表示してみる
●mysqlのユーザを作る
・puttyでサーバのmysqlに接続
[root@localhost conf.d]# mysql -u root
・データベースを作成
mysql> create database study;
Query OK, 1 row affected (0.00 sec)
・ユーザ作成
mysql> GRANT ALL ON *.* TO nishi@"localhost" IDENTIFIED BY "password";
Query OK, 0 rows affected (0.01 sec)
-----------------------------memo------------------------------
サーバ面白い
2012年4月24日火曜日
2012年04月24日 講義054日目
2012年04月24日
講義054日目
------------------------------1H------------------------------
★Linuxコマンド
●
・ps -e
サーバのプロセスを表示
・kill
プロセスを殺すことができる
使い方に注意
●ユーザを作る
・who am i
自分がどのユーザでログインしてるか見ることができる
・root以外のユーザを作る
rootだと無制限に色々できてしまうので、制限されたユーザを作る
・ユーザを作ると/homeにフォルダができる
・useradd ユーザ名
ユーザを作成
・passwd ユーザ名
入力したユーザ名のパスワード
パスワード的に問題があるなど色々警告が出るが、入力は出来る
------------------------------2H------------------------------
★Linuxコマンド
●コマンド
・コマンドでディレクトリを作ってみる
shonanbbsディレクトリを作って、その中にindex.phpを作る
[nishi@localhost ~]$ touch shonanbbs/index.php
[nishi@localhost ~]$ ls
shonanbbs
[nishi@localhost ~]$ ls shonanbbs
index.php
・find ./ -name index.php
index.phpを探して、表示
./はどこから探したいか、現在位置を表す
-nameは名前で探すオプション
探し方はオプションで色々出来る
ワイルドカードでも探せる
・rootにあるインストールログを新たに作ったユーザのフォルダにコピー
[root@localhost ~]# cp install.log /home/nishi
[root@localhost ~]# cd /home/nishi
[root@localhost nishi]# ls
install.log shonanbbs
・新たに作ったユーザ側のフォルダ内を確認
[nishi@localhost ~]$ ls -l
合計 40
-rw-r--r-- 1 root root 27783 4月 24 03:32 install.log
drwxrwxr-x 2 nishi nishi 4096 4月 24 03:18 shonanbbs
コピーされたrootのファイルはユーザではいじる事が出来ない
・ユーザの設定
グループとユーザ
・chown
ファイルのオーナーを変更
root側で
[root@localhost nishi]# chown nishi:nishi /home/nishi/install.log
ユーザ側で確認
[nishi@localhost ~]$ ls -l
合計 40
-rw-r--r-- 1 nishi nishi 27783 4月 24 03:32 install.log
drwxrwxr-x 2 nishi nishi 4096 4月 24 03:18 shonanbbs
・grep
ファイルの中身を検索できる
2byte文字を検索したい場合は""で囲む
ctrl+cで入力したコマンドを止めることも出来るので挙動がおかしくなったら使う
・findとgrepは組み合わせて使うことが多い
[nishi@localhost ~]$ find -name install.log | xargs grep test
------------------------------3H------------------------------
★Linuxコマンド
●Vi操作
・Linuxのテキストエディタ
[nishi@localhost ~]$ vi config.inc.php
・iまたはa
テキスト入力モードに出来る
・Esc
コマンド入力モードに戻る
どちらのモードか分からなくなったらEscを押してコマンド入力モードに戻ればいい
・:w
保存する
・:q
終了する
・:wq
保存して終了
・:q!
保存せず終了
・h,j,k,l
↑,↓,←,→
puttyでは十字キーで移動可能だが、コマンド
・:set number,:set nu
行数を表示させる
・set nonu
行数を非表示にする
・shift+g(G)
最後の行へ移動
・数字を入力→shift+g(G)
数字の行へ移動
数字を押し間違えたらEscして再入力
・u
undoコマンド
・yy
ヤンク(コピー)
・p
ペースト
------------------------------4H------------------------------
★Linuxコマンド
●コマンド
・ln
シンボリックリンクを作成
ショートカットのようなもの
水色のファイルが作成される
・su
スイッチユーザ
suだけ打つとrootになれるが、rootに許された操作が使えない場合もある
[nishi@localhost ~]$ su root
パスワード:
[root@localhost nishi]#
exitを入力するとスイッチ前のユーザに戻る
ルートでなければ入力できないコマンドなどが拒絶される
その場合は
su -
で、rootにスイッチしてもコマンドなどが通るようになる
------------------------------5H------------------------------
★Linuxコマンド
●コマンド
・chmod
ファイルへの読み込み権限、書き込み権限などを変更する
[nishi@localhost ~]$ ls -l
合計 52
lrwxrwxrwx 1 nishi nishi 14 4月 24 06:22 conf -> config.inc.php
-rw-rw-r-- 1 nishi nishi 114 4月 24 05:39 config.inc.php
-rw-r--r-- 1 nishi nishi 27783 4月 24 03:32 install.log
drwxrwxr-x 2 nishi nishi 4096 4月 24 03:18 shonanbbs
↑--ココ--↑
書き込みの許可を表す
4 2 1
r w x
読み込み、書き込み、実行
-rwxrwxrwx
オーナー(u)、グループ(g)、その他(誰でも)(o)の順番
[nishi@localhost ~]$ chmod 777 config.inc.php
[nishi@localhost ~]$ ls -l
合計 52
lrwxrwxrwx 1 nishi nishi 14 4月 24 06:22 conf -> config.inc.php
-rwxrwxrwx 1 nishi nishi 114 4月 24 05:39 config.inc.php
-rw-r--r-- 1 nishi nishi 27783 4月 24 03:32 install.log
drwxrwxr-x 2 nishi nishi 4096 4月 24 03:18 shonanbbs
別の書き方も出来る
[nishi@localhost ~]$ chmod g-w config.inc.php
[nishi@localhost ~]$ ls -l
合計 52
lrwxrwxrwx 1 nishi nishi 14 4月 24 06:22 conf -> config.inc.php
-rwxr-xrwx 1 nishi nishi 114 4月 24 05:39 config.inc.php
-rw-r--r-- 1 nishi nishi 27783 4月 24 03:32 install.log
drwxrwxr-x 2 nishi nishi 4096 4月 24 03:18 shonanbbs
●シェルスクリプト
[nishi@localhost ~]$ vi datemake.sh
/bin/date >> /home/nishi/date.log
/bin/echo "command end."
・>>
上書き
------------------------------6H------------------------------
★Linuxコマンド
●シェルスクリプト
・シェルスクリプトの内容は行頭に#でコメントアウト出来る
・crontab
定期的に実行する期間と実行ファイルを指定できる
分 時 日 月 曜日 実行内容
10 17 25 4 0 /home/nishi/hoge.sh
全部の日時等を指定したい場合は「*」
10 17 * * * /home/nishi/hoge.sh
範囲指定「n-n」、毎時「n/*」指定もできる
10-20 */1 * * * /home/nishi/home.sh
一時間ごとに。10分~20分の間で
●bash
シェルからカーネルへ渡す時に動いてくれる機能
・view
読み込み
!をつけると書き込める
[root@localhost nishi]# view /home/nishi/date.log
・xargs
それまでの出力結果を次のコマンドの引数とする
[nishi@localhost ~]$ ls
conf config.inc.php date.log datemake.sh install.log shonanbbs
[nishi@localhost ~]$ wc config.inc.php
8 7 114 config.inc.php
[nishi@localhost ~]$ ls | wc
6 6 63
[nishi@localhost ~]$ ls | xargs wc
8 7 114 conf
8 7 114 config.inc.php
59 246 1363 date.log
2 8 83 datemake.sh
554 1116 27783 install.log
wc: shonanbbs: ディレクトリです
0 0 0 shonanbbs
631 1384 29457 合計
lsの結果をwcに送ることで各ファイルの情報を取得できた
・du
ファイルの容量を表示する
[nishi@localhost ~]$ du ./
8 ./.mozilla/plugins
8 ./.mozilla/extensions
24 ./.mozilla
12 ./shonanbbs
140 ./
・man
オプションでコマンドを指定する(man cd)
ヘルプを出してくれる
qで戻る
・help
コマンド別にヘルプを出す
-----------------------------memo------------------------------
linuxは楽しいかも
講義054日目
------------------------------1H------------------------------
★Linuxコマンド
●
・ps -e
サーバのプロセスを表示
・kill
プロセスを殺すことができる
使い方に注意
●ユーザを作る
・who am i
自分がどのユーザでログインしてるか見ることができる
・root以外のユーザを作る
rootだと無制限に色々できてしまうので、制限されたユーザを作る
・ユーザを作ると/homeにフォルダができる
・useradd ユーザ名
ユーザを作成
・passwd ユーザ名
入力したユーザ名のパスワード
パスワード的に問題があるなど色々警告が出るが、入力は出来る
------------------------------2H------------------------------
★Linuxコマンド
●コマンド
・コマンドでディレクトリを作ってみる
shonanbbsディレクトリを作って、その中にindex.phpを作る
[nishi@localhost ~]$ touch shonanbbs/index.php
[nishi@localhost ~]$ ls
shonanbbs
[nishi@localhost ~]$ ls shonanbbs
index.php
・find ./ -name index.php
index.phpを探して、表示
./はどこから探したいか、現在位置を表す
-nameは名前で探すオプション
探し方はオプションで色々出来る
ワイルドカードでも探せる
・rootにあるインストールログを新たに作ったユーザのフォルダにコピー
[root@localhost ~]# cp install.log /home/nishi
[root@localhost ~]# cd /home/nishi
[root@localhost nishi]# ls
install.log shonanbbs
・新たに作ったユーザ側のフォルダ内を確認
[nishi@localhost ~]$ ls -l
合計 40
-rw-r--r-- 1 root root 27783 4月 24 03:32 install.log
drwxrwxr-x 2 nishi nishi 4096 4月 24 03:18 shonanbbs
コピーされたrootのファイルはユーザではいじる事が出来ない
・ユーザの設定
グループとユーザ
・chown
ファイルのオーナーを変更
root側で
[root@localhost nishi]# chown nishi:nishi /home/nishi/install.log
ユーザ側で確認
[nishi@localhost ~]$ ls -l
合計 40
-rw-r--r-- 1 nishi nishi 27783 4月 24 03:32 install.log
drwxrwxr-x 2 nishi nishi 4096 4月 24 03:18 shonanbbs
・grep
ファイルの中身を検索できる
2byte文字を検索したい場合は""で囲む
ctrl+cで入力したコマンドを止めることも出来るので挙動がおかしくなったら使う
・findとgrepは組み合わせて使うことが多い
[nishi@localhost ~]$ find -name install.log | xargs grep test
------------------------------3H------------------------------
★Linuxコマンド
●Vi操作
・Linuxのテキストエディタ
[nishi@localhost ~]$ vi config.inc.php
・iまたはa
テキスト入力モードに出来る
・Esc
コマンド入力モードに戻る
どちらのモードか分からなくなったらEscを押してコマンド入力モードに戻ればいい
・:w
保存する
・:q
終了する
・:wq
保存して終了
・:q!
保存せず終了
・h,j,k,l
↑,↓,←,→
puttyでは十字キーで移動可能だが、コマンド
・:set number,:set nu
行数を表示させる
・set nonu
行数を非表示にする
・shift+g(G)
最後の行へ移動
・数字を入力→shift+g(G)
数字の行へ移動
数字を押し間違えたらEscして再入力
・u
undoコマンド
・yy
ヤンク(コピー)
・p
ペースト
------------------------------4H------------------------------
★Linuxコマンド
●コマンド
・ln
シンボリックリンクを作成
ショートカットのようなもの
水色のファイルが作成される
・su
スイッチユーザ
suだけ打つとrootになれるが、rootに許された操作が使えない場合もある
[nishi@localhost ~]$ su root
パスワード:
[root@localhost nishi]#
exitを入力するとスイッチ前のユーザに戻る
ルートでなければ入力できないコマンドなどが拒絶される
その場合は
su -
で、rootにスイッチしてもコマンドなどが通るようになる
------------------------------5H------------------------------
★Linuxコマンド
●コマンド
・chmod
ファイルへの読み込み権限、書き込み権限などを変更する
[nishi@localhost ~]$ ls -l
合計 52
lrwxrwxrwx 1 nishi nishi 14 4月 24 06:22 conf -> config.inc.php
-rw-rw-r-- 1 nishi nishi 114 4月 24 05:39 config.inc.php
-rw-r--r-- 1 nishi nishi 27783 4月 24 03:32 install.log
drwxrwxr-x 2 nishi nishi 4096 4月 24 03:18 shonanbbs
↑--ココ--↑
書き込みの許可を表す
4 2 1
r w x
読み込み、書き込み、実行
-rwxrwxrwx
オーナー(u)、グループ(g)、その他(誰でも)(o)の順番
[nishi@localhost ~]$ chmod 777 config.inc.php
[nishi@localhost ~]$ ls -l
合計 52
lrwxrwxrwx 1 nishi nishi 14 4月 24 06:22 conf -> config.inc.php
-rwxrwxrwx 1 nishi nishi 114 4月 24 05:39 config.inc.php
-rw-r--r-- 1 nishi nishi 27783 4月 24 03:32 install.log
drwxrwxr-x 2 nishi nishi 4096 4月 24 03:18 shonanbbs
別の書き方も出来る
[nishi@localhost ~]$ chmod g-w config.inc.php
[nishi@localhost ~]$ ls -l
合計 52
lrwxrwxrwx 1 nishi nishi 14 4月 24 06:22 conf -> config.inc.php
-rwxr-xrwx 1 nishi nishi 114 4月 24 05:39 config.inc.php
-rw-r--r-- 1 nishi nishi 27783 4月 24 03:32 install.log
drwxrwxr-x 2 nishi nishi 4096 4月 24 03:18 shonanbbs
●シェルスクリプト
[nishi@localhost ~]$ vi datemake.sh
/bin/date >> /home/nishi/date.log
/bin/echo "command end."
・>>
上書き
------------------------------6H------------------------------
★Linuxコマンド
●シェルスクリプト
・シェルスクリプトの内容は行頭に#でコメントアウト出来る
・crontab
定期的に実行する期間と実行ファイルを指定できる
分 時 日 月 曜日 実行内容
10 17 25 4 0 /home/nishi/hoge.sh
全部の日時等を指定したい場合は「*」
10 17 * * * /home/nishi/hoge.sh
範囲指定「n-n」、毎時「n/*」指定もできる
10-20 */1 * * * /home/nishi/home.sh
一時間ごとに。10分~20分の間で
●bash
シェルからカーネルへ渡す時に動いてくれる機能
・view
読み込み
!をつけると書き込める
[root@localhost nishi]# view /home/nishi/date.log
・xargs
それまでの出力結果を次のコマンドの引数とする
[nishi@localhost ~]$ ls
conf config.inc.php date.log datemake.sh install.log shonanbbs
[nishi@localhost ~]$ wc config.inc.php
8 7 114 config.inc.php
[nishi@localhost ~]$ ls | wc
6 6 63
[nishi@localhost ~]$ ls | xargs wc
8 7 114 conf
8 7 114 config.inc.php
59 246 1363 date.log
2 8 83 datemake.sh
554 1116 27783 install.log
wc: shonanbbs: ディレクトリです
0 0 0 shonanbbs
631 1384 29457 合計
lsの結果をwcに送ることで各ファイルの情報を取得できた
・du
ファイルの容量を表示する
[nishi@localhost ~]$ du ./
8 ./.mozilla/plugins
8 ./.mozilla/extensions
24 ./.mozilla
12 ./shonanbbs
140 ./
・man
オプションでコマンドを指定する(man cd)
ヘルプを出してくれる
qで戻る
・help
コマンド別にヘルプを出す
-----------------------------memo------------------------------
linuxは楽しいかも
2012年4月23日月曜日
2012年04月23日 講義053日目
2012年04月23日
講義053日目
------------------------------1H------------------------------
★小テストの解答、解説
●電卓クラスの解説
・小テストの電卓クラス
Class dentaku{
public $answer;
function dentaku($num1,$num2){
$this->num1 = $num1;
$this->num2 = $num2;
}
function plusTwoNumber(){
$this->answer = $num1+$num2;
}
function minusTwoNumber(){
$this->answer = $num1-$num2;
}
function multipliTwiNumber(){
$this->answer = $num1*$num2;
}
function divisionTwoNumber(){
$this->answer = $num1/$num2;
}
}
retrunが無いので計算するだけのクラス
$this->answerに値を放り込むだけなので、答えを出力するには$this->answerを出力する
・練習での電卓クラス
Class Dentaku{
protected $num1;
protected $num2;
function Dentaku($one,$two) {
$this->num1 = $one;
$this->num2 = $two;
}
function plus(){
return $this->num1 + $this->num2;
}
function minus(){
return $this->num1 - $this->num2;
}
function multiply(){
return $this->num1 * $this->num2;
}
function division(){
if($this->num2 == 0){
return 0;
}
return $this->num1 / $this->num2;
}
}
------------------------------2H------------------------------
★VMwareとCentOSのインストール
------------------------------3H------------------------------
★CentOS
●rootでログイン
localhost login :root
password:パスワード←表示されないけど入力できてる
root@localhost ~ ]#
の表示でログイン成功
●コマンド
・# ls /
ディレクトリ表示
・# ifconfig
コマンドプロンプトでのipconfigのようなもの
●puttyのインストール
サーバに接続するためのソフト
サーバに接続するためには必ずしもputtyを使わなければならないわけではない
他にも接続できるソフトはいくつかある
・puttyの設定
# ifconfigでinet addrでCentOSのIPアドレスを表示
------------------------------4H------------------------------
★putty
●puttyでCentOSに接続する
・接続先の指定
ホスト名
SSH
ポート22
・セッションの読み込み、保存、削除
セッション一覧に設定を保存
・接続ボタンでCentOSに接続する
レジストリにキャッシュ云々のアラートはとりあえず無視、「はい」を選択で大丈夫
・コマンドプロンプトのような画面が表示され、login as:が出る
CentOSにログインしたやり方でログインする
・puttyの設定を変更
keepaliveの設定を変更→0から300くらいにする
文字コードををutf-8(CJK)に変更
●コマンド
一つのコマンドに対してのバリエーションがいくつかある
・ls -l /
lsはリスト表示、-lで全情報を指定
・ls -lt /
リスト表示、リストを時間(新しい)順で並べる
オプションの記述はリナックスの種類によって多少違う
・オプションの記述方法はコマンドによって、オプションによって違う
------------------------------5H------------------------------
★Linuxコマンド
●パイプとリダイレクト
・パイプ「|」
コマンド1|コマンド2
コマンド1を実行してからコマンド2を実行する
ls -al / | wc
リストの行数や文字を
・リダイレクト「>」
コマンド1>コマンド2
コマンド1をコマンド2に出力する
例)ls ltr / > test.txt
ファイルに出力する
・cat test.txtで↑で出力したファイルを表示
●コマンドを使ってみる
●移動
・cd
ユーザに与えられた自分の場所へ戻る
・pwd
今いる場所を表示
・ctrl+Sやctrl+Cなどはputty上では使わない
・青文字はディレクトリ
[root@localhost ~]# ls -l
合計 64
-rw------- 1 root root 1088 4月 23 21:47 anaconda-ks.cfg
-rw-r--r-- 1 root root 27783 4月 23 21:47 install.log
-rw-r--r-- 1 root root 3382 4月 23 21:46 install.log.syslog
drwxr-xr-x 2 root root 4096 4月 24 00:44 test
-rw-r--r-- 1 root root 1059 4月 24 00:29 test.txt
↑dが付いてるのがディレクトリという意味
●削除
・rm
rootでリムーブするときは戻せないので、細心の注意を払って実行する
・ファイル削除
[root@localhost test]# cd /root
[root@localhost ~]# rm test.txt
rm: remove 通常ファイル `test.txt'? y(←yかyesで実行)
・ディレクトリ削除
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog test
[root@localhost ~]# rm -r test
rm: remove ディレクトリ `test'? n
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog test
[root@localhost ~]# rm -rf test
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog
[root@localhost ~]#
↑rm -rf test(-rにfを付けると確認されずに消去)
・ディレクトリ名/
------------------------------6H------------------------------
★Linuxコマンド
●コマンドを使ってみる
・>>
追加書き込み
・コマンドプロンプトを二つ開く
プロンプト1に
[root@localhost ~]# tail -f test.txt
プロンプト2に
[root@localhost ~]# ls >> test.txt
と打ってみる
プロンプト2で
ctrl+Cを打つ現在動いてるコマンドを終了させる
・more ファイル名
enterで一行づつ
spaceでも進む
qで抜ける
・
●圧縮
・tar -cvzf rootdata.tar.gz /root/
Linuxではtar.gz、 tarが良く使われる
・赤いファイルはアーカイブ化されてることを表す
●解凍
・tar -xvzf rootdata.tar.gz
[root@localhost backup]# ls
rootdata.tar.gz test.txt test2.txt
[root@localhost backup]# tar -xvzf rootdata.tar.gz
root/
root/.bash_profile
root/test.txt
root/rootdata.tar.gz
root/.bashrc
root/.bash_logout
root/.bash_history
root/install.log.syslog
root/install.log
root/.cshrc
root/backup/
root/backup/test2.txt
root/backup/aaa
root/backup/test.txt
root/.tcshrc
root/anaconda-ks.cfg
[root@localhost backup]# ls
root rootdata.tar.gz test.txt test2.txt
↑解凍された
●top
タスクマネージャのようなもの
●プロセスの確認
ps -e
killコマンドでプロセスを殺す
-----------------------------memo------------------------------
風邪お大事に
講義053日目
------------------------------1H------------------------------
★小テストの解答、解説
●電卓クラスの解説
・小テストの電卓クラス
Class dentaku{
public $answer;
function dentaku($num1,$num2){
$this->num1 = $num1;
$this->num2 = $num2;
}
function plusTwoNumber(){
$this->answer = $num1+$num2;
}
function minusTwoNumber(){
$this->answer = $num1-$num2;
}
function multipliTwiNumber(){
$this->answer = $num1*$num2;
}
function divisionTwoNumber(){
$this->answer = $num1/$num2;
}
}
retrunが無いので計算するだけのクラス
$this->answerに値を放り込むだけなので、答えを出力するには$this->answerを出力する
・練習での電卓クラス
Class Dentaku{
protected $num1;
protected $num2;
function Dentaku($one,$two) {
$this->num1 = $one;
$this->num2 = $two;
}
function plus(){
return $this->num1 + $this->num2;
}
function minus(){
return $this->num1 - $this->num2;
}
function multiply(){
return $this->num1 * $this->num2;
}
function division(){
if($this->num2 == 0){
return 0;
}
return $this->num1 / $this->num2;
}
}
------------------------------2H------------------------------
★VMwareとCentOSのインストール
------------------------------3H------------------------------
★CentOS
●rootでログイン
localhost login :root
password:パスワード←表示されないけど入力できてる
root@localhost ~ ]#
の表示でログイン成功
●コマンド
・# ls /
ディレクトリ表示
・# ifconfig
コマンドプロンプトでのipconfigのようなもの
●puttyのインストール
サーバに接続するためのソフト
サーバに接続するためには必ずしもputtyを使わなければならないわけではない
他にも接続できるソフトはいくつかある
・puttyの設定
# ifconfigでinet addrでCentOSのIPアドレスを表示
------------------------------4H------------------------------
★putty
●puttyでCentOSに接続する
・接続先の指定
ホスト名
SSH
ポート22
・セッションの読み込み、保存、削除
セッション一覧に設定を保存
・接続ボタンでCentOSに接続する
レジストリにキャッシュ云々のアラートはとりあえず無視、「はい」を選択で大丈夫
・コマンドプロンプトのような画面が表示され、login as:が出る
CentOSにログインしたやり方でログインする
・puttyの設定を変更
keepaliveの設定を変更→0から300くらいにする
文字コードををutf-8(CJK)に変更
●コマンド
一つのコマンドに対してのバリエーションがいくつかある
・ls -l /
lsはリスト表示、-lで全情報を指定
・ls -lt /
リスト表示、リストを時間(新しい)順で並べる
オプションの記述はリナックスの種類によって多少違う
・オプションの記述方法はコマンドによって、オプションによって違う
------------------------------5H------------------------------
★Linuxコマンド
●パイプとリダイレクト
・パイプ「|」
コマンド1|コマンド2
コマンド1を実行してからコマンド2を実行する
ls -al / | wc
リストの行数や文字を
・リダイレクト「>」
コマンド1>コマンド2
コマンド1をコマンド2に出力する
例)ls ltr / > test.txt
ファイルに出力する
・cat test.txtで↑で出力したファイルを表示
●コマンドを使ってみる
●移動
・cd
ユーザに与えられた自分の場所へ戻る
・pwd
今いる場所を表示
・ctrl+Sやctrl+Cなどはputty上では使わない
・青文字はディレクトリ
[root@localhost ~]# ls -l
合計 64
-rw------- 1 root root 1088 4月 23 21:47 anaconda-ks.cfg
-rw-r--r-- 1 root root 27783 4月 23 21:47 install.log
-rw-r--r-- 1 root root 3382 4月 23 21:46 install.log.syslog
drwxr-xr-x 2 root root 4096 4月 24 00:44 test
-rw-r--r-- 1 root root 1059 4月 24 00:29 test.txt
↑dが付いてるのがディレクトリという意味
●削除
・rm
rootでリムーブするときは戻せないので、細心の注意を払って実行する
・ファイル削除
[root@localhost test]# cd /root
[root@localhost ~]# rm test.txt
rm: remove 通常ファイル `test.txt'? y(←yかyesで実行)
・ディレクトリ削除
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog test
[root@localhost ~]# rm -r test
rm: remove ディレクトリ `test'? n
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog test
[root@localhost ~]# rm -rf test
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog
[root@localhost ~]#
↑rm -rf test(-rにfを付けると確認されずに消去)
・ディレクトリ名/
------------------------------6H------------------------------
★Linuxコマンド
●コマンドを使ってみる
・>>
追加書き込み
・コマンドプロンプトを二つ開く
プロンプト1に
[root@localhost ~]# tail -f test.txt
プロンプト2に
[root@localhost ~]# ls >> test.txt
と打ってみる
プロンプト2で
ctrl+Cを打つ現在動いてるコマンドを終了させる
・more ファイル名
enterで一行づつ
spaceでも進む
qで抜ける
・
●圧縮
・tar -cvzf rootdata.tar.gz /root/
Linuxではtar.gz、 tarが良く使われる
・赤いファイルはアーカイブ化されてることを表す
●解凍
・tar -xvzf rootdata.tar.gz
[root@localhost backup]# ls
rootdata.tar.gz test.txt test2.txt
[root@localhost backup]# tar -xvzf rootdata.tar.gz
root/
root/.bash_profile
root/test.txt
root/rootdata.tar.gz
root/.bashrc
root/.bash_logout
root/.bash_history
root/install.log.syslog
root/install.log
root/.cshrc
root/backup/
root/backup/test2.txt
root/backup/aaa
root/backup/test.txt
root/.tcshrc
root/anaconda-ks.cfg
[root@localhost backup]# ls
root rootdata.tar.gz test.txt test2.txt
↑解凍された
●top
タスクマネージャのようなもの
●プロセスの確認
ps -e
killコマンドでプロセスを殺す
-----------------------------memo------------------------------
風邪お大事に
2012年4月20日金曜日
2012年04月20日 講義052日目
2012年04月20日
講義052日目
------------------------------1H------------------------------
★xamppの復習
●ドメイン
・hostsファイルとvhosts.confファイルに追加
hostsはクライアント側
ドメイン名とIPの紐付け
vhostは(xampp)ホスト側
ヴァーチャルホスト側にドメイン名の登録とサーバ内のファイルの紐付け
DocumentRoot サーバ側の場所
SaverName hostsに登録したドメイン名
Directory
------------------------------2H------------------------------
★クラスの復習
------------------------------3H------------------------------
★小テスト
------------------------------4H------------------------------
★smartyの復習
------------------------------5H------------------------------
★smartyの復習
☆.= で変数に文字列を追加したりできる
------------------------------6H------------------------------
★smartyの復習
-----------------------------memo------------------------------
class、smartyを理解した
講義052日目
------------------------------1H------------------------------
★xamppの復習
●ドメイン
・hostsファイルとvhosts.confファイルに追加
hostsはクライアント側
ドメイン名とIPの紐付け
vhostは(xampp)ホスト側
ヴァーチャルホスト側にドメイン名の登録とサーバ内のファイルの紐付け
DocumentRoot サーバ側の場所
SaverName hostsに登録したドメイン名
Directory
------------------------------2H------------------------------
★クラスの復習
------------------------------3H------------------------------
★小テスト
------------------------------4H------------------------------
★smartyの復習
------------------------------5H------------------------------
★smartyの復習
☆.= で変数に文字列を追加したりできる
------------------------------6H------------------------------
★smartyの復習
-----------------------------memo------------------------------
class、smartyを理解した
2012年04月19日 講義051日目
2012年04月19日
講義051日目
★class・smartyを利用した課題作成
★発表
-----------------------------memo------------------------------
とくになし
講義051日目
★class・smartyを利用した課題作成
★発表
-----------------------------memo------------------------------
とくになし
2012年04月18日 講義050日目
2012年04月18日
講義050日目
★class・smartyを利用した課題作成
-----------------------------memo------------------------------
とくになし
講義050日目
★class・smartyを利用した課題作成
-----------------------------memo------------------------------
とくになし
2012年04月16日 講義049日目
2012年04月16日
講義049日目
★class・smartyを利用した課題作成
-----------------------------memo------------------------------
とくになし
講義049日目
★class・smartyを利用した課題作成
-----------------------------memo------------------------------
とくになし
2012年04月13日 講義048日目
2012年04月13日
講義048日目
★class・smartyを利用した課題作成
-----------------------------memo------------------------------
とくになし
講義048日目
★class・smartyを利用した課題作成
-----------------------------memo------------------------------
とくになし
2012年04月12日 講義047日目
2012年04月12日
講義047日目
★class・smartyを利用した課題作成
-----------------------------memo------------------------------
講義047日目
★class・smartyを利用した課題作成
-----------------------------memo------------------------------
2012年04月11日 講義046日目
2012年04月11日
講義046日目
★class・smartyを利用した課題作成
●現状の認識
・前回作成したページの構造を洗いなおす、動作確認
・構造の変更、動作確認
・データベースの構造を変更
・smarty.classなどのlibsフォルダなどをbbsプロジェクトから課題プロジェクトへ
コピーして使えるようにする
●ファイル構造
・smarty化に向けてのファイル構造の整理
・管理者画面を課題プロジェクトに組み込む
●データベースの確認
・テーブルの構造を変更
●テンプレート化準備
------------------------------memo------------------------------
本日の目標は一通り動くようにすること
明日は前回採用できなかった機能を組み込んでいく予定
講義046日目
★class・smartyを利用した課題作成
●現状の認識
・前回作成したページの構造を洗いなおす、動作確認
・構造の変更、動作確認
・データベースの構造を変更
・smarty.classなどのlibsフォルダなどをbbsプロジェクトから課題プロジェクトへ
コピーして使えるようにする
●ファイル構造
・smarty化に向けてのファイル構造の整理
・管理者画面を課題プロジェクトに組み込む
●データベースの確認
・テーブルの構造を変更
●テンプレート化準備
------------------------------memo------------------------------
本日の目標は一通り動くようにすること
明日は前回採用できなかった機能を組み込んでいく予定
2012年4月10日火曜日
2012年04月10日 講義045日目
2012年04月10日
講義045日目
------------------------------1H------------------------------
★仕様書
●問題点2
画像の正常性チェック
・confirmでの処理パターン
画像のみエラーで戻ってくる
画像以外のエラーで戻ってくる
画像を含むエラーで戻ってくる
一度エラーに引っかかってから再度エラー
------------------------------2H------------------------------
★仕様書
●問題点3
管理画面の編集機能において、存在しないIDをURLに直接記述した場合に空のフォームが出現する
//エラー処理で受け取ったGETの値が存在するかを調べる処理
$sql = "SELECT count(*) FROM comment WHERE id = \"".$id."\"";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
if($row[0] == 0){
header("Location:http://localhost/bbs/admin/index.php");
}
●mysqlのデータ型について
例)
php側の変数が$id = 12a;の場合
12a→12と認識される(数字の後の文字列は無視)
------------------------------3H------------------------------
★仕様書
●今後の修正点2
・ユーザの「新規追加」にて管理者権限を指定できるように変更
●論理削除の実装
memberテーブルにdelete_ynカラムを作る
デフォルト値はn
member_delete
member_list
member_edit_input
member_edit_confirm
member_edit_result
member_add_confirm
に、WHERE delete_yn != 'y'またはAND delete_yn != 'y'をSQL文に入れていく
個人情報の管理などは物理削除
・選択のポイント
時間差をつけて論理削除から物理削除へ移行など
------------------------------4H------------------------------
★仕様書
●今後の修正点7
クロススクリプティング(XSS)対策、サニタイズ処理が入ってない。
htmlspecialchars()
strip_tags()
などを利用する
・|htmlspecialchars
{$row.content}
を
{$row.content|htmlspecialchars}
に変更してコメント内でスクリプトを動作させないようにする
・|escape
comment_list
comment_edit_confirm
member_list
member_edit_confirm
member_add_confirm
(header.tpl)
(article.tpl)
のvalue内に挿入
------------------------------5H------------------------------
★データベースを使ったウェブサイト作成実習の件
以前のお問い合わせフォーム的なレシート入力サイトのバージョンアップ
☆目標の優先順
●最低限盛り込みたい内容----------------
サイトの見た目をCSSを使ってある程度整える(CSSの学習)
レシート画像のアップロード機能の実装
ログイン画面、ログアウト画面の実装
ユーザとユーザが入力した情報を管理する連携したテーブルの作成
●時間的に可能があればやりたいことの壁----------------
zendのライブラリを使った外部サービスの利用
(主にgoogleで提供されてるサービスを使う)
・入力した画像をgoogleドキュメントに格納
・入力した内容を投稿するとgoogleドキュメントのシートに格納
・入力した日をgoogleカレンダーに投稿して管理
●やりたいけど技術的に微妙な壁----------------
ツイッターアカウントにメッセージを送る機能(送らないも選択可能)の実装
-----------------------------memo------------------------------
今回の課題の条件
・クラスを何か一つ作る
・smartyを使う
以上
発表は4/18
講義045日目
------------------------------1H------------------------------
★仕様書
●問題点2
画像の正常性チェック
・confirmでの処理パターン
画像のみエラーで戻ってくる
画像以外のエラーで戻ってくる
画像を含むエラーで戻ってくる
一度エラーに引っかかってから再度エラー
------------------------------2H------------------------------
★仕様書
●問題点3
管理画面の編集機能において、存在しないIDをURLに直接記述した場合に空のフォームが出現する
//エラー処理で受け取ったGETの値が存在するかを調べる処理
$sql = "SELECT count(*) FROM comment WHERE id = \"".$id."\"";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
if($row[0] == 0){
header("Location:http://localhost/bbs/admin/index.php");
}
●mysqlのデータ型について
例)
php側の変数が$id = 12a;の場合
12a→12と認識される(数字の後の文字列は無視)
------------------------------3H------------------------------
★仕様書
●今後の修正点2
・ユーザの「新規追加」にて管理者権限を指定できるように変更
●論理削除の実装
memberテーブルにdelete_ynカラムを作る
デフォルト値はn
member_delete
member_list
member_edit_input
member_edit_confirm
member_edit_result
member_add_confirm
に、WHERE delete_yn != 'y'またはAND delete_yn != 'y'をSQL文に入れていく
個人情報の管理などは物理削除
・選択のポイント
時間差をつけて論理削除から物理削除へ移行など
------------------------------4H------------------------------
★仕様書
●今後の修正点7
クロススクリプティング(XSS)対策、サニタイズ処理が入ってない。
htmlspecialchars()
strip_tags()
などを利用する
・|htmlspecialchars
{$row.content}
を
{$row.content|htmlspecialchars}
に変更してコメント内でスクリプトを動作させないようにする
・|escape
comment_list
comment_edit_confirm
member_list
member_edit_confirm
member_add_confirm
(header.tpl)
(article.tpl)
のvalue内に挿入
------------------------------5H------------------------------
★データベースを使ったウェブサイト作成実習の件
以前のお問い合わせフォーム的なレシート入力サイトのバージョンアップ
☆目標の優先順
●最低限盛り込みたい内容----------------
サイトの見た目をCSSを使ってある程度整える(CSSの学習)
レシート画像のアップロード機能の実装
ログイン画面、ログアウト画面の実装
ユーザとユーザが入力した情報を管理する連携したテーブルの作成
●時間的に可能があればやりたいことの壁----------------
zendのライブラリを使った外部サービスの利用
(主にgoogleで提供されてるサービスを使う)
・入力した画像をgoogleドキュメントに格納
・入力した内容を投稿するとgoogleドキュメントのシートに格納
・入力した日をgoogleカレンダーに投稿して管理
●やりたいけど技術的に微妙な壁----------------
ツイッターアカウントにメッセージを送る機能(送らないも選択可能)の実装
-----------------------------memo------------------------------
今回の課題の条件
・クラスを何か一つ作る
・smartyを使う
以上
発表は4/18
2012年4月9日月曜日
2012年04月09日 講義044日目
2012年04月09日
講義044日目
------------------------------1H------------------------------
★仕様書
●修正と変更履歴の作成
・問題点4
管理画面において、カテゴリの編集が行えない
・問題点5
管理画面において、URLの編集が行えない
の修正を記入
・今後の修正点の追加
------------------------------2H------------------------------
★仕様書
●修正と変更履歴の作成
・問題点6
掲示板において、ファイルをアップロードした際に拡張子が強制的にjpgになる
の修正
------------------------------3H------------------------------
★仕様書
●修正と変更履歴の作成
・問題点8
メンバー一覧ページにページャーが実装されてない
の修正
------------------------------4H------------------------------
★仕様書
●修正と変更履歴の作成
・問題点2
管理画面において、フォームからの入力データのエラーチェックをしていない
エラーチェックにかかったら、inputに戻って、エラーの箇所を表示
・空白チェック
comment編集
member編集
------------------------------5H------------------------------
★仕様書
●修正と変更履歴の作成
・ユーザ追加エラーチェック
------------------------------6H------------------------------
★仕様書
●修正と変更履歴の作成
・画像の正常性チェック
-----------------------------memo------------------------------
課題は4/11ぐらいから開始っぽい
講義044日目
------------------------------1H------------------------------
★仕様書
●修正と変更履歴の作成
・問題点4
管理画面において、カテゴリの編集が行えない
・問題点5
管理画面において、URLの編集が行えない
の修正を記入
・今後の修正点の追加
------------------------------2H------------------------------
★仕様書
●修正と変更履歴の作成
・問題点6
掲示板において、ファイルをアップロードした際に拡張子が強制的にjpgになる
の修正
------------------------------3H------------------------------
★仕様書
●修正と変更履歴の作成
・問題点8
メンバー一覧ページにページャーが実装されてない
の修正
------------------------------4H------------------------------
★仕様書
●修正と変更履歴の作成
・問題点2
管理画面において、フォームからの入力データのエラーチェックをしていない
エラーチェックにかかったら、inputに戻って、エラーの箇所を表示
・空白チェック
comment編集
member編集
------------------------------5H------------------------------
★仕様書
●修正と変更履歴の作成
・ユーザ追加エラーチェック
------------------------------6H------------------------------
★仕様書
●修正と変更履歴の作成
・画像の正常性チェック
-----------------------------memo------------------------------
課題は4/11ぐらいから開始っぽい
2012年4月6日金曜日
2012年04月06日 講義043日目
2012年04月06日
講義043日目
------------------------------1H------------------------------
★管理画面作成
●管理者権限の編集
memberカラムのadmin_ynを参照できるように、
格ファイルに追加していく
●仕様書
作成時、機能拡張したりするときに書く
・外部仕様
日付、作った人
ユーザ向けの仕様書
機能の説明
画面遷移図
既存の問題点、修正点
etc...
・内部仕様
プログラマ向けの仕様書
データベースの構成
クラス構成
関数表
テスト仕様書、テスト項目書
フローチャート
etc...
・仕様書は他の人がわかりやすいように書く
何か変更があったら反映させる(仕様変更)
テンプレートを使うとテンプレートに合わせた仕様になっていきがちなのでなるべく自分で書く
------------------------------2H------------------------------
★仕様書
●外部仕様書
表計算ソフトなどで作成
------------------------------3H------------------------------
★仕様書
●内部仕様書
フローチャートは別の言語に書き換えるときに使ったりする
------------------------------4H------------------------------
------------------------------5H------------------------------
------------------------------6H------------------------------
★仕様書
●仕様書に沿って問題を解決してみる
・管理画面において、フォームからの入力データのエラーチェックをしていない
→エラーチェックにかかったらinputに戻って、エラーの箇所を表示する
・管理画面において、カテゴリの編集が行えない
・管理画面において、URLの編集が行えない
・掲示板において、ファイルをアップロードした際に拡張子が強制的に.jpgになる
-----------------------------memo------------------------------
講義043日目
------------------------------1H------------------------------
★管理画面作成
●管理者権限の編集
memberカラムのadmin_ynを参照できるように、
格ファイルに追加していく
●仕様書
作成時、機能拡張したりするときに書く
・外部仕様
日付、作った人
ユーザ向けの仕様書
機能の説明
画面遷移図
既存の問題点、修正点
etc...
・内部仕様
プログラマ向けの仕様書
データベースの構成
クラス構成
関数表
テスト仕様書、テスト項目書
フローチャート
etc...
・仕様書は他の人がわかりやすいように書く
何か変更があったら反映させる(仕様変更)
テンプレートを使うとテンプレートに合わせた仕様になっていきがちなのでなるべく自分で書く
------------------------------2H------------------------------
★仕様書
●外部仕様書
表計算ソフトなどで作成
------------------------------3H------------------------------
★仕様書
●内部仕様書
フローチャートは別の言語に書き換えるときに使ったりする
------------------------------4H------------------------------
------------------------------5H------------------------------
------------------------------6H------------------------------
★仕様書
●仕様書に沿って問題を解決してみる
・管理画面において、フォームからの入力データのエラーチェックをしていない
→エラーチェックにかかったらinputに戻って、エラーの箇所を表示する
・管理画面において、カテゴリの編集が行えない
・管理画面において、URLの編集が行えない
・掲示板において、ファイルをアップロードした際に拡張子が強制的に.jpgになる
-----------------------------memo------------------------------
2012年4月5日木曜日
2012年04月05日 講義042日目
2012年04月05日
講義042日目
------------------------------1H------------------------------
★管理画面作成
●コメント編集画面
・comment_list
編集画面のデータ混乱を防ぐためにセッションのクリア
・comment_edit
bbs/tmp/に編集される画像を一時的に保存するためのロジック
・comment_input
最初にこのページに来たのか、戻るボタンで来たのかを分岐
{if $smarty.session.tmpnickname != ""}
<input type="text" name="nickname" size"20"
value="{$smarty.session.tmpnickname}">
{else}
<input type="text" name="nickname" size="20"
value="{$comment.nickname}">
{/if}
<textarea>内に無用なインデントを入れるとテキストエリア内でインデントが作られる場合がある(smartyのせい?)
・comment_edit_comfirm
------------------------------2H------------------------------
★管理画面作成
●コメント編集画面
関数の中で関数を呼ぶ処理
・myUtil::getFileExt()
ファイルの拡張子を見てる
・getFileExtId()
getimagesize()で拡張子を返す
・エラー制御演算子
関数に@をつけるとエラーを表示しなくなる
ワーニング、ノーティスを出したくないところにつける
エラーをだしてくれないのであまり使用しない方がいい
------------------------------3H------------------------------
★管理画面作成
●コメント編集画面
・confirm/resultでのページ更新を防ぐロジックの実装
input.php
$_SESSION["comment_edit_input_id"] = rand();
input.tpl
<input type="hidden" name="comment_edit_input_id"
value="{$smarty.session.comment_edit_input_id}">
comment_edit_confirm.php
//input.phpから来たかどうかを判断する処理
if($_SESSION["comment_edit_input_id"] != $_POST["comment_edit_input_id"]){
header("Location:http://localhost/bbs/admin/index.php");
}else{
$_SESSION["comment_edit_input_id"] = rand();
}
//result.phpでconfirm.phpから来たかどうか判断するための処理
$_SESSION["comment_edit_confirm_id"] =rand();
comment_edit_confirm.tpl
・確認
confirmでページ更新
resultでページ更新
confirmに直接URLを打つ
resultに直接URLを打つ
------------------------------4H------------------------------
★管理画面作成
●内部結合と外部結合
comment_delete.php修正
・内部結合
SELECT * FROM comment,reply WHERE comment. id = reply.comment_id;
SELECT * FROM comment INNER JOIN reply
WHERE comment,id = reply.comment_id;
二つ以上のテーブルで条件と一致するもののみ取得
$sql = "DELETE comment,reply
FROM comment,reply
WHERE comment.id =reply.comment_id
AND comment.id ='".$id."'";
・外部結合
(LEFT JOINで左側基準)
SELECT * FROM comment LEFT JOIN reply
ON comment.id = reply.comment_id;
(RIGHT JOINで右側基準)
SELECT * FROM reply RIGHT JOIN comment
ON comment,id = reply.comment_id;
片方のテーブルを基準にして、
そのテーブルの全データを条件に一致するもう片方のテーブルを取得
$sql = "DELETE comment,reply
FROM comment LEFT JOIN reply
ON comment.id = reply.comment_id
WHERE comment.id ='" . $id. "'";
mysql_query($sql);
・完全外部結合
UNIONを使う
------------------------------5H------------------------------
------------------------------6H------------------------------
★管理画面作成
●メンバー編集画面の作成
comment_edit_input
comment_edit_confirm
comment_edit_result
を参考にして
member_edit_input
member_edit_confirm
member_edit_result
の作成
★symfonyを使ったサイト作成の発表会見学
-----------------------------memo------------------------------
セッションの使い方は奥が深そう
講義042日目
------------------------------1H------------------------------
★管理画面作成
●コメント編集画面
・comment_list
編集画面のデータ混乱を防ぐためにセッションのクリア
・comment_edit
bbs/tmp/に編集される画像を一時的に保存するためのロジック
・comment_input
最初にこのページに来たのか、戻るボタンで来たのかを分岐
{if $smarty.session.tmpnickname != ""}
<input type="text" name="nickname" size"20"
value="{$smarty.session.tmpnickname}">
{else}
<input type="text" name="nickname" size="20"
value="{$comment.nickname}">
{/if}
<textarea>内に無用なインデントを入れるとテキストエリア内でインデントが作られる場合がある(smartyのせい?)
・comment_edit_comfirm
------------------------------2H------------------------------
★管理画面作成
●コメント編集画面
関数の中で関数を呼ぶ処理
・myUtil::getFileExt()
ファイルの拡張子を見てる
・getFileExtId()
getimagesize()で拡張子を返す
・エラー制御演算子
関数に@をつけるとエラーを表示しなくなる
ワーニング、ノーティスを出したくないところにつける
エラーをだしてくれないのであまり使用しない方がいい
------------------------------3H------------------------------
★管理画面作成
●コメント編集画面
・confirm/resultでのページ更新を防ぐロジックの実装
input.php
$_SESSION["comment_edit_input_id"] = rand();
input.tpl
<input type="hidden" name="comment_edit_input_id"
value="{$smarty.session.comment_edit_input_id}">
comment_edit_confirm.php
//input.phpから来たかどうかを判断する処理
if($_SESSION["comment_edit_input_id"] != $_POST["comment_edit_input_id"]){
header("Location:http://localhost/bbs/admin/index.php");
}else{
$_SESSION["comment_edit_input_id"] = rand();
}
//result.phpでconfirm.phpから来たかどうか判断するための処理
$_SESSION["comment_edit_confirm_id"] =rand();
comment_edit_confirm.tpl
・確認
confirmでページ更新
resultでページ更新
confirmに直接URLを打つ
resultに直接URLを打つ
------------------------------4H------------------------------
★管理画面作成
●内部結合と外部結合
comment_delete.php修正
・内部結合
SELECT * FROM comment,reply WHERE comment. id = reply.comment_id;
SELECT * FROM comment INNER JOIN reply
WHERE comment,id = reply.comment_id;
二つ以上のテーブルで条件と一致するもののみ取得
$sql = "DELETE comment,reply
FROM comment,reply
WHERE comment.id =reply.comment_id
AND comment.id ='".$id."'";
・外部結合
(LEFT JOINで左側基準)
SELECT * FROM comment LEFT JOIN reply
ON comment.id = reply.comment_id;
(RIGHT JOINで右側基準)
SELECT * FROM reply RIGHT JOIN comment
ON comment,id = reply.comment_id;
片方のテーブルを基準にして、
そのテーブルの全データを条件に一致するもう片方のテーブルを取得
$sql = "DELETE comment,reply
FROM comment LEFT JOIN reply
ON comment.id = reply.comment_id
WHERE comment.id ='" . $id. "'";
mysql_query($sql);
・完全外部結合
UNIONを使う
------------------------------5H------------------------------
------------------------------6H------------------------------
★管理画面作成
●メンバー編集画面の作成
comment_edit_input
comment_edit_confirm
comment_edit_result
を参考にして
member_edit_input
member_edit_confirm
member_edit_result
の作成
★symfonyを使ったサイト作成の発表会見学
-----------------------------memo------------------------------
セッションの使い方は奥が深そう
2012年4月4日水曜日
2012年04月04日 講義041日目
2012年04月04日
講義041日目
------------------------------1H------------------------------
★管理画面
●コメント一覧ページを作成する
・generatePager関数を実行するために、
admin/comment_list.php
のsql文部分を書き換える
DbWrapper::dbChoice();
$sql = "SELECT count(*) FROM comment";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
//generatePager関数を実行すると、pagerを形作るのに必要な要素が配列で帰ってくる
$pager = myUtil::generatePager(10,$row[0],$_GET["page"],"","/bbs/admin/");
$smarty->assign("pager", $pager);
$sql ="SELECT * FROM comment ORDER BY created_at DESC LIMIT ".$pager["num_s"].",".$pager["num_e"];
------------------------------2H------------------------------
★管理画面
●テンプレートからテンプレートを呼び出す
comment.tplを書き換える
<div class="pager">
{include file="pager.tpl" pager=$pager}
</div>
●コメント削除実装
member_delete.phpと
member_delete.tplを参考に
comment_delete.phpと
comment_delete.tplを編集
・コメントの削除と同時にコメントにひも付いたreplyレコードも消去するロジックを組み込んでみる
DbWrapper::dbChoice();
//クエリを送信する
$id = $_GET["id"];
$sql = "SELECT count(*) FROM reply WHERE comment_id = '".$id."'";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
if($row[0] >0){
$sql = "DELETE comment,reply
FROM comment,reply
WHERE comment.id =reply.comment_id
AND comment.id ='".$id."'";
}else{
$sql = "DELETE FROM comment WHERE id ='".$id."'";
}
mysql_query($sql);
------------------------------3H------------------------------
★管理画面
●コメント編集機能を追加する
・/bbs/tmp作成
・/bbs/admin/comment_edit_input.php
編集のためにimgフォルダの画像をtmpフォルダにコピーする
・copy()
第一引数の値を第二引数にコピーする関数
------------------------------4H------------------------------
★管理画面
●コメント編集機能の追加
・/bbs/admin/templates/comment_edit_input.tpl
------------------------------5H------------------------------
★管理画面
●コメント編集確認画面
・/bbs/admin/templates/comment_confirm.tpl
・/bbs/admin/comment_confirm.php
//アップロードされたファイルがある場合(新規or更新)
if(is_uploaded_file($_FILE["photo"]["tmp_name"])){
session_regenerate_id();
$tmpname ="photo_" .
session_id() .
myUtil::getFileExt($FILES["photo"]["tmp_name"]);
$smarty->assign("tmpname". $tmpname);
copy($FILES["photo"]["tmp_name"], "../tmp/".$tmpname);
$_SESSION["tmpphoto"] = "../tmp/".$tmpname;
//画像が存在しない、あるいは変更がない場合
}else{
$smarty->assign("tmpname", $tmpname);
}
------------------------------6H------------------------------
★管理画面
●コメント編集完了画面
・/bbs/admin/comment_edit_result.php
・/bbs/admin/templates/comment_edit_result.tpl
-----------------------------memo------------------------------
タイプミスがやべー
講義041日目
------------------------------1H------------------------------
★管理画面
●コメント一覧ページを作成する
・generatePager関数を実行するために、
admin/comment_list.php
のsql文部分を書き換える
DbWrapper::dbChoice();
$sql = "SELECT count(*) FROM comment";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
//generatePager関数を実行すると、pagerを形作るのに必要な要素が配列で帰ってくる
$pager = myUtil::generatePager(10,$row[0],$_GET["page"],"","/bbs/admin/");
$smarty->assign("pager", $pager);
$sql ="SELECT * FROM comment ORDER BY created_at DESC LIMIT ".$pager["num_s"].",".$pager["num_e"];
------------------------------2H------------------------------
★管理画面
●テンプレートからテンプレートを呼び出す
comment.tplを書き換える
<div class="pager">
{include file="pager.tpl" pager=$pager}
</div>
●コメント削除実装
member_delete.phpと
member_delete.tplを参考に
comment_delete.phpと
comment_delete.tplを編集
・コメントの削除と同時にコメントにひも付いたreplyレコードも消去するロジックを組み込んでみる
DbWrapper::dbChoice();
//クエリを送信する
$id = $_GET["id"];
$sql = "SELECT count(*) FROM reply WHERE comment_id = '".$id."'";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
if($row[0] >0){
$sql = "DELETE comment,reply
FROM comment,reply
WHERE comment.id =reply.comment_id
AND comment.id ='".$id."'";
}else{
$sql = "DELETE FROM comment WHERE id ='".$id."'";
}
mysql_query($sql);
------------------------------3H------------------------------
★管理画面
●コメント編集機能を追加する
・/bbs/tmp作成
・/bbs/admin/comment_edit_input.php
編集のためにimgフォルダの画像をtmpフォルダにコピーする
・copy()
第一引数の値を第二引数にコピーする関数
------------------------------4H------------------------------
★管理画面
●コメント編集機能の追加
・/bbs/admin/templates/comment_edit_input.tpl
------------------------------5H------------------------------
★管理画面
●コメント編集確認画面
・/bbs/admin/templates/comment_confirm.tpl
・/bbs/admin/comment_confirm.php
//アップロードされたファイルがある場合(新規or更新)
if(is_uploaded_file($_FILE["photo"]["tmp_name"])){
session_regenerate_id();
$tmpname ="photo_" .
session_id() .
myUtil::getFileExt($FILES["photo"]["tmp_name"]);
$smarty->assign("tmpname". $tmpname);
copy($FILES["photo"]["tmp_name"], "../tmp/".$tmpname);
$_SESSION["tmpphoto"] = "../tmp/".$tmpname;
//画像が存在しない、あるいは変更がない場合
}else{
$smarty->assign("tmpname", $tmpname);
}
------------------------------6H------------------------------
★管理画面
●コメント編集完了画面
・/bbs/admin/comment_edit_result.php
・/bbs/admin/templates/comment_edit_result.tpl
-----------------------------memo------------------------------
タイプミスがやべー
2012年4月3日火曜日
2012年04月03日 講義040日目
2012年04月03日
講義040日目
------------------------------1H------------------------------
★管理画面作成
●復習
・三項演算子
if条件分岐
if(条件式) ? "true" : "false" ;
・コメント一覧ページを作成する
bbs/admin/comment_list.php
bbs/admin/templates/comment_list.tpl
------------------------------2H------------------------------
暴風,波浪警報発令のため休校、4/11に振り替え予定
-----------------------------memo------------------------------
春の嵐
講義040日目
------------------------------1H------------------------------
★管理画面作成
●復習
・三項演算子
if条件分岐
if(条件式) ? "true" : "false" ;
・コメント一覧ページを作成する
bbs/admin/comment_list.php
bbs/admin/templates/comment_list.tpl
------------------------------2H------------------------------
暴風,波浪警報発令のため休校、4/11に振り替え予定
-----------------------------memo------------------------------
春の嵐
2012年4月2日月曜日
2012年04月02日 講義039日目
2012年04月02日
講義039日目
------------------------------1H------------------------------
★管理画面作成
●adminフォルダ作成
・bbs/admin/templates
bbs/admin/templates_c
bbs/admin/index.php
・ベーシック認証の設置
bbs/admin/a.htaccess.txt←ファイル名は後で変更する
AuthUserFile C:/pleiades/xampp/htdocs/bbs/.htpasswd
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
・cd C:\pleiades\xampp\apache\bin
htpasswd -c .htpasswd username
でパスワードを作る
C:/pleiades/xampp/htdocs/
に.htpasswdを置く
・admin.tpl作成
bbs/admin/templates/admin.tpl
------------------------------2H------------------------------
★管理画面作成
●管理画面トップを作成する
・admin.tplに記述
<html>
<head>
<title>SHONAN BBS ADMIN</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css"href="../css/default.css" />
</head>
<body>
<h1>SHONAN BBS 管理画面</h1>
<hr noshade size="1">
<!--↓↓↓↓↓この部分を書き換えて他のページで流用↓↓↓↓↓-->
<div id="content">
<div id="contentLeft">
<h2>管理画面トップ</h2>
<div class="osiraseBox">
会員の方へのお知らせ
</div>
</div>
<div id="contentRight">
{include file="menu.tpl"}
</div>
</div>
<!--↑↑↑↑↑この部分を書き換えて他のページで流用↑↑↑↑↑-->
<hr noshade size="1">
<div style="text-align:center">SHONAN BBS</div>
</body>
</html>
のソースを
・bbs/admin/templates/header.tpl
・bbs/admin/templates/menu.tpl
・bbs/admin/templates/footer.tpl
に分割する
●ユーザ追加機能を追加する
・bbs/admin/member_add_input.php
・bbs/admin/templates/member_add_input.tpl
------------------------------3H------------------------------
★管理画面作成
●ユーザ追加確認画面を作成する
・bbs/admin/member_add_confirm.php
・bbs/admin/templates/member_add_confirm.tpl
------------------------------4H------------------------------
★管理画面作成
●ユーザ追加完了画面を作成する
・bbs/admin/member_add_result.php
・bbs/admin/templates/member_add_result.php
------------------------------5H------------------------------
★管理画面作成
●ユーザー一覧ページを作成する
・bbs/admin/member_add_result.php
・bbs/admin/templates/member_add_result.tpl
●メンバーの削除
物理削除と論理削除
物理削除
データベースから直接消去
実際に消すので残らない
論理削除
削除フラグや管理テーブルなどを用いて表示させない方法
削除した扱いにする
■物理削除の場合
$id = $_GET["id"];
で渡されたデータを元にsql文を作る
・bbs/admin/member_delete.php
・bbs/admin/templates/member_delete.tpl
・データベース削除のsql文
delete from テーブル名 where 検索条件;
例)delete from member where id = 2;
------------------------------6H------------------------------
★管理画面作成
●member_add_result.phpを改変
新規登録時にadmin_ynの初期値をnにする
$sql = "INSERT INTO member
(nickname, mailaddress, password, admin_yn, created_at)
VALUES (\"".$nickname."\",\"".
$mailaddress."\",\"".
$password."\",\"".
"n\",\"".
date("Y-m-d H:i:s")."\")";
●Pager
・libsにsmarty以外のライブラリを設置する
Pager.classのダウンロードし、libsにコピー
Pager.class.phpとリネーム
・Pagerとは?
リストの数に応じてページとそのリンクを生成する
Pagerのclassをnewして使う
●ライブラリを設置する
BBS/libs/myUtil.class.php
拡張用のクラスライブラリはネットに色々ある
■三項演算子
①基本
$hoge = 1;
if($hoge == 1){
echo "OK";
}
②if,endif
$hoge = 1;
if($hoge == 1);
echo "OK";
endif;
③三項演算子
echo ($hoge == 1) ? "OK" : "" ;
-----------------------------memo------------------------------
・コマンドプロンプトからのファイル内の文字検索
C:\pleiades\xampp\htdocs\BBS>findstr /s charaset *
と入力してcharasetと誤記されてる部分を表示する
手作業でcharasetをcharsetに編集する
講義039日目
------------------------------1H------------------------------
★管理画面作成
●adminフォルダ作成
・bbs/admin/templates
bbs/admin/templates_c
bbs/admin/index.php
・ベーシック認証の設置
bbs/admin/a.htaccess.txt←ファイル名は後で変更する
AuthUserFile C:/pleiades/xampp/htdocs/bbs/.htpasswd
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
・cd C:\pleiades\xampp\apache\bin
htpasswd -c .htpasswd username
でパスワードを作る
C:/pleiades/xampp/htdocs/
に.htpasswdを置く
・admin.tpl作成
bbs/admin/templates/admin.tpl
------------------------------2H------------------------------
★管理画面作成
●管理画面トップを作成する
・admin.tplに記述
<html>
<head>
<title>SHONAN BBS ADMIN</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css"href="../css/default.css" />
</head>
<body>
<h1>SHONAN BBS 管理画面</h1>
<hr noshade size="1">
<!--↓↓↓↓↓この部分を書き換えて他のページで流用↓↓↓↓↓-->
<div id="content">
<div id="contentLeft">
<h2>管理画面トップ</h2>
<div class="osiraseBox">
会員の方へのお知らせ
</div>
</div>
<div id="contentRight">
{include file="menu.tpl"}
</div>
</div>
<!--↑↑↑↑↑この部分を書き換えて他のページで流用↑↑↑↑↑-->
<hr noshade size="1">
<div style="text-align:center">SHONAN BBS</div>
</body>
</html>
のソースを
・bbs/admin/templates/header.tpl
・bbs/admin/templates/menu.tpl
・bbs/admin/templates/footer.tpl
に分割する
●ユーザ追加機能を追加する
・bbs/admin/member_add_input.php
・bbs/admin/templates/member_add_input.tpl
------------------------------3H------------------------------
★管理画面作成
●ユーザ追加確認画面を作成する
・bbs/admin/member_add_confirm.php
・bbs/admin/templates/member_add_confirm.tpl
------------------------------4H------------------------------
★管理画面作成
●ユーザ追加完了画面を作成する
・bbs/admin/member_add_result.php
・bbs/admin/templates/member_add_result.php
------------------------------5H------------------------------
★管理画面作成
●ユーザー一覧ページを作成する
・bbs/admin/member_add_result.php
・bbs/admin/templates/member_add_result.tpl
●メンバーの削除
物理削除と論理削除
物理削除
データベースから直接消去
実際に消すので残らない
論理削除
削除フラグや管理テーブルなどを用いて表示させない方法
削除した扱いにする
■物理削除の場合
$id = $_GET["id"];
で渡されたデータを元にsql文を作る
・bbs/admin/member_delete.php
・bbs/admin/templates/member_delete.tpl
・データベース削除のsql文
delete from テーブル名 where 検索条件;
例)delete from member where id = 2;
------------------------------6H------------------------------
★管理画面作成
●member_add_result.phpを改変
新規登録時にadmin_ynの初期値をnにする
$sql = "INSERT INTO member
(nickname, mailaddress, password, admin_yn, created_at)
VALUES (\"".$nickname."\",\"".
$mailaddress."\",\"".
$password."\",\"".
"n\",\"".
date("Y-m-d H:i:s")."\")";
●Pager
・libsにsmarty以外のライブラリを設置する
Pager.classのダウンロードし、libsにコピー
Pager.class.phpとリネーム
・Pagerとは?
リストの数に応じてページとそのリンクを生成する
Pagerのclassをnewして使う
●ライブラリを設置する
BBS/libs/myUtil.class.php
拡張用のクラスライブラリはネットに色々ある
■三項演算子
①基本
$hoge = 1;
if($hoge == 1){
echo "OK";
}
②if,endif
$hoge = 1;
if($hoge == 1);
echo "OK";
endif;
③三項演算子
echo ($hoge == 1) ? "OK" : "" ;
-----------------------------memo------------------------------
・コマンドプロンプトからのファイル内の文字検索
C:\pleiades\xampp\htdocs\BBS>findstr /s charaset *
と入力してcharasetと誤記されてる部分を表示する
手作業でcharasetをcharsetに編集する
登録:
投稿 (Atom)