티스토리 뷰
Ubuntu 16.04LTS에 맞추어 작성되었습니다.
여러 가지를 참고하여 Web Server 의 환경설정을 합니다.
아래의 방법대로 설치한 후에 언제든지
1 2 3 | apt-get update apt-get upgrade | cs |
또한 명령을 사용하면, 항상 빠르고 안전한 최신버전의 서버 소프트웨어를 사용하실 수 있습니다.
1) root 권한으로 변경
자신의 계정 보기
1 | # whoami | cs |
sudo 명령어 실행. root 권한으로 root 로 로그인하는 명령어를 실행한다.
1 | # sudo su | cs |
1 | #uname -a | cs |
3) Ubuntu 버전체크
4)하드용량 체크
1 | #df -h | cs |
1 | #free -m | cs |
1 | #cat /proc/cpuinfo | grep processor | wc -l | cs |
위 사진은 2core를 뜻합니다
한 번쯤은 밑의 명령어를 보는 것도 좋을 듯 합니다.
1 | #cat /proc/cpuinfo | cs |
7) 시스템 시간 설정
시간 설정을 하지 않는다면 영국 시간을 불러올 것 입니다.
물론 초기 설치할 때 Asia/Seoul을 설정햇다면 이 작업을 할 필요는 없습니다. 하지만 시간 설정을 안한다고 해서 문제는 되지 않습니다.
1 | #dpkg-reconfigure tzdata | cs |
1 | #apt-get install apache2 |
16.04 LTS 에서는 apache 2.4.x 가 설치됩니다. (2016년 4월 21일 현재 최신버전은 Apache 2.4.18 이다.)
가끔씩 apt-get update 및 apt-get upgrade 를 실행하면 아무런 문제없이 최신버전으로 업데이트 될 것입니다.
설치가 완료되면 자동적용 및 시작됩니다.
1 | # nano /etc/apache2/apache2.conf | cs |
</FilesMatch> 부분 밑에 넣습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # deny file, folder start with dot <DirectoryMatch "^\.|\/\."> Require all denied </DirectoryMatch> # deny (log file, binary, certificate, shell script, sql dump file) access. <FilesMatch "\.(?i:log|binary|pem|enc|crt|conf|cnf|sql|sh|key)$"> Require all denied </FilesMatch> # deny access. <FilesMatch "(?i:composer\.json|contributing\.md|license\.txt|readme\.rst|readme\.md|readme\.txt|copyright|artisan|gulpfile\.js|package\.json|phpunit\.xml)$"> Require all denied </FilesMatch> # Allow Lets Encrypt Domain Validation Program <DirectoryMatch "\.well-known/acme-challenge/"> Require all granted </DirectoryMatch> | cs |
9) PHP 7.0 설치
Ubuntu 14.04 LTS 일때에는 PHP5.0을 설치를 해야됩니다.
1 | #apt-get install php | cs |
PHP-아파치 연동모듈 설치
1 | #apt-get install libapache2-mod-php7.0 | cs |
기타 주로 사용되는 모듈을 설치한다.
- 암호화 모듈
1 | #apt-get install php-mcrypt | cs |
추가로 더 설치하고 싶은 모듈이 있다면
1 | #apt-cache search php- | cs |
여기서 찾아서 설치하면 됩니다.
아파치 재시작을 합니다. (항상 자기가 한 일에 대해서 적용하기 위해서는 재시작을 합니다)
1 | #service apache2 restart | cs |
1 | #apt-get install mariadb-server | cs |
1 | /usr/bin/mysql_secure_installation | cs |
root 의 인증 플러그인 정보 제거하기
MySQL에 플러그인이라는 개념이 생겼습니다.. 그 중 하나가 서버사이드 인증입니다.
Linux root 사용자로 로그인한 상태에서
1 | # mysql | cs |
1 2 3 4 | use mysql; update user set plugin='' where User='root'; flush privileges; exit; | cs |
DB 연동모듈 설치. 완전 호환되기 때문에 mysql 이라고 해도 mariadb 사용가능.
1 | #apt-get install php-mysql | cs |
MYSQL 콘솔 클라이언트 버전체크
1 | #mysql -v | cs |
- 기본 언어셋 설정(중요!!)
1 | #nano /etc/mysql/mariadb.conf.d/50-server.cnf | cs |
/etc/mysql/mariadb.conf.d/50-server.cnf 에 추가
1 2 | character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci | cs |
이 부분에 추가 합니다.
상태가 변경됬으니 mysql을 재시작합니다.
1 | #service mysql restart | cs |
11) PHP 권한 설정
웹 서비스 구동시 발생할 수 있는 Nobody 퍼미션 관련 문제를 해결하기 위해 관련 프로그램을 설치합니다.
이 세팅을 하면 shell의 권한과 sftp의 권한과 web의 권한이 동일하게 취급되며 보안도 좋게된다.
순서대로 쓰면 됩니다.
1 | # apt-cache search mpm-itk | cs |
1 2 3 | #apt-get install libapache2-mpm-itk #chmod 711 /home #chmod -R 700 /home/* | cs |
- PHP 실행 확장자 변경
1 | #nano /etc/apache2/mods-available/php7.0.conf | cs |
.php .php3 .php4 .php5 .php7 .pht .phtml 확장자 파일이 기본적으로 php를 해석할 수 있게 되어있습니다.
웹페이지에서 파일업로드 구현시 이 확장자 파일을 제대로 막아주지 못하면 사이트가 위험하게 됩니다..
.php 를 제외한 나머지의 접근을 차단해봅시다.
1 2 3 | <FilesMatch ".+\.ph(p3|p4|p5|p7|t|tml)$"> Require all denied </FilesMatch> | cs |
또다시 변경사항으로 인하여 apache2 재시작
1 | #service apache2 restart | cs |
이상으로 APM의 환경 설정을 마치도록 하겠습니다.
'Project > Web Server만들기' 카테고리의 다른 글
Web Server를 만들어 보자!! (0) | 2017.06.05 |
---|