[CentOS7] Nginx, PHP7, MySQL(MariaDB) ์ค์น ๋ฐ ์ธํ ํ๊ธฐ
LEMP ์คํ
LEMP์คํ์ด๋ Linux + Nginx + MySQL(MariaDB)๋ก ๊ตฌ์ฑํ์ฌ ๋์ ์น ์ดํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ์ ์ผ์ปซ๋ ๋ง์ด๋ค.
๋น์ทํ ๋ง๋ก LAMP์คํ์ด๋ผ๊ณ LEMP์คํ์์ Nginx๋์ Apache๋ก ๊ตฌ์ฑํ ์คํ๋ ์ญ์ ์ ๋ช ํ๋ค.
์ด ๊ธ์์๋ LEMP ์คํ์ ์ค์นํ๋ ๋ฒ์ ์์ ํ๊ฒ ๋ค!
์๋ง ๋ฆฌ๋ ์ค๋ฅผ ๋ค๋ฃจ๋ฉด์ ๊ฐ์ฅ ์ฒ์์ ๋๊ด์ ๊ฒช๋๋ฐ ๊ฐ๋ฐํ๊ฒฝ ์ธํ ์ด๋ผ๊ณ ์๊ฐํ๋ค.
์ค์น ์์๊ฐ ๊ผฌ์ด๊ธฐ๋ง ํ๋๋ผ๋ ์ค์น๊ฐ ์๋๋ ๊ฒฝ์ฐ๋ ์๊ณ ,
์ฌ๋ฌ๋ชจ๋ก ๊ณจ์น๊ฐ ์ํ๋ค (๊ทธ๋์ docker๊ฐ์ ๊ฐ์ํ ๋๊ตฌ๋ฅผ ์ฐ๋๊ฑฐ์ง๋ง ใ ใ )
Nginx ์ค์นํ๊ธฐ
Nginx๋ ์น ์๋ฒ ์ข ๋ฅ ์ค ํ๋๋ก Apache ์น ์๋ฒ์ ๋๋ถ์ด ๊ฐ์ฅ ์ธ๊ธฐ๊ฐ ๋ง์ ์น์๋ฒ ์ค ํ๋๋ค!
Nginx์ Apache๋ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด ๋ค๋ฅธ๋ฐ ์ด ๊ธ์์๋ ์ค์น ๋ฐ ์ธํ ํ๋๋ฐ ์ค์ ์ ๋ง์ถฐ ํฌ์คํ ํ๊ฒ ๋ค
๊ธฐ๋ณธ์ ์ธ CentOS ์ ์ฅ์๋ก๋ Nginx๋ฅผ ์ค์นํ ์ ์์ผ๋ฏ๋ก EPEL ์ ์ฅ์๋ฅผ ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ก ์ค์นํ๋ค.
yum install epel-release -y
๋ค์์ผ๋ก Nginx๋ฅผ ์ค์นํ๋ค.
yum install nginx -y
์ค์น๊ฐ ์๋ฃ๋๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด ๋ฆฌ๋ ์ค๋ฅผ ์ฌ์์ ํด๋ ์๋์ผ๋ก Nginx๊ฐ ๋์๊ฐ ์ ์๊ฒ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅ ํ๋ค.
systemctl start nginx
systemctl enable nginx
systemctl๋ ์์์ ์ธ๊ธ ํ ๋๋ก ๋ฆฌ๋ ์ค๋ฅผ ์ฌ์์ํด๋ ๋ฐฑ๊ทธ๋ผ์ด๋(๋ฐ๋ชฌ์ํ)๋ก ์ดํ๋ฆฌ์ผ์ด์ ์ ๋์์์ผ์ฃผ๋ ๋ช ๋ ์ด๋ค.
๋ค์ ๊ฐ์๋จธ์ ์์ ๋ฒ์ด๋ ์๋์ฐ ํ๊ฒฝ์์ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์คํ ์ํจ๋ค ์ฃผ์์ฐฝ์
http://๊ฐ์๋จธ์ ์ฃผ์
๋ฅผ ์ ๋ ฅํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์น์๋ฒ๊ฐ ์ ์์ ์ผ๋ก ๋์ํ๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
๊ฐ์๋จธ์ ๋คํธ์ํฌ ์ธํ ํ๋ ๋ฒ์ ๋ค์ ํฌ์คํ ์ ์ฐธ๊ณ ํ์!
VirtualBox์์ ๊ฐ์ํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ
PHP 7.1 ์ค์นํ๊ธฐ
PHP7.1 ์ค์น๋ฅผ ํ๊ธฐ์ํด์๋ Nginx ์ค์น์ ๋์ผํ๊ฒ PHP7.1 ํจํค์ง๊ฐ ํฌํจ๋ ์ถ๊ฐ์ ์ธ CentOS ์ ์ฅ์๊ฐ ํ์ํ๋ค.
๋ค์ ๋ช ๋ น์ด๋ก ์ถ๊ฐ ์ ์ฅ์๋ฅผ ์ค์นํ์.
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm
์ถ๊ฐ ์ ์ฅ์๋ฅผ ์ค์นํ๊ณ ๋์ ๊ธฐ๋ณธ์ ์ผ๋ก PHP7.1 ํจํค์ง๊ฐ ๋นํ์ฑํ ๋์๋๋ฐ ๋ค์ ๋ช ๋ น์ด๋ก ํ์ฑํ์์ผ์ผ ํ๋ค.
yum install yum-utils -y
yum-config-manager --enable remi-php71
๋ค์์ผ๋ก ๊ธฐ๋ณธ์ ์ธ PHP ํจํค์ง๋ค์ ์ค์นํ๋ค
yum --enablerepo=remi,remi-php71 install php-fpm php-common -y
๋ง์ง๋ง์ผ๋ก ๊ธฐ๋ณธ PHP ๋ชจ๋๋ค์ ์ค์นํ๋ค.
yum --enablerepo=remi,remi-php71 install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml -y
Nginx & PHP ์ธํ ํ๊ธฐ
์ด์ Nginx์ PHP๋ฅผ ๋ด ์ ๋ง๋๋ก ์ฌ์ฉํ๊ธฐ์ํด ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๋ฐ๋ผ ์ธํ ํ๋ค.
๋จผ์ Nginx ์ค์ ์ ๋ฐ๊พธ๊ธฐ ์ํด์ vi ํธ์ง๊ธฐ๋ก ๋ค์ ํ์ผ์ ๋ง๋ ๋ค.
vi /etc/nginx/conf.d/default.conf
nginx์ ์ค์ ํ์ผ ๊ฒฝ๋ก๋ /etc/nginx ํด๋์ ์์นํ๊ณ ์๋ค.
server {
listen 80;
server_name 192.168.56.102;
#server_name์๋ ์์๊ฐ์ด ๊ฐ์ํ๊ฒฝ IP๋ฅผ ์
๋ ฅํ๋ค
root /game/html;
#์๋๋ /usr/share/nginx/html ๊ฒฝ๋ก๋ก ์กํ์๋๋ฐ, ๊ธฐ๋ณธ ํด๋๋ฅผ ์๊ธฐ ์
๋ง๋๋ก ๋ฐ๊พธ๋ฉด๋๋ค.
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /game/html;
#์ด ๋ถ๋ถ ์ญ์ ์๊ธฐ๊ฐ ์ํ๋ ํด๋๋ก ๋ฐ๊ฟ์ค๋ค
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
server_name์๋ ์์ ์ ๊ฐ์ํ๊ฒฝ IP๋ฅผ ์ ๋ ฅํด์ผํ๋ค!
๋ํ, root ์์ ์๋ /usr/share/nginx/html๋ก ์ค์ ๋์ด์์๋ค.
ํ์ง๋ง! ๋๋ /game/html๋ก ๋ฐ๊ฟจ๋๋ฐ ์ด ์๋ฏธ๋ ์ฐ๋ฆฌ๊ฐ nginx๋ฅผ ์ค์น ํ ๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด
"http://๊ฐ์๋จธ์ ์ฃผ์"๋ฅผ ์ ๋ ฅํ๋ฉด nginx ๋ฉ์ธ ํ์ด์ง๊ฐ ๋ณด์ฌ์ก๋๋ฐ ๊ทธ ์๋ฆฌ๋
์ค์ ๋ก /usr/share/nginx/html/index.html ์ด ํ์ผ์ด ๋ธ๋ผ์ฐ์ ์ ๋ณด์ฌ์ง๊ฒ์ด๋ค
ํ์ง๋ง ๋๋ ๊ธฐ๋ณธ nginx ํด๋ ๊ฒฝ๋ก๊ฐ ์๋ ๋ด๊ฐ ์ค์ ํ ํด๋๋ฅผ ์น์๋ฒ์ ๊ธฐ๋ณธ ํด๋๋ก ์ก๊ณ ์ถ์ด์
root์๋ค /game/html์ด๋ผ๋ ๊ฒฝ๋ก๋ฅผ ์ ์ด์ฃผ์๋ค.
์์ผ๋ก ์นํ์ด์ง๋ ์ด ๊ฒฝ๋ก์ ์์น์ํฌ๊ฒ์ด๋ค!
๋ํ ๋ค์ ๋ช ๋ น์ด๋ก ์ญ์ root๋ฅผ ๋ด๊ฐ ์์น์ํฌ ํด๋๋ฅผ ์ง์ ์์ผ์ค๋ค.
vi /etc/nginx/nginx.conf
์ฌ๊ธฐ์ root ํญ๋ชฉ์ ์ฐพ์์ ๋ด๊ฐ ์ง์ ํ ํด๋๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค.
์ค์ ์ด ์๋ฃ๋์์ผ๋ฉด Nginx ์๋น์ค๋ฅผ ๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด ์ฌ์์ํ๋ค.
systemctl restart nginx
๋ค์์๋ PHP-FPM๋ฅผ ์ธํ ํ ๊ฒ์ด๋ค.
PHP-FPM *์์ด๋ Nginx๋ง์ผ๋ก๋ *์น์๋ฒ๋ฅผ ์ด์ ํ ์ ์๋๋ฐ ์น์๋ฒ๋ง์ผ๋ก๋ ์ ์ ์ธ ํ์ด์ง๋ฐ์ ํํ์ ๋ชปํ๋ค.
์ ์ ์ธ ํ์ด์ง๋ ์ฐ๋ฆฌ๊ฐ ๋ง๋ htmlํ์ผ๋ค์ ๊ทธ๋ฅ ๋ณด์ฌ์ฃผ๊ณ ๋ค๋ฅธ ๊ณณ์ผ๋ก ๋งํฌ์ํค๊ณ .. ์ด๋ฌํ ๊ธฐ๋ฅ๋ฐ์ ๋ชปํ๋ ํ์ด์ง๋ฅผ ๋ปํ๋๋ฐ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒ์ ์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ ฅ์ ๋ฐ์ DB์๋ ์ ์ฅ์ํค๊ณ , ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณต์์ผ์ ์ฌ์ฉ์ํํ ํํํ๊ณ ์ถ์ ๊ทธ๋ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ค!
๊ทธ๋ฌ๊ธฐ ์ํด์ ์ถ๊ฐ์ ์ผ๋ก Nginx์ PHP๋ฅผ ์ฐ๋์์ผ ๋์ ์ธ ์น์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถ ํ ์ ์๋ค!
PHP-FPM๋ฅผ ์ค์ ํ๊ธฐ ์ํด์ ๋ค์ ํ์ผ์ viํธ์ง๊ธฐ๋ก ์ฐ๋ค.
nano /etc/php-fpm.d/www.conf
๊ทธ๋ฆฌ๊ณ ๋ค์๊ณผ ๊ฐ์ ๋ผ์ธ์ ์ฐพ์ ํด๋นํ๋ ๋ด์ฉ๋๋ก ๋ฐ๊ฟ์ค๋ค.
user = apache๋ฅผ user = nginx๋ก ์์
group = apache๋ฅผ group = nginx๋ก ์์
;listen.owner = nobody๋ฅผ listen.owner = nginx๋ก ์์
;listen.group = nobody๋ฅผ listen.group = nginx๋ก ์์
listen = 127.0.0.1:9000 ๋ฅผ listen = /var/run/php-fpm/php-fpm.sock๋ก ์์
๊ฐ๋จํ๊ฒ ์ค์ ํ์ผ์ ๋ํด ์ฒจ์ธํ์๋ฉด,
ํ๋์ ์ฅ๋น์์ Nginx์ PHP-FPM์ด ์ด์๋๋ค๋ฉด ์ ๋์ค ์์ผ ๋ฐฉ์์ด ๋ ์ ๋ฆฌํ๋ค
๊ทธ๋ ๊ธฐ์, listen์๋ค unix ์์ผ์ ์์ฑํด์ฃผ์๊ณ PHP-FPM ์๋น์ค์ ๊ถํ์ nginx๋ฅผ ์์ ์์ผฐ๋ค.
์ด์ ๋ด๊ฐ ์ค์ ์์ ์ง์ ํด์ค ๊ธฐ๋ณธ ํด๋(/game/html) ์ PHP-FPM์ด ์ ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด
๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ก ํ ์คํธ phpํ์ผ์ ํ๋ ๋ง๋ค์ด์ค๋ค.
vi /game/html/test.php
<?php
phpinfo();
phpinfo()ํจ์๋ PHP์ ์ค์ ๋ด์ฉ์ ๋ณด์ฌ์ฃผ๋ ํจ์๋ค.
์ด์ ์๋์ฐ๋ก ๋์๊ฐ ๋ธ๋ผ์ฐ์ ์ฃผ์ ์ ๋ ฅ์ฐฝ์ http://๊ฐ์๋จธ์ ์ฃผ์/test.php ๋ฅผ ์ ๋ ฅํ๋ฉด
๋ค์๊ณผ ๊ฐ์ด ์~ ์๋ํ๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค. (PHP๋ฅผ ์ค์นํ์ง ์์์ผ๋ฉด ํ๋ฉด์ด ๋์ค์ง ์์์ ๊ฒ์ด๋ค)
ํน์ 404 Not found๋ ๋ค๋ฅธ ์ค๋ฅ ํ์ด์ง๊ฐ ์ถ๋ ฅํ๋ค๋ฉด ์๋ ๊ณผ์ ์ ์ถ๊ฐ์ ์ผ๋ก ๋ ์งํํ๋ค.
vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
๋ค์๊ณผ ๊ฐ์ด SELINUX๋ฅผ disabled๋ก ์์ ํ๊ณ ์ฌ๋ถํ ํ๋ค.
SELINUX๋ ๋ฆฌ๋ ์ค์ ๋ณด์์ ์ธ ๋ฉด์ ๋ด๋นํ๋๋ฐ ๋ก์ปฌ ๊ฐ์ํ๊ฒฝ์์๋ ๋ฌธ์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋นํ์ฑํ ํด์ฃผ์์ง๋ง ์ค์ ์์ฉ ํ๊ฒฝ์์๋ SELINUX ์ ์ฑ ์ ์์ธ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ ๊ฒ์ด ์ข๋ค
MySQL(MariaDB) ์ค์น
์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ๋ช ํ MySQL๋ฅผ ์ค์นํ ๊ฒ์ด๋ค.
CentOS7์์๋ MySQL์ด ์๋ MariaDB๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์กํ์ MariaDB๋ฅผ ์ค์น ํ ๊ฒ์ด๋ค.
MariaDB๋ MySQL์ ๋ผ์ด์ผ์ค์ ๋ฐ๋ฐํ์ฌ ์คํ ์์ค RDBMS๋ค.
์ฆ ๋ฌด๋ฃ๋ผ๋ ์ฌ์ค! MySQL ์์ค์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ํ์๊ธฐ ๋๋ฌธ์
๊ธฐ์กด MySQL๊ณผ ๋๊ฐ์ด ์ฌ์ฉํ๋๋ฐ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ๋ณธ๋ค
๋ค์ ๋ช ๋ น์ด๋ก MariaDB๋ฅผ ์ค์นํ๋ค.
yum install mariadb-server mariadb -y
์ค์น๊ฐ ์๋ฃ๋์์ผ๋ฉด ์๋น์ค๋ฅผ ๋ฑ๋กํ๋ค.
systemctl start mariadb
systemctl enable mariadb
๋ง์ง๋ง์ผ๋ก ๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด ๊ธฐ๋ณธ์ ์ธ ์ค์ ์ ์ ๋ ฅํ๋ค.
mysql_secure_installation
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorization.
New password: password
Re-enter new password: password
Password updated successfully!
Reloading privilege tables..
... Success!
๋ฌป๋ ํญ๋ชฉ์ ๋ฐ๋ผ Y/N๋ฅผ ์๊ธฐ ์ ๋ง์ ๋ฐ๋ผ ์ ํํด์ ์ ๋ ฅํ๊ณ root ๊ณ์ ์ ํจ์ค์๋๋ฅผ ์ค์ ํด์ฃผ๋ฉด ์ค์น๊ฐ ์๋ฃ๋๋ค.
'OS > Linux' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[Shell Command] ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ(ํจ์ค์๋) ๋ณ๊ฒฝ, ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ(ํจ์ค์๋) ์คํจ ํ์ ์ด๊ธฐํ
[Shell Command] ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ(ํจ์ค์๋) ๋ณ๊ฒฝ, ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ(ํจ์ค์๋) ์คํจ ํ์ ์ด๊ธฐํ
2019.09.27 -
[vi] ์ ์ฒด ๋ด์ฉ ์ง์ฐ๊ธฐ
[vi] ์ ์ฒด ๋ด์ฉ ์ง์ฐ๊ธฐ
2019.09.19 -
[rsync] rsync๋ง๋ค ๋งค๋ฒ ํจ์ค์๋๋ฅผ ๋ฌผ์ด ๋ณผ ๋ ํด๊ฒฐ๋ฒ
[rsync] rsync๋ง๋ค ๋งค๋ฒ ํจ์ค์๋๋ฅผ ๋ฌผ์ด ๋ณผ ๋ ํด๊ฒฐ๋ฒ
2019.09.02 -
[Command] ๋ฌธ์์ด ๊ฒ์์ ํตํด ํ์ผ ์ญ์ ์ํค๊ธฐ (exec)
[Command] ๋ฌธ์์ด ๊ฒ์์ ํตํด ํ์ผ ์ญ์ ์ํค๊ธฐ (exec)
2018.11.29