본문 바로가기
my_lesson/_Linux

Linux - Ubuntu 서버를 설치하고 세팅해야 할것들[5] : PHP-FPM,MariaDB

by boolean 2015. 12. 20.
728x90

Linux - Ubuntu 서버를 설치하고 세팅해야 할것들[5] : PHP-FPM,MariaDB


php, MariaDB 설치

#php7.0-fpm 설치

sudo 명령어가 귀찮다면? sudo su:루트권한 획득을 해보자
#aptitude search php7.0
#apt-get install php7.0-fpm //php-fpm7.0 설치 숫자 7.0 위치에 주의
#php -v   //php 버전 확인
#php-fpm7.0 -v  //php-fpm7.0 버전 확인
# apt-get install php7.0-gd php7.0-curl  //널리 쓰이는 php모듈 설치
                    //설치가 완료되면 자동으로 PHP-FPM 프로그램을 재시작 한다.
# vi /etc/php/7.0/fpm/php.ini              //PHP Default timezone 설정하기.
 //PHP Default timezone 을 설정하는 것은 필수는 아니지만 매우 권장하는 작업입니다. 설정해주세요.
Vi 편집기 사용법을 모르신다면...  Vi 사용법
//문서가 열렸으면 /Module해서 Module 이라는 단어를 찾아서 아래 내용을수정을 한다.
;date.timezone =     주석(;)제거--> date.timezone = Asia/Seoul
# service php7.0-fpm restart  // php7.0-fpm 재시작
#MariaDB 설치

# apt-get install mariadb-server-10.1 mariadb-client-10.1
//MariaDB10.1 설치
//설치시에 데이터베이스 root 사용자의 비밀번호를 설정할 수 있다.
//설치와 동시에 MariaDB 가 실행되며, 재부팅시에도 자동 시작되도록 설정된다.
# service mysql status   //서비스 상태 확인
# apt-get install php7.0-mysql  //PHP-FPM 에 DB 연동관련 모듈설치

#기본 언어셋 설정(중요) # vi /etc/mysql/my.cnf 또는 #vi /etc/mysql/mariadb.conf.d/50-server.cnf //이 단계를 건너뛰면 DB가 latin1 으로 생성되며 추후 DB작업에 문제가 생길 수 있다. [mysqld] 항목 * Basic Settings 소항목에서 skip-external-locking 밑에줄에 다음 2 줄을 추가한다.

vi 편집기에서 Ecc -> /set-server Enter 하면 set-server가 검색된다.

세팅이 되어 있다면 추가하지 않아도 된다. 2017.07.22 edited character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci #service mysql restart //mysql을 재실행해서 변경사항 적용

#Nginx 와 PHP-FPM 연결 // Nginx 프로그램은 기본적으로 nginx 사용자 권한으로 실행되고, //PHP-FPM 프로그램은 기본적으로 www-data 사용자 권한으로 실행된다. //둘의 사용자 권한을 www-data 로 일치시키자. 이 사용자는 운영체제 설치시 자동으로 생성되는 특수목적 사용자이다. nginx 의 설정값만 바꾸면 된다. # vi /etc/nginx/nginx.conf //Nginx 사용자 권한 변경 //첫줄의 user nginx; 를 user www-data; 로 바꿉니다.

// ubuntu 17 이후로 기본 www-data로 되어있음 2017.07.21 edited # service nginx restart //nginx를 재실행해서 변경사항 적용 # vi /etc/nginx/conf.d/default.conf

//ubuntu 17부터 /etc/nginx/sites-enabled/default 로 변경 2017.07.21 edited //Nginx 에서 PHP 확장자에 대해서 PHP-FPM 프로그램으로 요청을 전달하게 설정하기 과정 설명 #1. 기본 값에서 주석 제거 #2. 커스텀 에러페이지 구문 제거 #3. Nginx - PHP-FPM 구문 추가 Nginx phpCGI 참조 결과적으로 다음의 구문을 적용하시면 됩니다. server { listen 80; server_name localhost; root /usr/share/nginx/html; location / { index index.php index.html; } location ~ [^/]\.php(/|$) {

include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; } }

# vi /etc/nginx/snippets/fastcgi-php.conf

fastcgi_split_path_info ^(.+\.php)(/.+)$;

if (!-f $document_root$fastcgi_script_name) { return 404; }

set $path_info $fastcgi_path_info;

fastcgi_param PATH_INFO $path_info; # vi /etc/nginx/fastcgi_params //fastcgi_params 도 변경 Nginx phpCGI)참조 fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_param HTTPS $https; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; # service nginx restart //nginx 재실행 적용

Job for nginx.service failed because the control process exited with error code.

See "systemctl status nginx.service" and "journalctl -xe" for details.

라는 Error message가 뜨면

#service nginx status

해보고 아래와 같은 메세지가 뜨면 방긍 수정하거나 추가한 내용을 하나씩 주석처리 해보면서

#service nginx restart

해본다.

Error : failed to start a high performance web server and a reverse proxy server

보통 jnclude 파일과 현재 파일에 중복정의 되어 있거나 ';' 표시를 빼는등 오타문제 이다.

# vi /usr/share/nginx/html/phpinfo.php  //연동 테스트

phpinfo문서를 보여주는 함수를 호츨하는 아래글을 작성하여 

<?php
phpinfo();
?>


//웹 브라우저에서 http://111.222.333.444(자신의 서버 아이피)/phpinfo.php 를 실행시켜 본다.

22 2017/12/03 01:53:14 [error] 9266#9266: *40 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.0.1    , server: test.iptime.org, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "test.iptime.org"


22 2017/12/03 01:53:14 [오류] 9266 # 9266 : * 업스트림에 연결하는 동안 40 connect ()가 실패했습니다 (111 : Connection refused), 클라이언트 : 192.168.0.1, 서버 : test.iptime.org, 요청 : "GET / HTTP / 1.1", 업스트림 : "http://127.0.0.1:3000/", 호스트 : "test.iptime.org"

점검해볼 내용

업스트림 : "http://127.0.0.1:3000/"  -->>  /etc/nginx/sites-available/default    ->> change port

test.iptime.org 오탈자 확인

댓글