안녕하세요 Lovefield 입니다.
오늘은 블로그를 개편하기 위해 사용했던 vagrant 설정 방법을 정리해 보았습니다.
---
vagrant 버전 : 2.0.2
Oracle VM VirtualBox 버전 : 5.2.6 r120293 (Qt 5.6.2)
사용한 box : ubuntu/trusty64
---
그리고 리눅스 내부에서는 모두 관리자 모드로 사용했기에 기본적으로 su를 실행해주시기 바랍니다.
관리자의 기본 비밀번호는 vagrant입니다.
1. box 다운로드
먼저 box를 기반으로 설정을 시작했기 때문에 vagrant box를 다운로드 받아줍니다.
1
vagrant box add ubuntu/trusty64설치 후에는 vagrant box list로 확인이 가능합니다.
2. box 설치 및 vagrant init
box가 있으니 이제 설치를 시작합니다.
원하는 폴더에서 혹은 폴더를 생성하신 후, PowerShell을 사용합니다.
해당 경로로 이동 후 vagrant init를 실행해줍니다.
자 그러면 Vagrantfile 이 생성되는데요.
이 녀석을 열어서 아랫부분과 같이 설정해줍니다.
Plain Text
1
config.vm.box = "ubuntu/trusty64"사용할 box를 저희가 다운로드한 box로 변경한 겁니다.
그다음 다음 명령어를 입력해줍니다.
1
vagrant up --provider virtualbox이 명령어는 vagrant 실행이 처음일 경우(설치가 안되어있으면) 설치를 진행하고 구동이 되며, 설치되어있다면 구동만 합니다.
설치 후에는 vagrant ssh로 접근이 가능하며 기본 비밀번호는 vagrant 입니다.
버전에 따라서 비밀번호 없이 접근할 수 있기도 합니다.
3. 개인 패키지 어카이브 설치
php 는 ubuntu에서 공식적으로 지원하는 버전이 있습니다.
7.2는 아직 미지원이라 개인 패키지 어카이브를 끌어다 설치할 수 있습니다.
1
add-apt-repository ppa:ondrej/php개인 저장소를 추가했으니 이제 업데이트와 업그레이드가 필요합니다.
1
2
apt-get update
apt-get upgrade만약 위의 두 가지를 실행하는 데 오류가 낫다면 처음부터 다시 해주셔야 합니다.
오류가 조금이라도 나면 나중에 실행이 안되더라고요.
4. php, mysql, nginx 다운로드
저는 한 번에 설치해놓고 각각 설정 후에 화면을 확인했던 터라, 이렇게 적었습니다.
하나만 설치하고 설정하셔도 무방합니다. ㅎㅎ
1
2
3
4
apt-get install nginx //nginx 설치
apt-get install mysql-server mysql-client //mysql 설치
apt-get install php7.2 php7.2-common php7.2-cli php7.2-fpm //php7.2 설치
mysql은 설치할 때 비밀번호를 물어보는데요. 저는 편의상 vagrant로 했습니다.
모두 설치가 되었다면 Vagrantfile을 열어 다음과 같이 수정해줍니다.
1
2
3
4
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder "./index", "/usr/share/nginx/html"포워딩 포트를 여는 것인데요 이제 localhost:8080이나 192.168.33.10으로 가상 서버에 접근할 수있습니다.
제일 하단의 줄은 가상 서버와 공유할 폴더의 주소를 적습니다.
저는 편의상 현재 폴더의 index 폴더를 바라보게 했습니다.
설정 후에는 vagrant를 재시작해줍시다.
1
2
vagrant reload
5. 타임 존 설정
이제 리눅스 시스템과 php의 타임 존을 설정해줄 차례입니다.
1
dpkg-reconfigure tzdata를 입력해 아시아 - 서울 을 선택해주시면 됩니다.
( 관리자 모드 빼먹으시면 안 돼요~ )
php는 2개의 파일을 수정해주셔야 하는데요.
1
2
vi /etc/php/7.2/fpm/php.ini
vi /etc/php/7.2/cli/php.ini이 두 파일을 여신후 에 page down 키를 한참 누르다 보면 나오는 date.timezone 에 Asia/Seoul 삽입해주시면 됩니다.
그다음 다음 명령어로 php를 재시작해줍니다.
1
/etc/init.d/php7.2-fpm restart6. Nginx 설정
자 이제 Nginx 를 설정할 차례입니다.
vi /etc/nginx/sites-available/default로 파일을 열어서 다음과 같이 수정해 줍니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm index.php;
server_name localhost;
# location / {
# try_files $uri $uri/ =404;
# }
location ~ [^/]\.php(/|$){
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
}원래는 php를 소켓으로 가져와야 하지만 제가 그 방법에 실패해서 내부 ip로 가져오게 했습니다.
vi /etc/nginx/nginx.conf로 파일을 열어서 다음과 같이 수정해줍니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
#include /etc/nginx/conf.d/*.conf;
#include /etc/nginx/sites-enabled/*;
include /etc/nginx/sites-available/default;
}http 부분의 하단에 include /etc/nginx/sites-available/default; 를 추가해줍니다.
그리고 기존 include 2개는 모두 주석 처리해줍니다.
보기 좋기 위해 글에서는 주석을 지웠습니다.
완료했다면 service nginx restart로 nginx를 재시작해줍니다.
7. php 설정
vi /etc/php/7.2/fpm/pool.d/www.conf 로 파일을 열어서 다음과 같이 수정합니다.
기존의 listen = /run/php/php7.2-fpm.sock 을 listen = 127.0.0.1:9000으로 변경해줍니다.
위에서 언급한 것처럼 소켓 방법을 실패해서 이렇게 설정한 겁니다 ㅎㅎ
설정이 끝낫다면 /etc/init.d/php7.2-fpm restart로 php를 재시작해줍니다.
8. Mysql 설정
Mysql의 인코딩과 접근 ip를 수정해줍니다.
vi /etc/mysql/my.cnf 로 파일을 열어 다음에 해당하는 부분을 수정해줍니다.
1
2
3
4
5
6
7
8
9
10
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
bind-address = 0.0.0.0해당하는 부분을 수정하고 없는 부분은 생성해줍니다.
수정이 끝낫다면 /etc/init.d/mysql restart 로 mysql을 재시작해줍니다.
9. Mysql 계정 생성
Mysql 계정을 생성하기 위해 root 계정으로 들어갑니다.
1
mysql -u root -p비밀번호는 설치하셨던 당시에 설정한 비밀번호로 들어가시면 됩니다.
1
2
3
use mysql
grant all privileges on *.* to 'id'@'%' identified by 'pw';
flush privileges;위의 코드로 계정을 생성해 줍니다.
자 이제 혹시 모르니 mysql을 재시작해줍니다. /etc/init.d/mysql restart
10. Mysql 접속 포트 열기
로컬에서 mysql로 접속하기 위해 가상서버에서 포트를 열어줘야 합니다.
우분투에서 다음 명령어로 포트를 열어줍니다.
1
2
ufw allow in 3306/tcp
ufw allow out 3306/tcp그리고 Vagrantfile 에서 다음 코드를 추가해줍니다.
1
config.vm.network "forwarded_port", guest: 3306, host: 3306, host_ip: "127.0.0.1"이제 vagrant reload로 vagrant를 재시작하고 확인합니다.
11. 서버 확인
자 모든 설정이 끝났습니다.
이제 index 폴더에 index.php 파일을 만들고 다음과 같이 적어줍니다.
HTML, XML
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<?php phpinfo();?>
</body>
</html>그리고 http://192.168.33.10/ 로 접속해서 확인하시면 phpinfo가 나오게 됩니다.
tip)
CI의 index.php 를 없애기 위해서는 vi /etc/nginx/sites-available/default 의 주석 처리했던 location을 살린 뒤 다음과 같이 입력해주시면 됩니다.
1
2
3
location / {
try_files $uri $uri/ /index.php?/$request_uri;
}
CentOS6.9 Oracle12g 소스 설치
CentOS6.9 Oracle12g 소스 설치
ETC

개발일지01. 개발 골조
Devellany의 php 개발일지
PHP
