Arch Linux에 LAMP (Linux, Apache, MySQL/MariaDB 및 PHP/PhpMyAdmin) 설치하기

Arch Linux는 유연한 최신 시스템 환경을 제공하며, 소형 비중요 시스템에서 웹 애플리케이션을 개발하기에 가장 적합한 솔루션이며, 완전한 오픈 소스이며 서버 및 데이터베이스용 최신 커널 및 웹 소프트웨어 릴리스를 제공하는 것이 특징입니다.

Install LAMP in Arch Linux

이 튜토리얼의 주요 목표는 완전한 단계별 지침을 통해 웹 개발에서 가장 많이 사용되는 소프트웨어 조합 중 하나를 설치하는 데 이르는 것입니다: LAMP (Linux, Apache, MySQL/MariaDB 및 PHP/PhpMyAdmin) 및 Arch Linux 시스템에는 없지만 여러 가상 호스트를 만드는 작업을 쉽게 할 수 있는 몇 가지 좋은 기능 (빠르고 더러운 Bash 스크립트)와 SSL 인증서를 생성하고 안전한 HTTS 트랜잭션에 필요한 를 생성합니다.

요구 사항

  1. 이전 Arch Linux 설치 프로세스 – DHCP와 관련된 마지막 부분은 건너뛰세요.
  2. 이전 Arch Linux에 LEMP 설치 – 정적 IP 주소 구성 및 원격 SSH 액세스에 대한 부분만 수행합니다.

단계 1: 기본 소프트웨어 LAMP 설치

1. 정적 IP 주소 및 원격 시스템 액세스 기능이 있는 최소한의 시스템 설치 후, pacman 유틸리티를 사용하여 Arch Linux 상자를 업그레이드합니다.

$ sudo pacman -Syu

2. 업그레이드 프로세스가 완료되면 조각으로부터 LAMP를 설치하십시오. 먼저 아파치 웹 서버를 설치하고 모든 서버 프로세스 데몬을 시작/확인하십시오.

$ sudo pacman -S apache 
$ sudo systemctl start httpd 
$ sudo systemctl status httpd
Install Apache Web Server

3. PHP 동적 서버 사이드 스크립팅 언어와 해당 아파치 모듈을 설치하십시오.

$ sudo pacman -S php php-apache

4. 마지막 단계로 MySQL 데이터베이스를 설치하십시오. 1(MariaDB) 커뮤니티 데이터베이스 포크를 선택한 다음 데몬 상태를 확인하고 시작하십시오.

$ sudo pacman -S mysql 
$ sudo systemctl start mysqld 
$ sudo systemctl status mysqld
Install MySQL Database
Start MySQL Database

이제 기본 LAMP 소프트웨어가 설치되어 기본 구성으로 시작되었습니다.

단계 2: MySQL 데이터베이스 보안 설정

5. 다음 단계는 루트 계정에 암호를 설정하여 MySQL 데이터베이스를 안전하게 보호하는 것입니다. 익명 사용자 계정을 제거하고 테스트 데이터베이스를 제거하며 사용자 루트에 대한 원격 로그인을 허용하지 않습니다(루트 계정의 현재 암호를 위해 [Enter] 키를 누르고 모든 보안 질문에 로 응답하십시오).

$ sudo mysql_secure_installation
Secure MySQL Database
Set MySQL root Password

6. 다음 명령을 실행하여 MySQL 데이터베이스 연결성을 확인한 다음 데이터베이스 쉘을 quit 또는 exit으로 나가십시오.

$ mysql -u root -p
Verify MySQL Database Connectivity

단계 3: 아파치 주 구성 파일 수정

7. 다음 구성은 대부분 아파치 웹 서버와 관련이 있으며 PHP 스크립팅 언어로 가상 호스팅을 제공하고, SSL 또는 비-SSL 가상 호스트를 제공하기 위해 httpd 서비스 파일 구성을 수정하여 수행할 수 있습니다.

먼저 선호하는 텍스트 편집기로 주요 아파치 파일 구성을 엽니다.

$ sudo nano /etc/httpd/conf/httpd.conf

파일 가장 아래에 다음 두 줄을 추가하십시오.

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf
Include Virtual Host Configuration

포함문은 이제부터 아파치에게 가상 호스팅에 대한 모든 파일이 위치한 /etc/httpd/conf/sites-enabled/ (및 활성화된 서버 모듈에 대한 /etc/httpd/conf/mods-enabled/ 시스템 경로에서 .conf 확장자로 끝나는 추가 구성을 읽어야 함을 알려줍니다.

8.이 두 지시문으로 아파치에 지시한 후, 다음 명령을 사용하여 필요한 시스템 디렉토리를 만듭니다.

$ sudo mkdir /etc/httpd/conf/sites-available
$ sudo mkdir /etc/httpd/conf/sites-enabled
$ sudo mkdir /etc/httpd/conf/mods-enabled

사이트 가능 경로에는 아파치에서 활성화되지 않은 모든 가상 호스트 구성 파일이 포함되어 있지만 다음 Bash 스크립트에서 이 디렉토리를 사용하여 해당 위치에있는 웹 사이트를 링크하고 활성화합니다.

단계 4: a2eniste 및 a2diste 아파치 명령 생성

9.a2ensitea2dissite 아파치 스크립트를 만드는 시간입니다. 이 스크립트는 가상 호스트 구성 파일을 활성화 또는 비활성화하는 명령으로 사용됩니다. 홈 사용자 경로인 $HOME로 돌아가기 위해 cd 명령을 입력하고 좋아하는 편집기를 사용하여 bash a2enistea2dissite 스크립트를 만듭니다.

$ sudo nano a2ensite

이 파일에 다음 내용을 추가하십시오.

#!/bin/bash
if test -d /etc/httpd/conf/sites-available && test -d /etc/httpd/conf/sites-enabled  ; then
echo "-------------------------------"
else
mkdir /etc/httpd/conf/sites-available
mkdir /etc/httpd/conf/sites-enabled
fi

avail=/etc/httpd/conf/sites-available/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-available/`

if [ "$#" != "1" ]; then
        echo "Use script: n2ensite virtual_site"
        echo -e "\nAvailable virtual hosts:\n$site"
        exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see avail virtual hosts:\n$site"
exit 0
fi
fi
Create a2eniste Apache Script

이제 a2dissite bash 스크립트 파일을 만듭니다.

$ sudo nano a2dissite

다음 내용을 추가하십시오.

#!/bin/bash
avail=/etc/httpd/conf/sites-enabled/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-enabled`

if [ "$#" != "1" ]; then
        echo "Use script: n2dissite virtual_site"
        echo -e "\nAvailable virtual hosts: \n$site"
        exit 0
else
if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nsudo systemctl restart httpd"
exit 0
fi
fi
Create a2dissite Apache Script

10. 파일을 생성한 후 실행 권한을 할당하고 시스템 전역으로 사용 가능하도록 하기 위해 해당 파일을 $PATH 실행 가능 디렉터리에 복사합니다.

$ sudo chmod +x a2ensite a2dissite
$ sudo cp a2ensite a2dissite /usr/local/bin/
Set Execute Permissions

단계 5: 아파치에 가상 호스트 생성

11. 아치 리눅스의 Apache 웹 서버에 대한 가상 호스트 기본 구성 파일은 httpd-vhosts.conf 파일로 제공되며 /etc/httpd/conf/extra/ 경로에 위치합니다. 그러나 가상 호스트를 많이 사용하는 시스템의 경우 활성화된 웹 사이트가 무엇인지 추적하기가 매우 어려울 수 있습니다. 웹 사이트를 비활성화하려면 해당 지시문을 모두 주석 처리하거나 삭제해야하며, 시스템이 많은 웹 사이트를 제공하고 웹 사이트에 구성 지시문이 더 많은 경우 이는 어려운 임무가 될 수 있습니다.

sites-availablesites-enabled 경로를 사용하면 웹 사이트를 활성화 또는 비활성화하는 작업이 크게 단순화되며, 활성화되거나 되지 않더라도 모든 웹 사이트 구성 파일이 보존됩니다.

다음 단계에서는 첫 번째 가상 호스트를 생성하여 기본 로컬호스트를 가리키도록하고 웹 사이트 파일을 제공하는 기본 DocumentRoot 경로를 설정합니다 (/srv/http).

$ sudo nano /etc/httpd/conf/sites-available/localhost.conf

다음 Apache 지시문을 여기에 추가하십시오.

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email protected]
        ErrorLog "/var/log/httpd/localhost-error_log"
        TransferLog "/var/log/httpd/localhost-access_log"

<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>
Create Virtual Hosts in Apache

여기서 가장 중요한 문은 Apache가 포트 80에서 네트워크 연결을 열고 localhost 이름을 가진 모든 쿼리를 /srv/http/ 경로에 위치한 파일로 리디렉션하는 PortServerName 지시문입니다.

12. localhost 파일이 생성되면 활성화하고 변경 사항을 확인하려면 httpd 데몬을 다시 시작하십시오.

$ sudo a2ensite localhost
$ sudo systemctl restart httpd
Active a2ensite Script

13. 그런 다음 브라우저를 http://localhost로 이동하십시오(Arch 시스템에서 실행하는 경우) 또는 원격 시스템을 사용하는 경우 http://Arch_IP로 이동하십시오.

Browse Apache

LAMP에서 가상 호스팅으로 SSL 활성화하기

SSL (Secure Sockets Layer)은 네트워크나 인터넷 상의 HTTP 연결을 암호화하는 프로토콜로, 대칭/비대칭 암호화 키를 사용하여 데이터 흐름을 안전한 채널을 통해 전송되도록 만들어줍니다. 이는 Arch Linux에서 OpenSSL 패키지로 제공됩니다.

14. Arch Linux의 Apache에서는 기본적으로 SSL 모듈이 활성화되어 있지 않으며, 주요 httpd.conf 구성 파일에서 mod_ssl.so 모듈의 주석 처리를 해제하고 추가 httpd 경로에 있는 Include httpd-ssl.conf 파일을 활성화하여 활성화할 수 있습니다.

그러나 간단하게 하기 위해 SSL 모듈을 위한 새로운 모듈 파일을 mods-enabled 경로에 만들고 원본 Apache 구성 파일은 그대로 두겠습니다. SSL 모듈을 위한 다음 파일을 만들고 아래 내용을 추가하세요.

$ sudo nano /etc/httpd/conf/mods-enabled/ssl.conf

다음 내용을 추가하세요.

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Listen 443

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/run/httpd/ssl_scache(512000)"
SSLSessionCacheTimeout  300
Enable SSL with Virtual Hosting

15. 이제 동일한 localhost 이름을 가리키는 Virtual Host 파일을 만들되 이번에는 SSL 서버 구성을 사용하여 파일 이름을 약간 변경하여 localhost에 SSL이 있는 것을 상기시키도록 하겠습니다.

$ sudo nano /etc/httpd/conf/sites-available/localhost-ssl.conf

이 파일에 다음 내용을 추가하세요.

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email protected]
        ErrorLog "/var/log/httpd/localhost-ssl-error_log"
        TransferLog "/var/log/httpd/localhost-ssl-access_log"

SSLEngine on

SSLCertificateFile "/etc/httpd/conf/ssl/localhost.crt"
SSLCertificateKeyFile "/etc/httpd/conf/ssl/localhost.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/srv/http/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory />

    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>
Create SSL Virtual Host

PortServerName 지시문 외에 여기서 중요한 지시문은 아직 생성되지 않은 SSL 인증서 파일 및 SSL 키 파일을 가리키는 지시문입니다. Apache 웹 서버를 다시 시작하지 마세요. 그렇지 않으면 오류가 발생합니다.

16. 필요한 SSL 인증서 파일 및 키를 만들기 위해 아래 명령을 사용하여 OpenSSL 패키지를 설치하세요.

$ sudo pacman -S openssl

17. 그런 다음 다음 Bash 스크립트를 만들어서 모든 Apache 인증서를 자동으로 생성하고 저장하고 /etc/httpd/conf/ssl/ 시스템 경로에 저장하세요.

$ sudo nano apache_gen_ssl

다음 파일 내용을 추가한 다음 저장하고 실행 가능하게 만드세요.

#!/bin/bash
mkdir /etc/httpd/conf/ssl
cd /etc/httpd/conf/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Nginx  SSL certificate!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate "$cert" has been generated!\nPlease link it to Apache SSL available website!"

ls -all /etc/httpd/conf/ssl
exit 0
Store Apache Certificates and Keys
$ sudo chmod +x apache_gen_ssl

시스템 전체에서 스크립트를 사용할 수 있게 하려면 실행 가능한 $PATH로 복사하세요.

$ sudo cp /apache_gen_ssl  /usr/local/bin/

18. 이제 스크립트를 실행하여 인증서를 생성하세요. SSL 옵션을 제공하고 공식 도메인 (FQDN)과 일치하는 인증서 이름과 공통 이름을 잊지 마세요.

$ sudo ./apache_gen_ssl
Create Apache Certificates and Keys
Enter Certificates Details

인증서와 키가 생성된 후 SSL 가상 호스트 인증서와 키 구성을 이 인증서 이름과 일치하도록 수정하는 것을 잊지 마세요.

19. 마지막 단계는 새로운 SSL 가상 호스트를 활성화하고 설정을 적용하려면 서버를 다시 시작하면 됩니다.

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd
Activate SSL Virtual Host

이것으로 끝났습니다! 확인하려면 브라우저를 열고 HTTPS 프로토콜을 사용하여 Arch IP의 URL에 추가하세요: https://localhost 또는 https://system_IP.

Browse Apache over SSL

단계 7: Apache에서 PHP 활성화

20. Arch Linux에서는 기본적으로 Apache가 동적 스크립팅 언어를 지원하지 않는 HTML 정적 파일 내용만 제공합니다. PHP를 활성화하려면 먼저 Apache 주 구성 파일을 열고 다음과 같이 LoadModule 문을 검색하고 주석 처리하세요 (php-apache가 Arch Linux의 mod_mpm_event와 함께 작동하지 않습니다).

$ sudo nano /etc/httpd/conf/httpd.conf

[Ctrl]+[w]를 사용하여 검색한 다음 다음 줄을 다음과 같이 변경하세요.

#LoadModule mpm_event_module modules/mod_mpm_event.so
Enable PHP Module

21. 그런 다음, 다음 내용으로 mods-enabled 경로에 PHP 모듈을 위한 새 파일을 만듭니다.

$ sudo nano /etc/httpd/conf/mods-enabled/php.conf

다음 내용을 정확히 추가하십시오 (mod_mpm_prefork을 사용해야 합니다).

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule php5_module modules/libphp5.so

Include conf/extra/php5_module.conf
Enable mod_mpm_prefork Module

22. 설정을 확인하려면 DocumnetRoot(/srv/http/)에 info.php라는 PHP 파일을 만든 다음 Apache를 재시작하고 브라우저를 info.php 파일로 이동하십시오: https://localhost/info.php.

<?php

phpinfo();

?>
$ sudo systemctl restart httpd
Verify PHP Information

여기까지입니다! 모든 것이 위의 이미지와 같이 보인다면, 이제 Apache에서 PHP 동적 서버 측 스크립팅 언어가 활성화되어 있고 WordPress와 같은 오픈 소스 CMS를 사용하여 웹 사이트를 개발할 수 있습니다.

Apache 구문 구성을 확인하고 httpd 데몬 재시작 없이 로드된 모듈 목록을 보려면 다음 명령을 실행하십시오.

$ sudo apachectl configtest
$ sudo apachectl -M

단계 8: PhpMyAdmin 설치 및 구성

23. MySQL 명령 줄을 완전히 이해하지 못하고 웹 인터페이스를 통해 제공되는 MySQL 데이터베이스에 간단한 원격 액세스를 원한다면 Arch 상자에 PhpMyAdmin 패키지를 설치해야 합니다.

$ sudo pacman -S phpmyadmin php-mcrypt

24. 패키지를 설치한 후에는 일부 PHP 확장 기능(mysqli.so, 내부 인증용 mcrypt.so 포함)을 활성화해야 하며 openssl.so, imap.so, iconv.so 등의 다른 모듈을 필요에 따라 활성화할 수도 있습니다.

$ sudo nano /etc/php/php.ini

위의 확장 기능을 찾아 주석 처리합니다.

extension=mcrypt.so
extension=mssql.so
extension=mysqli.so
extension=openssl.so
extension=iconv.so
extension=imap.so
extension=zip.so
extension=bz2.so
Install and Configuring PhpMyAdmin

동일한 파일에서 open_basedir 문을 찾아 PhpMyAdmin 시스템 경로를 추가하고 (/etc/webapps//usr/share/webapps/) 이러한 디렉토리 아래의 파일에 PHP가 액세스하고 읽을 수 있도록합니다 (또한 가상 호스트 DocumentRoot 경로를 /srv/http/에서 다른 위치로 변경하는 경우 새 경로를 여기에 추가해야 함).

Enable open_basedir

25. PhpMyAdmin 웹 인터페이스에 액세스하려면 추가해야 하는 마지막 단계는 가상 호스트에 PhpMyAdmin Apache 문을 추가하는 것입니다. 보안 조치로 인해 PhpMyAdmin 웹 인터페이스가 로컬호스트 (또는 시스템 IP 주소)를 통해서만 HTTPS 프로토콜을 사용하여 접근 가능하고 다른 다른 가상 호스트로부터는 접근할 수 없도록합니다. 따라서 localhost-ssl.conf Apache 파일을 열고 아래에 마지막 문 전에 다음 내용을 추가하십시오.

$ sudo nano /etc/httpd/conf/sites-enabled/localhost-ssl.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"

<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.html index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>
Create PhpMyAdmin Virtual Host Configuration

26. 그런 다음 Apache 데몬을 재시작하고 브라우저를 다음 주소로 지정하여 PhpMyAdmin 웹 인터페이스에 액세스 할 수 있어야 합니다: https://localhost/phpmyadmin 또는 https://system_IP/phpmyadmin.

Access PhpMyAdmin Web Interface

27. PhpMyAdmin에 로그인한 후 blowfish_secret와 관련된 하단 오류가 표시되면 /etc/webapps/phpmyadmin/config.inc.php 파일을 열고 특정 문자열을 다음 명령문과 같이 삽입한 다음 페이지를 새로 고쳐주세요.

$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;
Fix blowfish_secret Error

단계 9: LAMP 시스템 전역 활성화

28. 시스템 재부팅 후 LAMP 스택을 자동으로 시작하려면 다음 명령을 실행하세요.

$ sudo systemctl enable httpd mysqld
Enable LAMP System Wide

이것은 소규모 비비상 환경을 위한 강력하고 빠르며 견고한 웹 플랫폼으로 변환하기 위해 LAMP에서 필요한 주요 구성 설정 중 일부입니다. 그러나 대규모 프로덕션 환경에서 계속 사용하고 싶다면 패키지 업데이트에 특히 주의를 기울이고 시스템 장애 발생 시 빠른 시스템 복원을 위해 정기적으로 시스템 백업 이미지를 만들어야 합니다.

Source:
https://www.tecmint.com/install-lamp-in-arch-linux/