Ubuntu 18.04에 Nginx, PHP 7.4, MySQL 5.7 설치

목적



로컬 환경에서 개발하고 있던 Laravel의 프로젝트를 VPS에 올릴 준비입니다.

OS 버전


$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"

Nginx 설치


$ sudo apt update
$ sudo apt install nginx

설치가 완료되고 브라우저에서 호스트 이름으로 액세스하면 다음 페이지가 표시된다고 생각합니다.



보안 설정



ufw로 방화벽 설정



Ubuntu 18.04에는 방화벽 패키지로 ufw (Uncomplicated Firewall)이 설치되어 있습니다.
SSH(22)와 HTTP(80), HTTPS(443)의 Nginx에 대한 연결을 허용합니다.
$ sudo ufw allow 'Nginx HTTP'
$ sudo ufw allow 'Nginx HTTPS'
$ sudo ufw enable
ufw 명령에 관해서는 아래의 기사가 매우 참고가 되었습니다.ufw 명령 사용 htps : // 이 m / 하나 _ 신 / ms / 630871d 209cf04f3

fail2ban에서 액세스 제한 설정


ufw와 함께 서버에 대한 공격을 모니터링하고 보호해 주는 fail2ban도 도입합니다.
이곳은 설치하고 서비스를 시작하는 것만으로 OK입니다.
$ sudo apt install fail2ban
$ sudo service fail2ban start

Nginx 설정



nginx.conf



Nginx 구성 파일nginx.conf을 수정합니다.
$ sudo vim /etc/nginx/nginx.conf
  • user를 www-data에서 ssh 로그인 사용자로 변경
  • server_token의 주석 처리를 해제합니다.
  • 필요한 경우 client_max_body_size 추가
    이것은 nginx가 POST의 최대 크기를 설정하는 항목입니다 (기본값은 1MB)

  • fastcgi_params



    Nginx에서 PHP를 실행하려면 fastcgi_params도 수정하십시오.fastcgi_params를 열고 끝에 다음을 추가합니다.
    $ sudo vim /etc/nginx/fastcgi_params
    ↓追加します
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    ↑追加します
    

    추가되면 구문 검사를 위해 다음을 수행합니다.
    문제가 없으면 Nginx를 다시 시작합니다.
    $ sudo nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    $ sudo service nginx restart
    

    PHP 7.4 설치



    Ubuntu18.04에서 PHP 7.4를 설치하려면 ondrej/php 리포지토리를 추가해야합니다.
    $ sudo apt install software-properties-common
    $ sudo add-apt-repository ppa:ondrej/php
    

    추가가 완료되면 리포지토리 목록을 업데이트하고 모듈과 함께 PHP 7.4를 설치합니다.
    $ sudo apt update
    $ sudo apt install php7.4-fpm 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-opcache php7.4-soap php7.4-zip unzip -y
    

    php 7.4 및 모듈이 올바르게 설치되었는지 아래 명령으로 확인하십시오.
    $ php -v
    $ php-fpm7.4 -v
    $ php -m
    

    www.conf를 열고 user와 group을 `www-data`에서 ssh 로그인 사용자로 변경합니다.
    $ sudo vim /etc/php/7.4/fpm/pool.d/www.conf
    user = username 
    group = username 
    listen.owner = username 
    listen.group = username
    

    변경할 수 있으면 php-fpm의 구문 체크, 재기동을 실시합니다
    $ sudo php-fpm7.4 -t
    $ sudo service php7.4-fpm restart
    

    Nginx에서 PHP 실행



    sites-available/default


    sites-available/default를 열고 다음과 같이 수정합니다.

    index에 index.php 추가
    index index.php index.html index.htm index.nginx-debian.html;
    

    location ~ .php$ {에 대한 설명이 있으면 닫는 괄호를 포함하여 주석 처리를 제거합니다.
    그렇지 않으면 추가하십시오.
    location ~ \.php$ {
    }
    

    괄호 안에 # fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;와 같은 설명이 있으면 다음과 같이 다시 작성하여 주석 처리를 제거합니다.
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    

    마지막으로 괄호 안에 include fastcgi_params;를 추가합니다.

    설정 예
    index index.php index.html index.htm index.nginx-debian.html;
    
    ...略...
    
    location ~ \.php$ {
           include snippets/fastcgi-php.conf;
    
           # With php-fpm (or other unix sockets):
           fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
           # With php-cgi (or other tcp sockets):
    #      fastcgi_pass 127.0.0.1:9000;
           include fastcgi_params;
    }
    
    

    /var/www/html에서 index.php를 만듭니다.
    <?php
    phpinfo();
    

    여기까지 할 수 있으면 nginx를 재기동시켜 브라우저상으로부터 호스트명으로 액세스 합니다.
    $ sudo nginx -t
    $ sudo service nginx restart
    



    부모의 얼굴보다 본(?) 화면이 나타났네요!

    MySQL 5.7 설치



    apt 명령으로 설치합니다.
    $ sudo apt install mysql-server
    

    다음 명령으로 MySQL 보안 설정을 수행합니다.
    $ sudo mysql_secure_installation
    

    설정 방법은 아래 URL이 참고가 됩니다.
    h tps://우우 bぁ보. 미안해. 네 t/mysql-57-아니 t-세트 p/

    root 암호를 설정할 수 있으면 DB와 사용자를 만듭니다.
    ※ 'DATABASE_NAME', 'YOUR_NAME', 'YOUR_PASSWORD'에 임의의 값을 적절히 다시 작성해 주세요.
    $ mysql -u root -p
    mysql> CREATE DATABASE 'DATABASE_NAME';
    mysql> CREATE USER 'YOUR_NAME'@'localhost' IDENTIFIED BY 'YOUR_PASSWORD';
    mysql> GRANT ALL PRIVILEGES ON DATABASE_NAME.* TO 'your_name'@'localhost';
    

    만들 수 있으면 설정한 사용자와 패스워드로 MySQL 서버에 액세스 할 수 있는지 확인합시다.
    mysql> exit;
    $ mysql -u 'YOUR_NAME' -p
    

    마지막으로 index.php를 다음과 같이 변경하고 PHP에서 MySQL 연결 확인을 수행합니다.
    <?php
        define('DB_HOST', 'localhost');
        define('DB_USER', 'YOUR_NAME');
        define('DB_PASSWORD', 'YOUR_PASSWORD');
        define('DB_NAME', 'DATABASE_NAME');
    
        // エラー表示設定:通知系以外全て表示    
        error_reporting(E_ALL & ~E_NOTICE);
    
        try {
            $dbh = new PDO('mysql:'.DB_NAME.';'.DB_HOST, DB_USER, DB_PASSWORD);
            print('接続しました。');
        }
        catch(PDOException $e){
            print('ERROR:'.$e->getMessage());
            exit;
        }
    
    

    다음 화면이 표시되면 미들웨어 설정이 완료됩니다. 고마워요



    참고 페이지:
    htps //w w.ぉ う ぼぼ k ぇ t. 코 m / 인 s ta l-php 7-4- 온 - 우분 /
    h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s Chion s / 25591040 / Ngin X-Ser rゔ ぇ s php 훗 g- m
    htps : // 놀라운 l. 코m/쿠에 s치온 s/137445

    좋은 웹페이지 즐겨찾기