Ubuntu 18.04에 Linux, Apache, MySQL 및 PHP(LAMP) 스택 설치

16203 단어 ubuntumysqlphpapache
LAMP Stack은 웹 응용 프로그램을 호스팅하는 소스 오픈 소프트웨어입니다.웹 응용 프로그램에는 운영체제(Linux), HTTP 서버(Apache), 데이터베이스 관리 시스템(MySQL)과 프로그래밍 언어(PHP)가 필요하다.
MySQL은 MariaDB,PostgreSQL,NoSQL 데이터베이스, 그리고 PHP의 대체 프로그래밍 언어, 예를 들어Perl과Python 등도 있다.이 설명서는 MySQL을 데이터베이스 및 PHP로 프로그래밍 언어로 다루는 데 초점을 맞춥니다.

선결 조건


이 설명서를 따르려면 루트 sudo 사용자가 아닌 Ubuntu 서버 설정을 사용해야 합니다.이 안내서에서 제 도메인 이름은 demoapp입니다.일반 도메인 이름 형식.

아파치


Ubuntu 패키지 관리자apt를 사용하여 Apache 설치:
sudo apt update
sudo apt install apache2
apt 설치할 패키지와 디스크 공간이 표시됩니다.Y 키를 누르고 Enter 키를 눌러 계속하면 설치가 계속됩니다.
주의: sudo 명령 동작은 루트 권한으로 실행되기 때문에 사용자의 비밀번호를 입력해야 할 수도 있습니다.
브라우저에서 서버의 공용 IP 주소 ((http://server_ip 를 탐색하면 Apache2 Ubuntu 기본 페이지를 볼 수 있습니다.

PHP


ppa:ondrej/php-ppa 저장소를 설치합니다. 최신 php 구축 패키지를 포함합니다.
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
이 안내서에서 우리는 php7을 설치할 것이다.4;
sudo apt install php7.4
명령을 사용하여 설치 확인;
php -v
다음에 자주 사용하는 PHP 확장 기능 설치하기;
sudo apt install php7.4-common php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-curl php7.4-gd php7.4-imagick php7.4-cli php7.4-dev php7.4-imap php7.4-mbstring php7.4-text php7.4-opcache php7.4-soap php7.4-zip php7.4-intl

가상 호스트 설정


ApacheWeb 서버를 사용할 때 가상 호스트를 만들어 구성 세부 사항을 캡슐화할 수 있습니다.이것은 우리가 한 서버에서 여러 개의 영역을 위탁 관리할 수 있게 한다.기본적으로 Ubuntu의 Apache는 /var/www/html 폴더에 있는 파일을 제공합니다.이것은 단일 사이트에 효과가 있기 때문에, 만약 당신이 필요로 한다면, 코드 파일을 이 폴더에 저장한 다음 다음 다음 섹션으로 이동할 수 있습니다./var/www에서 저희 역 사이트에 디렉터리를 만들고 이 디렉터리의 소유권을 분배합니다.
sudo mkdir /var/www/demoapp.com
sudo chown -R $USER:$USER /var/www/demoapp.com
색인을 만듭니다.나노의 php 페이지 사용하기;
nano /var/www/domain/index.php
다음 내용을 추가하고 파일을 저장합니다.
<html>
    <head>
        <title>Hello World</title>
    </head>
    <body>
        <h1>Hello world from demoapp</h1>
    </body>
</html>
그런 다음 가상 호스트 파일을 만들어 이러한 내용을 제공합니다.기본 프로필을 복사하고 수정합시다.
cd /etc/apache2/sites-available
sudo cp 000-default.conf demoapp.com.conf
파일을 열고 다음 명령을 올바른 값으로 수정한 다음 파일을 저장하고 닫습니다.
  • 서버 이름-demoapp.com(서버를 설정하여 자신의 요청 방안, 호스트 이름과 포트를 표시하는 데 사용).
  • 서버 별칭 - www.demoapp.com(호스트의 대체 이름 설정).
  • DocumentRoot-/var/www/demoapp.com(httpd-apache 하이퍼텍스트 전송 프로토콜 서버가 제공하는 파일의 디렉터리를 설정합니다).
  • 새 프로파일을 활성화하고 기본 프로파일을 비활성화합니다.
    sudo a2ensite demoapp.com.conf
    sudo a2dissite 000-default.conf
    
    구성 오류를 확인하고 오류가 없으면 Apache를 다시 시작합니다.
    sudo apache2ctl configtest
    sudo systemctl restart apache2
    
    브라우저의 URL에 액세스하여 변경 사항을 테스트합니다.너는 아래의 이런 물건을 보아야 한다.

    MySQL


    다음 명령을 실행하여 apt 패키지 관리자에서 설치
    sudo apt install mysql-server
    
    설치가 완료되면 다음과 같은 방법으로 설치의 보안을 향상시키는 MySQL로 사전 설치 스크립트를 실행해야 합니다.
  • 사용자 루트 계정에 대한 암호를 설정합니다.
  • 로컬 컴퓨터 외부에서 액세스할 수 있는 루트 계정을 삭제합니다.
  • 익명 사용자 계정을 삭제합니다(이 계정들은 사용자 계정이 없는 상황에서 MySQL 서버에 연결할 수 있도록 허용합니다).
  • 익명 사용자가 접근할 수 있는 테스트 데이터베이스를 삭제한다.
  • sudo mysql_secure_installation
    
    먼저 시스템에서 암호 유효성 검사 플러그인을 활성화할지 여부를 묻습니다.사용할 경우 MySQL은 지정된 기준에 맞지 않는 암호를 거부합니다.이 안내서는 사용되지 않습니다. 사용되면 데이터베이스 인증서에 강력한 유일한 비밀번호를 사용하십시오.
    그런 다음 MySQL 루트 사용자에 대한 암호를 구성합니다.나머지 질문에 대해서는 Y 키를 누르고 프롬프트가 표시될 때마다 Enter 키를 누릅니다.
    루트 사용자로 로그인해서 설치 테스트하기;
    sudo mysql
    
    Exit를 입력하고 Enter를 클릭하여 MySQL 콘솔을 종료합니다.

    MySQL 계정에 대한 암호 액세스


    MySQL에 루트 사용자로 연결할 때 설치 중에 암호를 제공한 경우에도 암호를 제공하지 않습니다.MySQL 5.7 이상 버전을 실행하는 Ubuntu 시스템에서 루트 사용자의 기본 인증 방법은 암호가 아닌 auth socket 플러그인을 사용하기 때문입니다.
    이것은 sudo 권한을 가진 시스템 사용자만 터미널이나 같은 권한을 가진 프로그램을 통해 연결할 수 있고 루트 사용자로 로그인할 수 있다는 것을 의미한다.이것은 매우 좋은 보안 기능이지만 루트 사용자가 PHP 프로그램이나 phpMyAdmin 같은 외부 프로그램에서 연결할 수 없습니다.
    주의해야 할 것은 안전성을 높이기 위해 비교적 적은 권한을 가진 다른 사용자를 만드는 것이 가장 좋다는 것이다. 특히 서버에 여러 개의 데이터베이스를 불러오는 상황에서.
    루트 사용자의 인증 방법을 auth socket에서 mysql native password로 전환하려면 터미널에서 mysql 프롬프트를 엽니다.
    sudo mysql
    
    다음 질의를 통해 루트 사용자가 auth socket 플러그인을 사용하여 인증을 수행했는지 확인합니다.
    SELECT user,authentication_string,plugin,host FROM mysql.user;
    
    루트 사용자를 비밀번호로 인증하도록 설정합니다.다음 암호를 더 강력한 암호로 바꿉니다.
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
    
    새 변경 사항을 사용하기 위해 권한 수여표를 다시 불러옵니다.
    FLUSH PRIVILEGES;
    
    이 때, 당신은 성공적으로 조명 그룹을 설정했습니다.다음 옵션 설정 옵션을 계속할 수 있습니다.

    데이터베이스 관리


    먼저 Ubuntu의 패키지 관리자apt를 사용하여 phpMyAdmin을 설치합니다.
    sudo apt install phpmyadmin
    
    이것은 설치를 정확하게 설정하기 위해 몇 가지 질문을 할 것입니다.다음 사항에 유의하십시오.
  • 프롬프트가 나타나면 "apache2"가 강조 표시되지만 선택되지 않습니다.스페이스바를 눌러 Apache를 선택하고 TAB 키를 누른 다음 Enter 키를 누릅니다.
  • dbconfig common을 사용하여 데이터베이스를 설정하느냐는 질문에 YES를 선택합니다.
  • 다음 단계는 phpMyAdmin에 MySQL 응용 프로그램 비밀번호를 입력하고 명령을 사용하여mbstring PHP 확장을 사용합니다
    sudo phpenmod mbstring
    
    Apache를 다시 시작하여 변경 내용 설정
    sudo systemctl restart apache2
    
    설치를 확인하려면 http://demoapp.com/phpmyadmin로 이동합니다.
    주의: 설치된 phpMyAdmin을 사용할 때 count(): Parameter must be an array or an object that implements Countable 오류가 발생할 수 있습니다.비록 인터넷상에서 이 오류를 해결할 수 있는 많은 방법이 있지만, 나는 가장 간단한 방법을 선택할 것이다. 그것은 바로 phpMyAdmin을 업그레이드하는 것이다.

    phpMyAdmin 업그레이드


    홈 디렉터리로 이동하여 의존 항목을 설치합니다.
    cd ~
    sudo apt install unzip
    
    다음에 현재 phpMyAdmin 디렉터리의 백업을 만듭니다.
    sudo mv /usr/share/phpmyadmin/ /usr/share/phpmyadmin.bak
    
    phpMyAdmin의 최신 버전을 다운로드하여 내용을 압축합니다.
    wget www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip
    unzip phpMyAdmin-latest-all-languages.zip
    
    새 phpMyAdmin 디렉터리를 만들고 추출한 폴더의 내용을 새로 만든 디렉터리로 이동합니다.
    sudo mkdir /usr/share/phpmyadmin
    sudo mv phpMyAdmin-*/* /usr/share/phpmyadmin/
    
    다운로드한 zip 파일과 추출한 폴더 정리하기;
    sudo rm phpMyAdmin-latest-all-languages.zip
    sudo rm -rf phpMyAdmin-*/*
    
    협력업체 구성에서 TEMP DIR 및 CONFIG DIR 상수를 업데이트합니다.php 파일.
    sudo nano /usr/share/phpmyadmin/libraries/vendor_config.php
    
    상수 값을 업데이트합니다.
    define('TEMP_DIR', '/var/lib/phpmyadmin/tmp/');
    define('CONFIG_DIR', '/etc/phpmyadmin/');
    
    파일을 저장하고 phpMyAdmin에 로그인하면 최신 버전을 사용할 수 있습니다.

    설정의 비밀 암호 구문이 너무 짧습니다


    만약 위의 이런 잘못을 보았다면, 복어의 비밀을 열어라.inc.php 파일
    sudo nano /var/lib/phpmyadmin/blowfish_secret.inc.php
    
    $cfg['blowfish secret']의 값을 업데이트합니다.This is a good tool to generate a random string
    $cfg['blowfish_secret'] = '{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V';
    
    파일을 저장하면 phpMyAdmin 대시보드에서 오류가 사라집니다.

    작곡가


    홈 디렉터리에서curl을 사용하여composer 설치 프로그램을 다운로드합니다.
    curl -sS https://getcomposer.org/installer -o composer-setup.php
    
    다음으로 설치 프로그램이 Composer Public Keys/Checksums page에서 찾은 최신 설치 프로그램의 SHA-384 해시와 일치하는지 확인합니다.해싱 복사 및 적절한 대체
    php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    
    설치 프로그램이 손상된 것을 발견하면 설치 스크립트를 다시 다운로드하고 사용한 해시가 정확한지 다시 확인하십시오.일단 검증된 설치 프로그램이 생기면, 너는 계속할 수 있다.
    전역 설치 composer
    sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
    
    설치를 테스트하려면 터미널에서 composer를 입력하고 Enter 키를 누르면 composer 버전과 사용 가능한 명령을 표시하는 출력을 볼 수 있습니다.

    무료 SSL 와일드카드 인증서 암호화


    Let's Encrypt는 웹 사이트에 HTTPS(SSL/TLS)를 사용하기 위해 필요한 디지털 인증서를 제공하고 가능한 한 사용자 친화적인 방식으로 사용할 수 있는 무료, 자동화, 개방적인 인증서 발급 기구 (CA) 이다.
    ppa:certbot/certbot ppa 저장소 설치 및certbot 설치
    sudo add-apt-repository ppa:certbot/certbot
    sudo apt install certbot
    
    다음 명령을 사용하여 와일드카드 인증서 생성하기;
    sudo certbot certonly --manual -d *.demoapp.com -d demoapp.com --agree-tos --no-bootstrap --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
    
    상술한 명령을 실행하면 비슷한 상황을 보게 될 것입니다
    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    Plugins selected: Authenticator manual, Installer None
    Obtaining a new certificate
    Performing the following challenges:
    dns-01 challenge for demoapp.com
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Please deploy a DNS TXT record under the name
    _acme-challenge.demoapp.com with the following value:
    OGdBk2JteHzs8eWxNomoCWRrOJN83ECovDwRiL51ONY
    Before continuing, verify the record is deployed.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    Press Enter to Continue
    
    도메인 이름 공급자에 acme-challenge라는 DNS TXT 레코드를 생성합니다.기록을 인터넷을 통해 전파할 때까지 몇 분 기다렸다가 ENTER 키를 눌러라.비슷한 출력을 보실 수 있을 거예요.
    Waiting for verification...
    Cleaning up challenges
    IMPORTANT NOTES:
    - Congratulations! Your certificate and chain have been saved at:
    /etc/letsencrypt/live/demoapp.com/fullchain.pem
    Your key file has been saved at:
    /etc/letsencrypt/live/demoapp.com/privkey.pem
    Your cert will expire on 2021-02-23. To obtain a new or tweaked
    version of this certificate in the future, simply run certbot
    again. To non-interactively renew *all* of your certificates, run
    "certbot renew"
    - If you like Certbot, please consider supporting our work by:
    Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
    Donating to EFF:                    https://eff.org/donate-le
    Congratulations!! Your wildcard certificate is generated. You can use this wildcard certificate with any sub-domain you create for your domain name.
    
    가상 호스트 구성 파일 수정하기
    sudo nano /etc/apache2/sites-available/demoapp.com.conf
    
    다음을 추가합니다.적절한 값 바꾸기
    <VirtualHost *:443>
        ServerName demoapp.com
        ServerAlias www.demoapp.com
        ServerAdmin [email protected]
        SSLEngine On
        DocumentRoot /var/www/demoapp.com
        ErrorLog ${APACHE_LOG_DIR}/demoapp.com-error.log
        CustomLog ${APACHE_LOG_DIR}/demoapp.com-access.log combined
        SSLCertificateFile /etc/letsencrypt/live/demoapp.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/demoapp.com/privkey.pem
    </VirtualHost>
    
    및 서비스 SSL 연결을 작성하는 SSL 모듈을 활성화합니다.
    sudo a2enmod ssl
    
    구성 오류를 확인하고 오류가 없으면 Apache를 다시 시작합니다.
    sudo apache2ctl configtest
    sudo systemctl restart apache2
    
    이제 액세스할 수 있습니다https://demoapp.com.

    결론


    이 지침에 따라, 당신은 램프 그룹을 성공적으로 설정하고 필요한 프로그램을 설치할 수 있어야 합니다.이게 유용하다고 생각했으면 좋겠어.

    좋은 웹페이지 즐겨찾기