[아파치 설치]

apt-get install apache2

#a2enmod rewrite
#a2enmod headers
#a2enmod ssl
#a2dismod -f autoindex

vi /etc/apache2/apache2.conf

# 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>



[PHP 설치]

apt-get install php
apt-get install libapache2-mod-php
apt-get install php-mcrypt
apt-get install php-mbstring
apt-get install php-gd
apt-get install php-curl php-xml
apt-get install php-mysql php-mongodb
apt-get install libapache2-mpm-itk

vi /etc/php/7.0/apache2/php.ini 에 아래 두줄 추가
extension=mongodb.so extension=mysqli.so

- 설정
vi /etc/apache2/mods-available/php7.0.conf

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

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

date.timezone = Asia/Seoul


/etc/init.d/apache2 restart


[MariaDB 설치]

apt-get install mariadb-server
/usr/bin/mysql_secure_installation

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

비밀번호가 틀렸다면

use mysql;

SET PASSWORD FOR 'root'@'localhost'=PASSWORD('비밀번호');

exit;

SET PASSWORD FOR 'root'@'localhost'=PASSWORD('turtle123');
-언어설정 추가 (중요)

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

character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci


/etc/init.d/mysql restart



이거 안했다고 route가 제대로 안되네...


/etc/apache2/sites-available/yoursite.conf

<VirtualHost *:80>
    ServerAdmin youremail@yahoo.com
    ServerName yoursite.com
    ServerAlias www.yoursite.com
    DocumentRoot "/var/www/yoursite.com/public"
    <Directory /var/www/yoursite.com/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>



SSL 설정


웹사이트 Apache 환경설정파일 작성

#16.12.20 설정 가이드가 추가됨

환경설정을 쉽게하도록 도와주는, 환경설정 생성기가 추가되었습니다.

https://blog.lael.be/demo-generator/apache/my-example-site.com.php

다음의 내용을 작성한다.
아래 예제에서는 사이트 환경설정파일명을 lael.be 로 가정하고 진행한다.
당신의 도메인, 사용자 아이디, 별도의 구분단어로 설정해서 사용하도록 하자.

#vi /etc/apache2/sites-available/lael.be.conf

/etc/apache2/sites-available/lael.be.conf 에 저장한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<VirtualHost *:80>
    #main domain
    ServerName lael.be
 
    #additional domain
    ServerAlias www.lael.be
    ServerAlias my-anotherdomain.com
 
    #document Root
    DocumentRoot /home/myuser1/www/
 
    #additional setting
    <Directory /home/myuser1/www/>
        Options FollowSymLinks MultiViews
        AllowOverride All
        require all granted
    </Directory>
 
    AssignUserID myuser1 myuser1
 
    ErrorLog ${APACHE_LOG_DIR}/lael.be-error.log
    CustomLog ${APACHE_LOG_DIR}/lael.be-access.log combined
</VirtualHost>

ServerAlias 는 사용안하면 빼도 되는 줄이다.

#15.09.16 추가

당신이 만약 SSL(https) 를 적용하고자 한다면 lael.be.conf 파일 하단에 다음의 코드를 추가하세요. 즉 VirtualHost 영역을 하나 더 추가.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<VirtualHost *:443>
    #main domain
    ServerName lael.be
 
    #additional domain
    ServerAlias www.lael.be
    ServerAlias my-anotherdomain.com
 
    #document Root
    DocumentRoot /home/myuser1/www/
 
    #additional setting
    <Directory /home/myuser1/www/>
        Options FollowSymLinks MultiViews
        AllowOverride All
        require all granted
    </Directory>
 
    AssignUserID myuser1 myuser1
 
    ErrorLog ${APACHE_LOG_DIR}/lael.be-error.log
    CustomLog ${APACHE_LOG_DIR}/lael.be-access.log combined
 
    Header always set Strict-Transport-Security "max-age=31536000"
 
    SSLEngine on
 
    SSLProtocol all -SSLv2 -SSLv3
 
    SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
 
    SSLHonorCipherOrder on
 
    SSLCertificateFile "/home/myuser1/ssl/mysite_ssl.crt"
    SSLCertificateKeyFile "/home/myuser1/ssl/mysite_ssl.key"
    SSLCertificateChainFile "/home/myuser1/ssl/mysite_ssl.certchain.crt"
 
</VirtualHost>

https://www.sslshopper.com/ssl-checker.html#hostname=blog.lael.be  (SSL Chain test - 인증서가 올바르게 설치되어 있는지)

https://www.ssllabs.com/ssltest/analyze.html?d=blog.lael.be (SSL Algorithm test - 안전한 암호화 통신이 설정되어 있는지)

Chain test 는 모두 Valid 이어야하고, SSL Algorithm test 는 A 이상이면 정상적인 운영이 가능하다.

라엘이가 여러 설정 값에 대해서 테스트를 해 보았고, 최적의 권장설정 값을 위와 같이 적어두었으니 그대로 쓰면 된다.

위의 설정값으로 SSL을 설치하면 A+등급을 받을 수 있을 것이다.

 

pv106

.

인증서 적용 테스트는 위의 사이트를 이용하여라.

인증서 체인 파일이란 “인증서에 대한 인증서” 파일이다.

mac-ssl

< 그림 : 이 블로그는 위의 단계를 거쳐 인증된다. 이것을 체인 인증 이라고 한다. >

대통령이 당신을 인증할 때 직권으로 인증하는 것이 아니라, 대통령 -> 서울시장 -> 강남구청장 -> 삼성동장 -> 당신 의 단계를 거친다. 검증하려면 모든 단계의 보증 증서를 제공해야 하는 것이다.

인증서 파일에는 삼성동장 -> 당신  의 정보가 들어있고, (암호화 통신시 공개됨)

인증서 키 파일에는 암호화 통신을 위한 정보가 들어있고 (은행 보안카드 로 비유. 외부에 공개되지 않음.)

인증서 체인 파일에는 대통령 -> 서울시장, 서울시장 -> 강남구청장, 강남구청장 -> 삼성동장 의 정보가 들어있다. (체인 인증이라고 한다. 연결고리 인증)

인증서 체인을 올바르게 작성하지 않으면 Firefox 브라우저와 Android Chrome 브라우저에서 “인증서 정보부족” 오류가 발생하게 된다.

 

14) 사이트 활성화 및 적용

명령어는
#a2ensite 사이트환경설정파일명
입니다.

#a2ensite lael.be

(참고로 사이트 비활성화는

#a2dissite lael.be

입니다.)

- 아파치 설정 다시 불러오기(적용을 위해)

#service apache2 reload


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

'Web > Server' 카테고리의 다른 글

데몬 스크립트 작성 및 등록하기  (0) 2018.02.21
스크립트 포멧 오류가 날 때 확인  (0) 2018.02.20
웹폴더 권한 설정  (0) 2018.02.20
Posted by jazzlife
,