유튜브에서 방송한 자료입니다. https://www.youtube.com/watch?v=pcQeIW5v8S4
개발 이야기 유튜브 리스트는 다음과 같습니다: https://www.youtube.com/playlist?list=PLdntWJk2tJPKvRB0mSqC5tyKUv7HFtcqg
유튜브에서 방송한 자료입니다. https://www.youtube.com/watch?v=pcQeIW5v8S4
개발 이야기 유튜브 리스트는 다음과 같습니다: https://www.youtube.com/playlist?list=PLdntWJk2tJPKvRB0mSqC5tyKUv7HFtcqg
kimsQ Rb vs Wordpress 를 브라우저상에서 로드타임 비교와 서버내에서의 실행속도를 기준으로 성능 비교를 해보았습니다. 객관적으로 동일한 환경에서 정량적인 테스트가 될 수 있도록 노력 했습니다. 산출된 결과는 킴스큐가 워드프레스에 비해 로드타임에서 3.6~5배 빠른 것으로 나왔으며, 서버내 스크립트 실행속도에서는 11~16배 빠르다는 결과를 얻을 수 있었습니다. 본 테스트를 위해 사이트를 제공해 주신 하비타임즈(hobbytimes.co.kr/) 킴스오빠(이영화)님께 감사 드립니다. - 레드블럭 킴스큐 운영팀 권기택
내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기소리 강
H3 2012 에서 발표했던 자료입니다.
"내 컴에선 잘되던데?" 개발자들이 로컬에서 개발 후 서버에 Deploy 했을 때 가장 많이 하는 말 중 하나입니다.
실제 개발환경과 프로덕션 환경의 차이는 다양한 오류들을 만들어 내는 주범입니다. 이를 위해 로컬 가상 머신을 손쉽게 관리하여 서버와 똑같은 개발환경을 만들어주는 Vagrant 를 소개합니다.
또한 DevOps 에서 가장 많이 얘기되는 Chef 를 이용하여 자신의 개발환경에서도 Configuration Management 를 하는 방법을 설명합니다.
* 혼자 공부하려고 만든 자료이기 때문에 정확하지 않는 내용이나 오류가 있을 수 있습니다. 잘못된 점은 언제든지 고쳐주시면 배우겠습니다.
* phpDocumentor란?
phpDocumentor는 제작한 프로젝트에 대해서 문서화 해주는 도구를 말한다. 공식 홈페이지에서는 'PHP에 대한 세계 표준 자동 문서 도구(phpDocumentor is the world standard auto-documentation tool for PHP.)'라고 설명하고 있다.
우선은 phpDocumentor가 왜 수면위로 떠오르게 되었는지에 대해서 짚고 넘어가야 할 것 같다. PHP는 본래 컴파일 없이 라인 단위로 처리하는 스크립트 언어이다. 아무래도 스크립트 언어는 라인별 처리라는 개념 덕분인지 진입장벽이 낮아 독학하기에 좋은 언어였다. 그로 인해 사용률이 많아지고 인기가 많아지는 동시에 스크립트 언어에 대한 약점에 대해서 생각하게 되었던 것 같다. PHP 5로 넘어가면서 본격적으로 객체에 대한 개념이 강화되고, 이를 이용한 다양한 프레임워크가 개발되고 있다. 스크립트 언어에 대한 약점을 컴파일 언어에서 그 해답을 찾고자 했던 것 같다.
컴파일 언어의 대표적인 사례인 JAVA에서는 이미 javadoc이라는 문서화 도구가 존재하고 있었다. 아마도 phpDocumentor는 javadoc의 php 버전이었으리라. 사용 방법도 javadoc과 크게 다르지 않다. php도 객체지향 개념이 나오면서 어떤 정형화된 패턴이 나오는 것이 가정해졌기 때문에 그 공통적인 부분을 문서를 만들 수 있게 되었다.
* 주석
주석은 자신을 포함하여 프로젝트에 참여하는 사람들에게 쉽게 알아볼 수 있도록 하는 역할을 해준다. 주석을 최소화하는 것을 장려하는 사람들도 있긴 하지만, 프로젝트가 커질 수록 작은 코드가 어떤 역할을 할 수 있는지 모를 수도 있다. 그때 작업자는 그 코드에 대해서 설명글을 달아줄 수 있다. 주석은 사람이 알아볼 수 있게 쓰는 일종이 메모의 역할을 한다.
* 마무리
phpDocumentor로 대단한 것을 할 수 있는 것은 아니다. 어쩌면 이 도구로 할 수 있는 것은 자료보관일 뿐일 것이다.
사실 Phpdoc이 많은 곳에서 쓰이고 있지는 않다. 대부분의 개발자들은 코드를 보면 쉽게 알 수 있을 것이라고 말하거나 귀찮아 한다. 그만큼 손도 많이 가고 굳이 해야 하나 싶기도 하는 작업이 바로 이 작업이다. 프로젝트가 개발자에 종속되는 것은 매우 좋지 않은 현상이며, 많은 개발자들이 수긍할 수 있는 코드가 좋은 프로젝트라고 생각한다. 그들이 쉽게 프로젝트의 유지보수에 투입되려면 한눈에 정리되어있는 문서가 필요한데 문서의 유지보수는 생각보다 어렵다. 그래서 이 도구가 문서를 작성하는 데에 중요한 역할을 하는 것이다.
6. 몇 가지 힌트
• LAMP 설치 과정에서 단계별로 점검해야 한다!
• 어디서 잘못되었는지 초기에 인지할 필요가 있음
• 접근 허가에 특히 주의! /var/www/html
• 참고: https://chmodcommand.com/chmod-2775/
• WP salt에 주의
• https://kinsta.com/knowledgebase/wordpress-salts/
• 로그인할 때 브라우저 쿠키에 안전하게 저장할 목적으로 사용하는 키
• 플러그인으로 처리할 수도 있지만… 정석이니까 wp-config.php에서 수작
업으로 편집
7. 스크립트(1)
$ sudo yum update -y
$ sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
$ sudo yum install -y httpd mariadb-server
$ sudo systemctl start httpd
$ sudo systemctl enable httpd
$ sudo systemctl is-enabled httpd
1단계_ LAMP 설치
$ curl localhost
$ sudo usermod –a –G apache ec2-user
$ exit # 다시 로그인 한다
$ groups
$ sudo chown –R ec2-user:apache /var/www
$ sudo chmod 2775 /var/www && find /var/www –type d –exec sudo chmod 2775 {} ;
$ find /var/www –type f –exec sudo chmod 0664 {} ;
$ cd /var/www
$ echo “<?php phpinfo(); ?>” > /var/www/html/phpinfo.php
$ curl localhost/phpinfo.php
$ rm /var/www/html/phpinfo.php
2단계_ 그룹 추가 후 아파치 디렉토리 접근 권한 변경
8. 스크립트(2)
$ sudo systemctl start mariadb
$ sudo mysql_secure_installation
$ sudo systemctl enable mariadb
$ sudo yum install php-mbstring -y
$ sudo systemctl restart httpd
$ sudo systemctl restart php-fpm
$ cd /var/www/html
$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
$ mkdir phpMyAdmin && tar xvpfz phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
$ rm phpMyAdmin-latest-all-languages.tar.gz
$ sudo systemctl start mariadb
$ curl localhost/phpMyAdmin
3단계_ MariaDB 설정, phpMyAdmin 설치
$ cd
$ mkdir src
$ cd src
$ wget https://wordpress.org/latest.tar.gz
$ tar xvpfz latest.tar.gz
$ mysql -u root -p
mysql> CREATE USER ‘wpuser'@'localhost' IDENTIFIED BY 'your_strong_password';
mysql> CREATE DATABASE `wpdb`;
mysql> GRANT ALL PRIVILEGES ON `wpdb`.* TO ‘wpuser’@’localhost’;
mysql> FLUSH PRIVILEGES;
mysql> exit
4단계_ WP 설치
9. 스크립트(3)
$ cd wordpress/
$ cp wp-config-sample.php wp-config.php
$ wget --output-document=salt.txt https://api.wordpress.org/secret-key/1.1/salt/
$ vi wp-config.php
define('DB_NAME’, wpdb'); --> 수정
define('DB_USER', ‘wpuser'); --> 수정
define('DB_PASSWORD', 'your_strong_password'); --> 수정
<<<<<<<<<<<<<<< 앞서 wget으로 얻은 salt.txt 내용으로 변경한다 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
define( 'AUTH_KEY', 'put your unique phrase here' );
define( 'SECURE_AUTH_KEY', 'put your unique phrase here' );
define( 'LOGGED_IN_KEY', 'put your unique phrase here' );
define( 'NONCE_KEY', 'put your unique phrase here' );
define( 'AUTH_SALT', 'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT', 'put your unique phrase here' );
define( 'NONCE_SALT', 'put your unique phrase here' );
5단계_ WP 설치
$ cd ..
$ cp -a wordpress/ /var/www/html/
$ sudo vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html"> 영역에서 다음을 수정
AllowOverride None → ALL
$ sudo systemctl restart httpd
6단계_ WP 설정