본문으로 바로가기

 

1)root 권한으로 변경

 

자신의 계정 보기

# whoami

sudo 명령어 실행. root 권한으로 root 로 로그인하는 명령어를 실행한다.

# sudo su

 

 

기본 계정의 UserID 는 그림과 다를 수 있음. 위 예시에서 기본 아이디는 scpplanb 이다.

 

 

2) 현재 서버에 설치된 패키지 최신버전으로 업그레이드

 

APT란 Advanced Packaging Tool 을 뜻합니다.
우리는 apt 라는 우분투에 내장된 프로그램을 이용해서 프로그램을 쉽게 설치/제거 할 수 있습니다.

 

 

패키지 목록 갱신.

#apt-get update

 

현재 운영체제에 설치되어있는 프로그램 최신버전패치

#apt-get upgrade

 

 

3) 시스템 시간 설정

이것을 하지 않으면 영국 시간을 불러올 것이다.

물론 초기 설치할 때 Asia/Seoul 을 설정했다면 이 작업을 할 필요는 없다. 하지만 또 한다고 해서 문제되지는 않는다.

 

 

- 데비안 패키지 재설정 TimeZone Data 를 실행한다.

#dpkg-reconfigure tzdata

 

GUI 환경이 나올 텐데, 순서대로 Asia - Seoul 을 선택하면 된다.

 

4) Apache2 설치

 

#apt-get install apache2

 

16.04 LTS 에서는 apache 2.4.x 가 설치된다. 

 

가끔씩 apt-get update  apt-get upgrade 를 실행하면 아무런 문제없이 최신버전으로 업데이트 될 것이다.
설치가 완료되면 자동적용 및 시작된다.

 

혹시 기동이 되고 있지 않다면 다음 명령어를 이용해서 기동하자

apachectl start

 

5) PHP 7.0 설치

#apt-get install php

16.04 에서는 PHP 7.0.x 가 설치된다.

 

PHP-아파치 연동모듈 설치

#apt-get install libapache2-mod-php7.0

 

기타 주로 사용되는 모듈을 설치한다.
- 암호화 모듈

#apt-get install php-mcrypt

 

- 다국어 처리모듈

#apt-get install php-mbstring

 

- 이미지처리 모듈

#apt-get install php-gd

 

- 원격지 정보 불러는 모듈 (워드프레스, 드루팔 등에서 쓰임)

#apt-get install php-curl php-xml

 

-추가로 설치하고 싶은 모듈이 있으면

#apt-cache search php-

#apt-cache search php-

라고 입력해서 설치가능한 패키지를 검색후 install 하도록 하자.

 

- 아파치 재시작(적용을 위해서)

#service apache2 restart

 

6) MariaDB 설치

 

mysql 과 mariadb 는 완전 API 호환된다.

 

 

#apt-get install mariadb-server

MariaDB 10.0.24 이 설치된다.

 

 

MariaDB 초기화.

 

다음의 명령어 실행하자.

/usr/bin/mysql_secure_installation

 

모르면 엔터 누르면 된다. (비밀번호만 설정하고 나머지는 엔터)

잘못한 것 같으면 위 명령어를 다시 실행하면 된다.

 

 

:: root 의 인증 플러그인 정보 제거하기

 

MySQL에 플러그인이라는 개념이 생겼다. 그 중 하나가 서버사이드 인증이다.

예를들어 Linux의 myuser1 사용자와 MySQL(MariaDB)의 myuser1 과 연결이 되는 경우이다. (비밀번호 필요없이 쉘인증)

root 사용자가 기본값으로 unix_socket Auth Plugin 이 설정되어 있지만 많은 불편함을 준다.  

 

기존과 같이 비밀번호 인증 방식으로 바꾸도록 하자.

 

Linux root 사용자로 로그인한 상태에서

# mysql

(현재는 unix_socket 인증방식이라서 Linux root 사용자는 MySQL(MariaDB) root 계정에 비밀번호 없이 로그인 할 수 있다 하지만 비밀번호가 있다면

 

mysql -p

 

를 입력해주고 비번을 입력해서 들어가주자)

 

 

use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;

 

 

 

DB 연동모듈 설치. 완전 호환되기 때문에 mysql 이라고 해도 mariadb 사용가능.

#apt-get install php-mysql

 

7) 기본 언어셋 설정(중요)

 

이 단계를 건너뛰면 DB가 latin1 으로 생성되며 추후 DB작업에 문제가 생길 수 있다.

 

#vi /etc/mysql/mariadb.conf.d/50-server.cnf

 

(vi 에디터 사용방법을 모른다면 ftp 클라이언트를 사용하여 서버에 로그인 후 해당파일을 수정하고 덮어쓰기한다.)

 

 

[mysqld] 항목에 다음 2 줄을 추가한다.

2015년도 부터는 아래와 같이 utf8mb4 속성을 사용하세요.

이 속성은 utf8확장입니다. 기존의 모든 utf8과 상위 호환됩니다.

(utf8 에서 utf8mb4 로의 변환은 손실이 일어나지 않습니다.)

 

utf8mb4 속성은 스마트폰 이모티콘 문자(emoji)를 저장할 수 있습니다.

 

/etc/mysql/mariadb.conf.d/50-server.cnf 에 추가

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

 

변경사항 적용

#service mysql restart

 

8) PHP 권한 설정

 

웹 서비스 구동시 발생할 수 있는 Nobody 퍼미션 관련 문제를 해결하기 위해 관련 프로그램을 설치한다.
이 세팅을 하면 shell의 권한과 sftp의 권한과 web의 권한이 동일하게 취급되며 보안도 좋게된다.
순서대로 쓰면 된다.

 

# apt-cache search mpm-itk
libapache2-mpm-itk - multiuser module for Apache

 

 

 

#apt-get install libapache2-mpm-itk

 

#chmod 711 /home

 

#chmod -R 700 /home/*

(/home/* 안에 아무파일도 없을 경우 마지막 구문은 에러가 날 수 있다. 에러가 나면 무시하도록 하자.)

 

 

9) PHP 실행확장자 변경

 

php 를 해석하는 확장자가 꽤 많이 있다.

#vi /etc/apache2/mods-available/php7.0.conf

.php .php3 .php4 .php5 .php7 .pht .phtml  확장자 파일이 기본적으로 php를 해석할 수 있게 되어있다.

웹페이지에서 파일업로드 구현시 이 확장자 파일을 제대로 막아주지 못하면 사이트가 위험하게 된다.

 

.php 를 제외한 나머지의 접근을 차단하자.

 

<FilesMatch ".+\.ph(p3|p4|p5|p7|t|tml)$">

    Require all denied

</FilesMatch>

 

적용을 위해서 아파치 재시작

#service apache2 restart

 

10) PHP Default timezone 설정하기.

 

이 값을 설정하지 않으면 시스템 timezone 을 사용합니다.

 

PHP Default timezone 을 설정하는 것은 필수는 아니지만 매우 권장하는 작업입니다. 설정해주세요.

 

 

 

 

동일한 작업 2개의 파일에 적용해 주어야 합니다.


이건 Apache2 - PHP 일때 참조하는 설정파일입니다.

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

 

이건 Cron이나 Console에서 PHP를 직접실행할때 참조하는 설정파일입니다.

#vi /etc/php/7.0/cli/php.ini

 

date.timezone 값을 찾아서 주석을 제거하고 시간을 설정해주세요.

이 값을 찾아서

 

이렇게 변경.

 

#service apache2 restart

 

나중에 mytest.php 파일을 만들고 웹브라우져에서 실행시킨 뒤 위와 같이 설정되어 있으면 정상이다.

 

 

mytest.php

<?php phpinfo(); ?>

 

Default timezone 이 설정되어 있으면 정상.

 

11) 계정생성 및 동작테스트

 

 

원래 표준명령어는 useradd 이지만    ubuntu는 사용하기 좋게 adduser 를 지원한다.
리눅스 관련 서적을 보면 둘다 계정생성용 명령어라고 되어있다.

 

 

쉬운 설정을 위해 adduser를 사용

#adduser myuser1

 

+(참고로 위와 반대동작을 하는 계정삭제 명령어는 - 계정을 삭제하고 홈디렉토리도 삭제함- 입니다.)

#userdel -r myuser1

 

 

 

보통 웹루트는 홈디렉토리에 하지 않습니다.
저는 주로 www 디렉토리를 사용합니다.사용자변경 후 www 디렉토리를 생성하고 빠져나오기

 

#su -l myuser1

 

#mkdir www

 

#exit

 

 

 

 


출처

https://blog.lael.be/post/73