[코딩온] 장고 강좌 4(아파치,php,sql,LAMP)

TonyHan·2021년 1월 8일
0

서버구축

구축 방법
1. 본인의 컴퓨터를 직접 서버로 구축하는 방법(서버 호스팅) - 비싸지만 제약이 없음
2. 일정 요금을 내고 외부 서버를 임대해 사용하는 방법(웹 호스팅) - 싸지만 제약이 많음
3. 클라우드 서버 - 루트 권한을 가진 서버 하나를 구축하는 서비스
aws, 네이버 클라우드 플랫폼

오늘은 이전 시간에 진도를 많이 나가서 온라인 강의로 실습을 하는데

안내원으로 나온 안내양 이미지가 너무 커엽다...

항상 그렇지만 가장 어려운건 초기설정이다...
일단 실습으로 네이버 클라우드 플랫폼을 쓴다고 한다.


콘솔 클릭


플랫폼 창이 나왔다.

Product & Services > Server 클릭


하고서 파란 버튼을 눌러주자


서버는 리눅스가 좋다고 한다. 그중에서도 우분투를 쓰는게 좋다고 한다. 그렇구나...

zone은 이 서버를 어디에 위치
Micro 타입의 서버에 지원하는 HDD
서버 타입으로는 1년간 무료로 이용가능한 Micro를 선택
서버이름은 알아서

붕어빵 서버를 만들자


이번에는 인증키를 만들자. 자기가 원하는데로 하는거니 해주자. 나는 여기만 다른 키와 다른 비밀번호로 설정해서 .pem파일을 제작했다.


ACG설정, 내가 만든 클라우드 서버의 어떤 포트를 개방할지 등을 설정하는 방화벽. 기능 default 사용


하면 깡통 서버가 만들어진다. 그래서 얘 주소를 넣어주자

이게 또 무료가 아니다. (날ㄱㄷ... ) 그래서 10만 크레딧이 끝나는 3개월이 지난 시점부터는 자동 결제를 해제해 주자

여기에서 적용 서버를 우리가 방금 만든 서버로 설정해주자


이제는 putty를 설치하라고 한다. 하지만 이미 학교에서 많이 당해보아서 putty보다는 Xterm이 낫다는 걸 안다.(내가 웹은 몰라도 어셈블리는 할 줄 알어...) 그래서 MobaXterm설치.


했는데 굉장히 막힌다. 제길...

패스워드 문제인거 같아서 패스원드를 알아보러 다시 네이버로 왔다.


찾았으니 다시 접속해 본다.

하다가 막혀서 그냥 putty로 왔다...

passwd로 비밀번호를 변경하자

그다음은 파일질라를 설치하란다. 아마 파일을 서버로 옮기려고 하나보다. 파일질라 클라이언트를 받자

설치중에 Xterm을 다시 이용했는데 들어가 졌다... 역시 사람일은 모르나 보다

하는중에 파일질라가 설치가 다 되어서 들어왔다.


서버 설정

이번에는 Apache, PHP, MySQL등을 설치한다고 한다.

apt-get install apache2

아파치는 웹브라우저를 통해 클라우드 서버에 접속하게 해주는 서버 프로그램이다.

하지만 이런다고 바로 웹브라우저에 접속되지 않는다. 왜냐하면 80번 포트를 개방하지 않아서이다.

네이버에서 내 서버로 가고, 서버를 누르면 상세정보가 뜬다. 여기에서 ACG라는 부분의 화살표를 클릭하자.


TCP란 IP주소를 통한 접속을 허용하겠다는 의미
0.0.0.0/0 은 모든 IP주소로부터의 접속을 허용하겠다는 의미이다.

페이지를 변경하고 싶으면 파일질라로 /var/www/html/의 index.html 파이을 변경하면 된다.

apt-get install mysql-server

여기에서 비밀번호를 설정하자

apt-get install php libapache2-mod-php php-mcrypt php-mysql

이렇게 리눅스에 설치한 것을 LAMP라고 부른다.(Linux, Apache, MySQL, PHP)

이제 index.html보다 index.php가 우선 실행되도록 해보자
vi /etc/apache2/mods-enabled/dir.conf

vi /etc/php/7.0/apache2/php.ini

service apache2 restart

apt-get update
apt-get install phpmyadmin php-mbstring php-gettex

phpmyadmin은 웹을 통해 MySQL에 접속해서 손쉽게 데이터베이스를 관리할 수 있는 프로그램이다.

질문이 뜰텐데
webserver로는 apache2 를 선택

하면 개 오래 걸린텐데
이럴때는 주식을 보고 있자

그러면 마음이 편-안 해진다.



비밀번호도 설정해주자


진짜 오래 걸렸다.
그리고 다음 세개의 명령어를 입력하자

phpenmod mcrypt
phpenmod mbstring
service apache2 restart

마지막으로 웹에서 phpmyadmoin에 접속하기 위한 바로가기를 만들자

ln -s /usr/share/phpmyadmin/ /var/www/html/phpmyadmin
이걸 먼저 입력하고

공인IP/phpmyadmin을 브라우저에 검색하면 다음의 창이 뜬다.

이제 다 된거다. 로그인해보고 잘되면 성공한거다.


ip와 admin

ip주소는 그 웹페이지를 접속하기 위한 주소로 0000.0000.0000.0000 으로 구성된다.
우리가 핸드폰으로 접속을 시도할때 사용하는 인터넷 회사 혹은 통신사는 유동ip주소를 사용한다. 반대로 서버는 고정ip주소를 사용한다. 하지만 ip를 왜울 수 없기 때문에 우리는 domain을 사용한다. 특정 domain을 이용하면 DNS(domain name server)라는 곳에서 domain주소에 맞는 ip주소를 반환해서 접속한다.

그래서 도메인을 구매할 수 있는 사이트를 찾아가서 검색하고 연결해보자

카페24 도메인에서 도메인을 검색하고 구매하자


네이버 서버>도메인


레코드 값에 내 공인IP를 입력하자
한번은 레코드 명에 아무것도 입력하지 않은 채 추가하고 한번은 www을 입력한 채 추가하자

다시 cafe24에 이 도인과 연결할 공인 IP 주소가 궁금하다면 네이버 클라우드 플랫폼 DNS에 물어봐라라고 입력해야 한다.

cafe24에서 나의서비스관리, 도메인관리를 차례로 입력
구입한 도메인을 선택하고 네임서버 변경을 클릭


네임서버 변경 팝업창이 나오면 왼쪽의 메뉴에서 다른 네임서버를 선택한뒤, 아까 네이버 클라우드 플랫폼에서 제공했던 DNS 정보를 입력

용어들

ssh(secure shell) : 원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜, 기존에 쓰던 telnet은 보안상 위험해서 ssh의 보안쉘을 사용
포트 : ip주소에 접속할 수 있도록 서버에서 열어놓은 번호들, 특정기능으로 정의된 번호

  • 80 : 홈페이지 접속
  • 443 : 보안 홈페이지 접속
  • 22 : ssh
    ACG(Access Control Group) : 내 서버에 열어놓을 포트를 설정한다.

ip : internet protocol - 인터넷에 연결되어 있는 모든 자치들에 부여되는 고유한 주소

phpmyadmin : 웹을 통해 MySQL에 접속해서 손쉽게 데이터베이스를 관리할 수 있는 프로그램이다.


리눅스 다루기

  1. 리눅스 명령어
    pwd : 현재 위치
    ls : 목록 (ls -al)
    rm : 파일 삭제 (rm 파일명)
    cd : 위치 변경(cd .. cd / cd ~)
    mv
    mkdir
    rm
    touch
    cat
    head
    tail
    find

  2. vi
    vi는 메모장이다.

vi 파일명

i : 입력 상태
ESC : 명령어 입력

  • :q 종료
  • :w 저장
  • :wq 저장종료
  • :/내용 같은 문자 찾기
  • :! 걍해라

사람에게 어려운 단어와 긴 문장을 쓰면 배우기 어렵다.
개발자는 계속 무엇이 어려운지를 분석해야 한다.


phpMyAdmin


phpMyAdmin 에 들어왔다.


여기에서 데이터베이스를 볼 수 있다.

mysql
sql- 쿼리문
레코드를 삽입 (쓰기)
레코드를 불러오기 (읽기)
레코드를 수정
레코드를 삭제
CRUD
테이블 생성
CREATE TABLE `고객` (
  `순번` INT NOT NULL AUTO_INCREMENT,
  `이름` VARCHAR(5) NOT NULL,
  `주소` VARCHAR(30) DEFAULT NULL,
  PRIMARY KEY (`순번`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
INSERT INTO 고객(이름, 주소) VALUES('홍길동', '서울시');
SELECT 이름, 주소 FROM 고객 WHERE 주소 = 서울시;
UPDATE 고객 SET 이름 = 홍길동 WHERE 순번 = 1;
DELETE FROM 고객 WHERE 순번 = 1;
mysql
레코드 삽입 insert문
레코드 검색 select문
레코드 수정 update문
레코드 삭제 delete문
sbaacademy.com (쇼핑몰)
데이터베이스(DB) - sbaacademy
테이블
레코드 -

장고 서버, 데이터베이스

새로 서버를 만들어서 사용해보자
우선 python3 설치
apt-get update 를 우선 입력하고 다음을 순서대로 입력하자

장고는 프로젝트를 만들고 앱을 만드는 형태로 되어 있다.

그래서 django-admin이라고 치면 위와 같이 나온다.

그래서 프로제트를 만들려면
django-admin startproject 프로젝트명

이제 프로젝트로 드어가서 구조를 보자

apt install tree
tree -d

https://docs.djangoproject.com/ko/3.1/
이제부터는 장고문서를 보고 제작하자

이제 장고를 운영해보자

python3 manage.py runserver 0.0.0.0:8000 &

이렇게 하면 서버를 계속 유지 할 수 있다.

위와 같이 장고를 작동시켰다. 모든 아이피는 8000번 포트로 들어올 수 있다.


그리고 모든 ip가 들어올 수 있도록 settings 파일을 건들였다.

결과적으로 우리가 원했던 장고 서버를 확인할 수 있었다.

서버안에 있는것을 봐보자 dbsqlite3라는 db가 존재한다.

db를 건들여보자
pip install sqlite3
sqlite3 db.sqlite3

sqlite3 모드에서
.q : 탈출

우선 앱들을 만들자
인증을 만들자 django-admin startapp auths
lms를 만들자 django-admin startapp lms
payment를 만들자 django-admin startapp payments



프로젝트가 있고 그 아래에 앱이 있는 구조이다.

장고에서는 ORM을 사용한다. ORM은 sql을 사용하지 않고 명령어만으로 데이터베이스를 사용하는 것이다.



앱을 등록하자

vi auth/models.py를 쳐서 우선 파일을 수정하자


모델을 만들자 최대 문자 길이는 30이고 보여지는 이름은 name, pass이다.

이제 데이터를 데이터베이스에 넣어보자
python3 manage.py makemigrations
python3 manage.py migrate


4:52

마지막으로 웹에서도 db를 관리하기 위해서 admin 페이지를 제작하자
python3 manage.py createsuperuser
Username
email
password

이제 이렇게 만든 서버에 접속해서 뒤에 /admin을 붙여주면 우리가 원하는 관리자 페이지로 이동할 수 있다.

ip주소:포트/admin


해서 들어온 것을 확인할 수 있다.


그런데 막상 가보면 아무것도 없다. 그래서 유저를 추가해 주자

vi auths/admin.py



다시 관리자 페이지로 가보니 유저를 추가할 수 있게 되었다.

profile
신촌거지출신개발자(시리즈 부분에 목차가 나옵니다.)

0개의 댓글