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 209cf04f3fail2ban에서 액세스 제한 설정
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
Reference
이 문제에 관하여(Ubuntu 18.04에 Nginx, PHP 7.4, MySQL 5.7 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kshiva1126/items/676d939584e0506bb501텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)