반응형



참고 싸이트 (https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-14-04)


우분투 14.04 에서 LAMP 를 설치해 봅니다.


1. 아파치 설치하기


sudo apt-get update
sudo apt-get install apache2


정상적으로 아파치가 설치되면 브라우저에서 확인 해봅니다.

http://your_server_IP_address
예)http://192.168.1.111

Ubuntu 14.04 Apache default


확인 하고나서 정상적으로 위의 페이지가 보인다면 아파치 설치는 성공입니다.

외부 아이피 설정이의나, 확인 방법은 다음에 다루기로 하고, 다음 단계로 진행합니다.


2. MySQL 설치하기


sudo apt-get install mysql-server php5-mysql


위의 명령어 실행 후 root user 암호 설정이 중간에 나옵니다. 설정해 주시면 됩니다.

설치가 완료 되면, 어디에 데이터를 넣어야 할지 알려줘야 합니다. 디렉토리 스트럭처 설치 명령어 입니다.


sudo mysql_install_db


이후, 보안 설치를 해줍니다.


sudo mysql_secure_installation


처음엔 NO 를 하여 root-user 암호 설정을 피합니다. 그 뒤론 엔터를 눌러 자동 설정을 진행합니다.


3. PHP 설치


sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt


위의 명령어를 실행하여 php 를 설치합니다. 그리고 나서 아래 아파치 설정 파일을 열어 줍니다.


sudo nano /etc/apache2/mods-enabled/dir.conf


<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>


열어보면 php 파일이 뒤에 있을텐데, 그 파일 이름을 맨 앞에 지정해 줍니다.


<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>


그리고 저장 하면 됩니다. Ctrl-X

저장 후 아파치 재시작 해줍니다.


sudo service apache2 restart


4. PHP 테스트 하기


설치가 완료 된 후 php 설치가 잘 되었는지 확인해 봅니다.


sudo nano /var/www/html/info.php


명령어를 치면 빈 파일이 만들어집니다. 이름은 info.php 파일입니다. 빈파일 안에 아래 php 명령어를 넣어 줍니다.


<?php
phpinfo();
?>


그런 뒤 브라우저에서 확인해 봅니다.


http://your_server_IP_address/info.php


화면이 잘 나오면 성공입니다.


Ubuntu 14.04 default PHP info


성공적으로 우분투 14.04 에서 LAMP 설정을 해봤습니다.


반응형
반응형

카페 홈페이지를 만들면서 겪은 경험 중 하나는 데이터 테이블의 구조를 변경해야 하는 일이 있어서 몇자 적어보기로 했다.
제품 등록 부분이였는데, 이부분은 요구사항을 듣고, 그닥 어렵지 않게 구현되었다.
입력하고, 보여주고 업데이트 하고 지우는 정도인 간단하게 명령어 하나로 끝내버렸다.

그러나.. ㅡ,.ㅡa

일요일날 카페 친구와 이야기를 나누던 중, 제품(products) 관련 부분이 상당히 중요한 부분에서 잘못 이해되고 만들어 졌다는걸 알게 되었다.

초기에 받았던 요구 사항 중

1. 고객은 6개월, 12개월 단위로 한꺼번에 주문을 할 수 있어야 한다. (가격은 관리자가 직접 입력한다.)
    (이해) 각각의 커피를 6개월치, 12개월 치를 한꺼번에 주문한다.
2. 고객은 "이달의 커피" 를 커피 리스트 상단에서 볼 수 있어야 한다.
   (이해) 이달의 커피로 선정된 커피가 따로 상단에 올라간다.
3. 고객은 "샘플러" 혹은 프로모션 으로 관리되는 커피를 구입 할 수 있어야 한다.
   (이해) 따로 이벤트 커피세일로 관리하여 제품리스트와는 별도로 관리한다.

 이야기를 나누던 중, 위의 요구사항 부분이 틀렸다는걸 알았다.

1. 고객은 6개월 제품을 구입하면, 6개월 간 MD 추천의 다른 커피를 매달 받을 수 있어야 한다.
2. 고객은 커피 리스트 상단에 보이는 (MD 추천된) "이달의 커피" 로 받을 커피를 확인 할 수 있다.
3. 샘플러 커피나 프로모션 커피는 이벤트 커피 세일이 아닌 하나의 제품으로 팔려야 한다.

음.. 이런 이런 일이 생기다니.. 커헐..
서로 함께 이야기 하면서 같은 부분을 이정도로 다르게 이해 전달을 잘못 받을 수 있다는거에 충격을 먹었다.
(내 경험이 그닥 많지 않으므로.. ㅋㅋ) 여하튼, 그럼 수정에 들어가야 한다.

그럼 틀리게 만들어진 products 테이블을 보기로 하자. (200903230948203948_create_products.rb)

위의 테이블을 보면, 정말 성의 없이 만들어 진걸 알 수 있다. ㅡ,.ㅡ (챙피해..)
뭐 여하튼 챙피 하지만 잘못된 테이블이니 잘 만들어야 겠다.
(200903230948203948_create_products.rb) 파일 내 붉은 글씨 부분들은 이제 필요없는 부분들이다.
그리고 파란색 부분은 새로 추가 되어야 할 컬럼들이다.

products 테이블 외에도 필요한 새로운 테이블이 2개 생겼다.

1. productorigin: 나라와 농장, 그리고 제품 아이디를 가지고 있는 테이블
2. price : 제품 아이디 당 각각의 무게에 대한 가격을 들고 있는 테이블

그리고 공통 코드 테이블내에 product_type 이 추가 되게 되었다. : Normail, Sampler, CoffeeMonthly

자.. 그럼 서로의 관계는..

1. product has many product origins
2. product origins has one product
3. proudct has many price
4. price has one product
5. product origin has many nationals farms
6. nationals, farms has many product origins


자 그럼.. alter table을 해보기로 하자.

$/ruby script/generate migration change_product

위의 명령어를 쳐서 db/migrate/2009023948029_change_product.rb 파일을 만든 뒤

class ChangeProduct < ActiveRecord::Migration
  def self.up
 remove_column :products, :national_id, :farm_id, :level, :image_url, :p200,:p500, :p1000,:p6m200,:p6m1000, :p12m200, :p12m500, :p12m1000
 add_column :products, :name, :string
 add_column :products, :product_type, :string

  end

  def self.down
 remove_column :products, :name, :product_type
  end
end

up 과 down 쪽에 파란색 부분을 넣어준다. 솔직히 원상복귀를 위해서는 self.up 내에 있는 remove_column 에 있는 모든 컬럼을 self.down 내에 add_column 으로 만들어 줘야 한다. 하지만 이전으로 복귀하지 않을 생각에 새로이 추가된 컬럼 2개만 없애버리기로 했다.

자 이제 rake db:migrate 을 하게되면

==  ChangeProduct: migrating ==================================================
-- remove_column(:products, :national_id, :farm_id, :level, :image_url, :p200, :p500, :p1000, :p6m200, :p6m1000, :p12m200, :p12m500, :p12m1000)
   -> 2.9486s
-- add_column(:products, :name, :string)
   -> 0.2711s
-- add_column(:products, :product_type, :string)
   -> 0.2248s
==  ChangeProduct: migrated (3.4452s) =========================================

두둥~ 테이블이 변경되었다.
자 이제 모델 productorigin 과 price 2개를 만들어 필요한 데이터들을 저장 할 수 있도록 바꾸는 작업만 남았다.
 


 

반응형

+ Recent posts