웹사이트 검색

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


Arch Linux는 유연한 최첨단 시스템 환경을 제공하며 완전한 오픈 소스이고 커널 및 웹 소프트웨어에 대한 최신 릴리스를 제공하므로 중요하지 않은 소규모 시스템에서 웹 응용 프로그램을 개발하는 데 가장 적합한 강력하고 가장 적합한 솔루션입니다. 서버와 데이터베이스.

이 튜토리얼의 주요 범위는 최종적으로 웹 개발에서 가장 많이 사용되는 소프트웨어 조합 중 하나인 LAMP(Linux, Apache, MySQL/MariaDB 및 PHP/PhpMyAdmin ) 그러면 Arch Linux 시스템에는 없지만 여러 가상 호스트를 생성하는 작업을 쉽게 할 수 있는 몇 가지 멋진 기능(빠르고 지저분한 Bash 스크립트)이 제공됩니다. , 보안 HTTS 거래에 필요한 SSL 인증서를 생성하세요.

요구사항

  1. 이전 Arch Linux 설치 과정 - DHCP를 사용하는 마지막 부분을 건너뜁니다.
  2. Arch Linux에 이전 LEMP 설치 - 고정 IP 주소 및 원격 SSH 액세스 구성이 포함된 부분만 해당됩니다.

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

1. 고정 IP 주소로 최소 시스템을 설치하고 SSH를 사용하여 원격 시스템에 액세스한 후 pacman 유틸리티를 사용하여 Arch Linux 상자를 업그레이드하세요.

sudo pacman -Syu

2. 업그레이드 프로세스가 완료되면 LAMP 조각을 하나씩 설치하고 먼저 Apache 웹 서버를 설치하고 모든 서버 프로세스 데몬을 시작/확인합니다.

sudo pacman -S apache 
sudo systemctl start httpd 
sudo systemctl status httpd

3. PHP 동적 서버측 스크립트 언어와 해당 Apache 모듈을 설치합니다.

sudo pacman -S php php-apache

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

sudo pacman -S mysql 
sudo systemctl start mysqld 
sudo systemctl status mysqld

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

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

5. 다음 단계는 루트 계정의 비밀번호를 설정하여 MySQL 데이터베이스를 보호하고, 익명 사용자 계정을 제거하고, 테스트 데이터베이스를 제거하고, 사용자 루트에 대한 원격 로그인을 허용하지 않는 것입니다( [ 루트 계정의 현재 비밀번호에 대한 Enter] 키를 입력하고 모든 보안 질문에 로 대답하세요.

sudo mysql_secure_installation

6. 다음 명령을 실행하여 MySQL 데이터베이스 연결을 확인한 후 quit 또는 exit 문을 사용하여 데이터베이스 셸을 종료합니다.

mysql -u root -p

3단계: Apache 기본 구성 파일 수정

7. 다음 구성은 대부분 PHP 스크립트 언어, SSL 또는 가상 호스팅에 대한 동적 인터페이스를 제공하기 위한 Apache 웹 서버와 관련되어 있습니다. SSL이 아닌 가상 호스트를 지원하며 httpd 서비스 파일 구성을 수정하여 수행할 수 있습니다.

먼저 선호하는 텍스트 편집기를 사용하여 기본 Apache 파일 구성을 엽니다.

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

파일 맨 아래에 다음 두 줄을 추가합니다.

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf

여기서 Include 문의 역할은 Apache에게 지금부터 /etc/httpd/conf/sites-enabled/(가상 호스팅의 경우) 및 /etc/httpd/conf/mods-enabled/(활성화된 서버 모듈의 경우)로 끝나는 시스템 경로 .conf 확장자.

8. Apache에 이 두 가지 지시문을 지시한 후 다음 명령을 실행하여 필요한 시스템 디렉터리를 만듭니다.

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

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

4단계: a2eniste 및 a2diste Apache 명령 생성

9. 이제 가상 호스트 구성 파일을 활성화 또는 비활성화하는 명령 역할을 하는 a2ensitea2dissite Apache 스크립트를 생성할 차례입니다. cd 명령을 입력하여 $HOME 사용자 경로로 돌아가서 다음을 사용하여 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

이제 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

10. 파일이 생성된 후 실행 권한을 할당하고 ` PATH 실행 디렉터리에 복사하여 시스템 전체에서 사용할 수 있도록 합니다.

sudo chmod +x a2ensite a2dissite
sudo cp a2ensite a2dissite /usr/local/bin/

5단계: Apache에서 가상 호스트 생성

11. Arch Linux의 Apache 웹 서버에 대한 가상 호스트 기본 구성 파일은 /etc/httpd/conf/extra에 있는 httpd-vhosts.conf 파일에서 제공됩니다. / 경로를 사용하지만 가상 호스트를 많이 사용하는 시스템이 있는 경우 어떤 웹사이트가 활성화되었는지 여부를 추적하는 것이 매우 어려울 수 있습니다. 웹사이트를 비활성화하려면 해당 지침을 모두 주석 처리하거나 삭제해야 합니다. 시스템이 많은 웹사이트를 제공하고 웹사이트에 더 많은 구성 지침이 있는 경우 이는 어려운 작업이 될 수 있습니다.

사용 가능한 사이트사이트 활성화 경로를 사용하면 웹사이트 활성화 또는 비활성화 작업이 크게 단순화되고 활성화 여부에 관계없이 모든 웹사이트 구성 파일.

다음 단계에서는 웹 사이트 파일을 제공하기 위한 기본 DocumentRoot 경로(/srv/http)를 사용하여 기본 로컬 호스트를 가리키는 첫 번째 가상 호스트를 구성할 것입니다.

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

여기에 다음 Apache 지시어를 추가합니다.

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        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>

여기서 가장 중요한 설명은 Apache가 포트 80에서 네트워크 연결을 열고 localhost 이름이 있는 모든 쿼리를 다음으로 리디렉션하도록 지시하는 PortServerName 지시문입니다. /srv/http/ 경로에 있는 파일을 제공합니다.

12. localhost 파일이 생성된 후 이를 활성화한 다음 httpd 데몬을 다시 시작하여 변경 사항을 확인합니다.

sudo a2ensite localhost
sudo systemctl restart httpd

13. 그런 다음 Arch 시스템에서 실행하는 경우 브라우저를 http://localhost로 지정하고, Arch 시스템을 사용하는 경우 http://Arch_IP로 지정하십시오. 원격 시스템.

6단계: LAMP에서 가상 호스팅으로 SSL 활성화

SSL(보안 소켓 계층)은 네트워크나 인터넷을 통한 HTTP 연결을 암호화하도록 설계된 프로토콜로, 대칭/비대칭 암호화 키를 사용하여 보안 채널을 통해 데이터 흐름이 전송되도록 합니다. Arch Linux에서는 OpenSSL 패키지로 제공됩니다.

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

그러나 작업을 단순화하기 위해 mods-enabled 경로에 SSL용 새 모듈 파일을 생성하고 기본 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

15. 이제 동일한 localhost 이름을 가리키지만 이번에는 SSL 서버 구성을 사용하는 가상 호스트 파일을 생성하고 SSL을 사용하는 localhost를 의미한다는 점을 상기시키기 위해 이름을 약간 변경합니다.

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

이 파일에 다음 내용을 추가합니다.

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        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>

PortServerName 지시어 외에도 여기서 중요한 다른 지시어는 SSL 인증서 파일과 SSL 키 파일을 가리키는 지시어입니다. 아직 생성되지 않았으므로 Apache 웹 서버를 다시 시작하지 마십시오. 그렇지 않으면 일부 오류가 발생합니다.

16. 필수 SSL 인증서 파일과 키를 생성하려면 아래 명령을 실행하여 OpenSSL 패키지를 설치하세요.

sudo pacman -S openssl

17. 그런 다음 모든 Apache 인증서를 자동으로 생성하고 에 저장하는 다음 Bash 스크립트를 만듭니다. >/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

sudo chmod +x apache_gen_ssl

스크립트를 시스템 전체에서 사용하려면 실행 가능한 ` PATH에 복사하세요.

sudo cp /apache_gen_ssl  /usr/local/bin/

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

sudo ./apache_gen_ssl

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

19. 마지막 단계는 새로 SSL 가상 호스트를 활성화하고 서버를 다시 시작하여 구성을 적용하는 것입니다.

sudo a2ensite localhost-ssl
sudo systemctl restart httpd

그게 다야! 이를 확인하려면 브라우저를 열고 HTTPS 프로토콜(https://localhost 또는 https://system_IP)을 사용하여 URL에 Arch IP를 추가하세요.

7단계: Apache에서 PHP 활성화

20. 기본적으로 Apache는 동적 스크립트 언어 지원 없이 Arch Linux에서 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

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

22. 설정을 확인하려면 DocumnetRoot(/srv/http/)에 info.php라는 이름의 PHP 파일을 생성한 다음 Apache를 다시 시작하고 지정하십시오. 브라우저에서 info.php 파일: https://localhost/info.php로 이동하세요.

<?php

phpinfo();

?>
sudo systemctl restart httpd

그게 다야! 모든 것이 위 이미지와 같다면 이제 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 등과 같은 향후 CMS 플랫폼에 필요한 다른 모듈을 활성화할 수도 있습니다.

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

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

25. PhpMyAdmin 웹 인터페이스에 액세스하기 위해 마지막으로 해야 할 일은 가상 호스트에 PhpMyAdmin Apache 문을 추가하는 것입니다. 보안 조치로 PhpMyAdmin 웹 인터페이스는 HTTPS 프로토콜을 사용하여 로컬 호스트(또는 시스템 IP 주소)에서만 액세스할 수 있고 다른 가상 호스트에서는 액세스할 수 없도록 합니다. 따라서 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>

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

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

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

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

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

sudo systemctl enable httpd mysqld

이것은 Arch Linux 시스템을 소규모 비개발자를 위한 최첨단 서버 소프트웨어를 갖춘 간단하지만 강력하고 빠르고 견고한 웹 플랫폼으로 변환하는 데 필요한 LAMP의 주요 구성 설정 중 일부입니다. -중요한 환경이지만 고집을 부리고 여전히 대규모 프로덕션 환경에서 사용하고 싶다면 충분한 인내심을 갖고 패키지 업데이트에 각별한 주의를 기울이고, 빠른 시스템 복원을 위해 정기적인 시스템 백업 이미지를 만들어야 합니다. 시스템 오류.


판권 소유. © Linux-Console.net • 2019-2024