Arch Linux에 LAMP(Linux, Apache, MySQL/MariaDB 및 PHP/PhpMyAdmin) 설치
Arch Linux는 유연한 최첨단 시스템 환경을 제공하며 완전한 오픈 소스이고 커널 및 웹 소프트웨어에 대한 최신 릴리스를 제공하므로 중요하지 않은 소규모 시스템에서 웹 응용 프로그램을 개발하는 데 가장 적합한 강력하고 가장 적합한 솔루션입니다. 서버와 데이터베이스.
이 튜토리얼의 주요 범위는 최종적으로 웹 개발에서 가장 많이 사용되는 소프트웨어 조합 중 하나인 LAMP(Linux, Apache, MySQL/MariaDB 및 PHP/PhpMyAdmin ) 그러면 Arch Linux 시스템에는 없지만 여러 가상 호스트를 생성하는 작업을 쉽게 할 수 있는 몇 가지 멋진 기능(빠르고 지저분한 Bash 스크립트)이 제공됩니다. , 보안 HTTS 거래에 필요한 SSL 인증서 및 키를 생성하세요.
요구사항
- 이전 Arch Linux 설치 과정 - DHCP를 사용하는 마지막 부분을 건너뜁니다.
- 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. 이제 가상 호스트 구성 파일을 활성화 또는 비활성화하는 명령 역할을 하는 a2ensite 및 a2dissite Apache 스크립트를 생성할 차례입니다. cd 명령을 입력하여 $HOME 사용자 경로로 돌아가서 다음을 사용하여 bash a2eniste 및 a2dissite 스크립트를 만듭니다. 좋아하는 편집자.
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 이름이 있는 모든 쿼리를 다음으로 리디렉션하도록 지시하는 Port 및 ServerName 지시문입니다. /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>
Port 및 ServerName 지시어 외에도 여기서 중요한 다른 지시어는 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의 주요 구성 설정 중 일부입니다. -중요한 환경이지만 고집을 부리고 여전히 대규모 프로덕션 환경에서 사용하고 싶다면 충분한 인내심을 갖고 패키지 업데이트에 각별한 주의를 기울이고, 빠른 시스템 복원을 위해 정기적인 시스템 백업 이미지를 만들어야 합니다. 시스템 오류.