PHP 프로그래밍.. 참고자료랑 간단한 설명.. 퍼올만한 자료 있으면 강좌도..

공부 자료
php는 http://www.php.net/ 에서 한글 설명서만 받아서 읽어보면 금방 한다고 배울 필요도 없다고 말해서 힘빠지게 만드는 사람들도 있다. 그런 말 하는 사람들은 보통 다른 프로그래밍 좀 해본 사람들이고, 데이터베이스가 필수인 php는 DB를 처음 만져본다면 그렇게 쉽지는 않은 것 같다.

공부를 시작하려면 뭔가 목표가 필요하다. 돈을 벌겠다, 취업을 하겠다, 게임을 만들겠다, 내 홈페이지를 만들겠다, 등등의... 책에 나온 홈쇼핑 사이트 만들기 같은 주제는 흥미를 갖기 힘들다. 뭘 만드는 것을 목표로 할까...? 그런데 뭐 마땅한게 생각이 안난다.

블로그에 정리될 자료들
공부하다가 잘 모르는 부분들을 찾아서 메모 해 놓는다.
기억 하기 힘든 부분을 저장 해 놓는 외부 메모리 역할을 한다.
연산자 우선순위 따위 잡스러운것을 추가한 후 적당한 예제가 있으면 넣어볼 생각이다.

실습 및 개발환경
최초로 공부 시작할때는 apm(Apache, Php, Mysql)을 깔아야 하는데 리눅스 시스템에서는 설치 가이드가 널렸으니 따라만 하면 쉽게 할 수 있다. 윈도우는 더 쉽다. 근사모 라는데 들어가서 다운받아서 깔면 끝난다. 그쪽에서 패키지로 만들어놨다.
http://www.apmsetup.com/

ftp를 통해 파일을 에디트하고 서버에서 php를 실행시키는 방법도 있지만.... 하드에서 하는게 편할 것 같다. 취향의 차이겠지만...

개발 툴
ssh로 접속해서 vi로 개발해야된다고 주장하는 사람들도 있는 것 같은데...
이건 아무래도 불편하다.
그래서 eclipse webtools+php로 개발하는게 좋을 것 같다.
울트라에디트나, 에디트플러스로 소스를 짜고 apm으로 돌리는 정도...
php 개발환경은 이 정도가 고작인 것 같다.

IIS와 매니저프로그램을 활용
php서버는 웬만하면 리눅스 서버로 돌릴텐데... 밑에 포스팅처럼 IIS와 매니저프로그램으로 이렇게 하면 의도치 않은 버그가 많이 발생하지 않을까 싶다.
http://blog.paran.com/goingtot/34416025
http://www.iiskorea.net

APM설치 방법

http://linuxex.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%84%9C%EB%B2%84%EC%9A%A9-%ED%95%84%EC%88%98%EC%84%A4%EC%B9%98-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8
클릭
위에것들을 먼저 한 다음에

apm이 리눅스 기본 설치할 때 다 설치가 되긴 하는데 작동이 잘 안된다.
뭐 어떻게 하는건지 더 어렵다. 그래서 수동으로 설치하는게 더 편하다.

rpm -qa httpd php mysql
깔려있는것을 확인하고

yum remove -y httpd php mysql
지운다.

그리고 수동으로 다시 깔기 위해 다운로드
cd /usr/local/src
mkdir apm
cd apm

www.apache.org ( httpd라고 된거 안정화 버전 다운로드 )
www.mysql.net ( 무료안정화버전 다운로드 )
www.php.net ( 안정화 버전 다운로드 )

wget 명령으로 다운로드
ls -al로 파일명을 확인 후
tar -zxvf 압축풀기

pwd
cd /usr/local/src/(mysql 압축푼폴더)

useradd -M -s /bin/false mysql (mysql 실행할 계정 생성)

./configure --prefix=/usr/local/server/mysql --with-charset=utf8 --with-extra-charsets=all (./configure \를 써넣으면 분할입력 가능, ./configure --help 가능 )

termcap 라이브러리 없다고 컴파일이 안됨..
configure: error: No curses/termcap library found
망할 rpm -qa로 검색하면 깔려있다.
termcap , libtermcap, libtermcap-devel
이 세개가 깔려있어야된다. 나는 세번째가 안 깔려있었다. centos 5.4
yum install libtermcap-devel ( 설치 )

make && make install (make와 make install 실행)

환경설정 시작
cp support-files/my-huge.cnf /etc/my.cnf (my-small, my-medium, my-large, my-huge 중에 메모리에 따라 선택 64m, 64~256m, 512m, 1g~)

db생성 및 디렉토리 권한

cd /usr/local/server/mysql (설치경로)
chown -R mysql .
chgrp -R mysql .
bin/mysql_install_db --user=mysql
chown -R root .
chown -R mysql var

cd /usr/local/server/mysql (설치경로)
(안되면 ./bin/mysql_install_db)
groupadd mysql
useradd -g mysql mysql
chown -R root /usr/local/mysql
chown -R mysql /usr/local/mysql/data
chgrp -R mysql /usr/local/mysql
chown -R root /usr/local/mysql/bin
cd /usr/local/mysql
./bin/mysqld_safe --user=root &

ps -ef | grep mysql (mysql설치를 확인)

vi ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/server/mysql/bin (으로 수정)

source ~/.bash_profile (변경한 환경변수 재시작 전에 바로 적용)

cp share/mysql/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list | grep mysqld

mysql 실행 접속
/etc/init.d/mysqld start
mysql
   exit
mysqladmin -u root password (암호)
mysql (에러남.. 거부)
mysql -u root -p (암호 입력)

APACHE설치
cd httpd폴더
./configure \
--prefix=/usr/local/server/apache \
--enable-mods-shared=all \
--enable-so \
--enable-rewrite (\는 줄바꿔서 치게 도와줌 ./configure --prefix=/usr/local/server/apache --enable-mods-shared=all --enable-so --enable-rewrite )

make && make install
pwd (현재폴더확인 httpd 압축파일 폴더)
cp /usr/local/server/apache/bin/apachectl /etc/init.d/httpd

chkconfig --add httpd ( 자동실행 등록 안되면 밑에거 따라감)

vi /etc/init.d/httpd
2째줄부터 등록
#chkconfig: 2345 90 90
#description: init file for Apache server daemon
#processname: /usr/local/server/apache/bin/apachectl
#config: /usr/local/server/apache/conf/httpd.conf
#pidfile: /usr/local/server/apache/logs/httpd.pid

chkconfig --add httpd
chkconfig --list | grep httpd

vi /usr/local/server/apache/conf/httpd.conf
<IfModule !mpm_netware_module>
User nobody (nobody로 변경)
Group nobody
</IdModule>
ServerName 127.0.0.1(서버가 있으면 서버명)

/etc/init.d/httpd start

vi /etc/sysconfig/iptables (포트 개방 해 놨으면 넘어가면 됨)
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCETP
/etc/init.d/iptables restart

PHP설치
(잘못쓴게 아니고 이게 다 옵션이다)
./configure \
--prefix=/usr/local/server/php \
--with-apxs2=/usr/local/server/apache/bin/apxs \
--with-mysql=/usr/local/server/mysql \
--with-config-file-path=/usr/local/server/apache/conf \
--disable-debug \
--enable-safe-mode \
--enable-track-vars \
--enable-sockets \
--with-mod_charset \
--with-charset=utf8 \
--with-xml \
--with-language=korean \
--enable-mailparse \
--enable-calender \
--enable-sysvsem=yes \
--enable-sysvshm=yes \
--enable-ftp \
--enable-magic-quotes \
--enable-gd-native-ttf \
--enable-url-includes \
--enable-trans-id \
--enable-illine-optimization \
--enable-bcmath \
--with-jpeg \
--with-png \
--with-zlib \
--with-jpeg-dir=/usr \
--with-png-dir=/usr/lib \
--with-freetype-dir=/usr \
--with-libxml-dir=/usr \
--enable-exif \
--with-gd \
--with-ttf \
--with-gettext \
--enable-sigchild \
--enable-mbstring

libxml2-config 인가 때문에 에러가 난다.
configure: error: xml2-config not found. Please check your libxml2 installation.
(xm12라고 검색하는 경우도 있겠지...xm12-config, xm12,xm12-devel)
이것들을 최신으로 설치
yum install libxmli libxml2 libxml-devel libxml2-devel
설치된건 업데이트도 되고 알아서 된다.

make && make install

설치폴더 /usr/local/sever/php
환경설정 /usr/local/server/apache/conf

cp php.ini-dist /usr/local/server/apache/conf/php.ini

vi /usr/local/server/apache/conf/httpd.conf

<IfModule dir_module>
    DirectoryIndex index.html index.htm index.php
</IfModule>
<IfModule mime_module>
   AddType application/x-httpd-php .php
   AddType application/x-httpd-php-source .phps
</IfModule>

/etc/init.d/httpd restart

chcon -t texrel_shlib_t
/usr/local/server/apache/modules/libphp5.so

php의 정보를 보여주는 함수
vi /usr/local/server/apache/htdocs/phpinfo.php
<? phpinfo(); ?>
   ecs :wq

웹페이지로 사용할 때 설정파일을 손봐서 htdocs폴더를 이동하면 된다.

vi /usr/local/server/apache/conf/httpd.conf

extra/httpd-userdir.conf (일반 사용자 홈디렉토리 설정)
extra/httpd-vhosts.conf (여러개 계정 쓸때)

<VirtualHost 000.000.000.000:80> (도메인이 아닌 ip를 쓰는칸)
   ServerName first.naver.com
   DocumentRoot /usr/local/server/apache/htdocs
</VirtualHost>
<VirtuallHost 000.000.000.111:80>
   ServerName second.naver.com
   DocumentRoot /home/second/public_html
</VirtualHost>

이외에는 보면 알기 쉽게 돼 있다 패스