Magento 설치 · 19 min read · Oct 19, 2025
Rocky Linux 9에 Elasticsearch와 함께 Magento 전자상거래 스위트 설치하기

Magento는 PHP로 작성된 오픈 소스 전자상거래 플랫폼입니다. 2018년에 Adobe에 인수되었습니다. 상업용 및 클라우드 기반 제품으로도 제공됩니다. Magento를 사용하여 고용량의 전문 쇼핑 웹사이트를 만들 수 있습니다. 단일 상점 모드와 다중 상점 모드를 모두 제공합니다. 기능을 확장할 수 있는 많은 모듈이 함께 제공됩니다.
이 튜토리얼에서는 Magento 오픈 소스 커뮤니티 에디션을 설치할 것입니다. 전문 온라인 상점을 설정하는 데 필요한 모든 기능을 제공합니다. 또한 제품 카탈로그를 검색하기 위해 Elasticsearch를 설치하고, 세션 및 파일 캐시를 위해 Redis를 설치하며, Nginx 서버를 사용하여 제공할 것입니다.
필수 조건
- 최소 2GB RAM을 갖춘 Rocky Linux 9 서버. 요구 사항에 따라 더 많은 RAM이 필요할 수 있습니다.
- sudo 권한이 있는 비루트 사용자.
- 서버에 대한 완전한 도메인 이름(FQDN),
magento.example.com - 모든 것이 업데이트되었는지 확인하십시오.
$ sudo dnf update - 시스템에서 필요한 몇 가지 패키지.
$ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y이러한 패키지 중 일부는 이미 시스템에 설치되어 있을 수 있습니다.
1단계 - 방화벽 구성
첫 번째 단계는 방화벽을 구성하는 것입니다. Rocky Linux는 Firewalld 방화벽을 사용합니다. 방화벽의 상태를 확인하십시오.
$ sudo firewall-cmd --state
running
방화벽은 다양한 영역과 함께 작동하며, 공용 영역이 우리가 사용할 기본 영역입니다. 방화벽에서 활성화된 모든 서비스와 포트를 나열합니다.
$ sudo firewall-cmd --permanent --list-services
다음과 같은 출력이 표시되어야 합니다.
cockpit dhcpv6-client ssh
HTTP 및 HTTPS 포트를 허용합니다.
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
방화벽의 상태를 다시 확인하십시오.
$ sudo firewall-cmd --permanent --list-services
유사한 출력을 볼 수 있어야 합니다.
cockpit dhcpv6-client http https ssh
변경 사항을 적용하기 위해 방화벽을 다시 로드합니다.
$ sudo firewall-cmd --reload
2단계 - PHP 및 확장 설치
Rocky Linux 9는 기본적으로 PHP 8.1을 제공합니다. 항상 최신 버전의 PHP를 유지하거나 여러 버전의 PHP를 설치하려면 REMI 리포지토리를 사용해야 합니다.
첫 번째 단계는 Epel 리포지토리를 가져오는 것입니다.
$ sudo dnf install epel-release -y
다음으로 Remi 리포지토리를 설치합니다.
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
사용 가능한 PHP 스트림을 확인합니다.
$ dnf module list php -y
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP 스크립팅 언어
Remi의 모듈 리포지토리 for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
php remi-7.4 common [d], devel, minimal PHP 스크립팅 언어
php remi-8.0 common [d], devel, minimal PHP 스크립팅 언어
php remi-8.1 common [d], devel, minimal PHP 스크립팅 언어
php remi-8.2 common [d], devel, minimal PHP 스크립팅 언어
php remi-8.3 common [d], devel, minimal PHP 스크립팅 언어
힌트: [d]efault, [e]nabled, [x]disabled, [i]nstalled
기본 버전은 8.1입니다. 이 튜토리얼을 작성할 당시 Magento는 PHP 8.2와 호환됩니다. 따라서 Remi의 PHP 8.2 리포지토리를 활성화합니다.
$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2
다음 명령을 실행하여 Magento에 필요한 확장과 함께 설치할 수 있습니다.
$ sudo dnf install php-fpm php-cli php-mysql php-mbstring php-xml php-gd php-bcmath php-zip php-curl php-tidy php-intl php-soap php-opcache php-xsl php-sodium
설치를 확인합니다.
$ php --version
PHP 8.2.15 (cli) (built: Jan 16 2024 12:19:32) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.15, Copyright (c) Zend Technologies
with Zend OPcache v8.2.15, Copyright (c), by Zend Technologies
3단계 - Composer 설치
Composer는 PHP의 종속성 관리 도구이며 Magento 설치에 필요합니다.
다음 명령을 실행하여 Composer 바이너리를 다운로드합니다. Magento는 Composer 2.2 LTS를 요구하므로 명령을 수정했습니다.
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php --2.2
$ php -r "unlink('composer-setup.php');"
바이너리를 /usr/local/bin 디렉토리로 이동하여 Composer를 설치합니다.
$ sudo mv composer.phar /usr/local/bin/composer
버전을 확인하여 설치를 검증합니다.
$ composer --version
Composer version 2.2.22 2023-09-29 10:53:45
4단계 - MariaDB 설치
Rocky Linux 9는 이전 버전의 MariaDB를 제공합니다. 따라서 설치를 위해 MariaDB의 리포지토리를 사용할 것입니다. 이 튜토리얼을 작성할 당시 Magento는 MariaDB 10.6을 지원하며, 이를 설치할 것입니다.
MariaDB의 GPG 키를 가져옵니다.
$ sudo rpm --import https://supplychain.mariadb.com/MariaDB-Server-GPG-KEY
/etc/yum.repos.d/mariadb.repo 파일을 생성하고 편집을 위해 엽니다.
$ sudo nano /etc/yum.repos.d/mariadb.repo
다음 코드를 붙여넣습니다.
[mariadb]
name = MariaDB
baseurl = https://rpm.mariadb.org/10.6/rhel/$releasever/$basearch
gpgkey= https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Ctrl + X를 눌러 파일을 저장하고, 프롬프트가 나타나면 Y를 입력합니다.
$ sudo dnf install MariaDB-server
MySQL 버전을 확인합니다.
$ mysql --version
mysql Ver 15.1 Distrib 10.6.16-MariaDB, for Linux (x86_64) using EditLine wrapper
MariaDB 서비스를 활성화하고 시작합니다.
$ sudo systemctl enable mariadb --now
MariaDB 보안 설치 스크립트를 실행합니다.
$ sudo mariadb-secure-installation
루트 비밀번호를 요청받습니다. 비밀번호를 설정하지 않았으므로 Enter를 누릅니다.
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none):
다음으로 Unix 소켓 인증 방법으로 전환할 것인지 묻는 질문이 나옵니다. unix_socket 플러그인은 운영 체제 자격 증명을 사용하여 MariaDB 서버에 연결할 수 있게 해줍니다. 이미 보호된 루트 계정이 있으므로 n을 입력하여 진행합니다.
OK, successfully used password, moving on...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] n
다음으로 루트 비밀번호를 변경할 것인지 묻는 질문이 나옵니다. Y를 입력하여 진행하고 강력하고 안전한 비밀번호로 루트 비밀번호를 변경합니다.
... skipping.
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
다음으로 MariaDB 보안을 개선하기 위한 몇 가지 질문이 나옵니다. 익명 사용자를 제거하고, 원격 루트 로그인을 금지하고, 테스트 데이터베이스를 제거하고, 권한 테이블을 다시 로드하도록 Y를 입력합니다.
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
sudo mysql 또는 sudo mariadb를 입력하여 MariaDB 셸에 들어갈 수 있습니다.
5단계 - MariaDB 구성
MariaDB 셸에 로그인합니다.
$ sudo mariadb
Magento용 데이터베이스를 생성합니다.
MariaDB > CREATE DATABASE magento;
SQL 사용자 계정을 생성합니다.
MariaDB > CREATE USER 'magentouser'@'localhost' IDENTIFIED BY 'Your_password2';
사용자에게 데이터베이스에 대한 모든 권한을 부여합니다.
MariaDB > GRANT ALL PRIVILEGES ON magento.* TO 'magentouser'@'localhost';
사용자 권한을 플러시합니다.
MariaDB > FLUSH PRIVILEGES;
셸을 종료합니다.
MariaDB > exit
6단계 - Nginx 설치
Rocky Linux 9는 이전 버전의 Nginx를 제공합니다. 최신 버전을 설치하려면 공식 Nginx 리포지토리를 사용해야 합니다.
/etc/yum.repos.d/nginx.repo 파일을 생성하고 편집을 위해 엽니다.
$ sudo nano /etc/yum.repos.d/nginx.repo
다음 코드를 붙여넣습니다.
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
작업이 끝나면 Ctrl + X를 눌러 파일을 저장하고 프롬프트가 나타나면 Y를 입력합니다.
Nginx 메인라인을 설치할 것이므로 패키지를 활성화합니다.
$ sudo dnf config-manager --enable nginx-mainline
Nginx를 설치합니다.
$ sudo dnf install nginx -y
설치를 확인합니다.
$ nginx -v
nginx version: nginx/1.25.3
Nginx 서버 서비스를 활성화하고 시작합니다.
$ sudo systemctl enable nginx --now
서비스 상태를 확인합니다.
? nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
Drop-In: /etc/systemd/system/nginx.service.d
??php-fpm.conf
Active: active (running) since Fri 2024-01-26 06:46:17 UTC; 1s ago
Docs: http://nginx.org/en/docs/
Process: 19765 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 19767 (nginx)
Tasks: 3 (limit: 12225)
Memory: 3.1M
CPU: 16ms
CGroup: /system.slice/nginx.service
??19767 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??19768 "nginx: worker process"
??19769 "nginx: worker process"
7단계 - SSL 설치
SSL 인증서를 생성하기 위해 Certbot을 설치해야 합니다. 이를 위해 Snapd 패키지 설치 관리자를 사용할 것입니다. Rocky Linux에는 Snapd가 기본적으로 포함되어 있지 않으므로 Snapd 설치 관리자를 설치합니다. EPEL(Enterprise Linux용 추가 패키지) 리포지토리가 필요합니다. 그러나 3단계에서 이미 설치했으므로 바로 진행할 수 있습니다.
Snapd 패키지를 설치합니다.
$ sudo dnf install -y snapd
Snap 서비스를 활성화하고 시작합니다.
$ sudo systemctl enable snapd --now
Snap 코어 패키지를 설치하고 Snapd 버전이 최신인지 확인합니다.
$ sudo snap install core && sudo snap refresh core
Snapd가 작동하도록 필요한 링크를 생성합니다.
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Certbot을 설치합니다.
$ sudo snap install --classic certbot
Certbot 명령이 /usr/bin 디렉토리에서 실행될 수 있도록 심볼릭 링크를 생성합니다.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Certbot이 제대로 작동하는지 확인합니다.
$ certbot --version
certbot 2.8.0
다음 명령을 실행하여 SSL 인증서를 생성합니다.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d magento.example.com
위 명령은 서버의 /etc/letsencrypt/live/magento.example.com 디렉토리에 인증서를 다운로드합니다.
Diffie-Hellman 그룹 인증서를 생성합니다.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Certbot 갱신 스케줄러 서비스 확인합니다.
$ sudo systemctl list-timers
snap.certbot.renew.service가 실행될 서비스 중 하나로 표시됩니다.
NEXT LEFT LAST PASSED UNIT ACTIVATES
-------------------------------------------------------------------------------------------------------------------------------
Fri 2024-01-26 08:05:24 UTC 1h 1min left Fri 2024-01-26 06:35:00 UTC 29min ago dnf-makecache.timer dnf-makecache.service
Fri 2024-01-26 14:20:42 UTC 7h left Thu 2024-01-25 14:20:42 UTC 16h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Fri 2024-01-26 22:37:00 UTC 15h left - - snap.certbot.renew.timer snap.certbot.renew.service
SSL 갱신이 잘 작동하는지 확인하기 위해 프로세스를 드라이 런합니다.
$ sudo certbot renew --dry-run
오류가 없으면 모든 설정이 완료된 것입니다. 인증서는 자동으로 갱신됩니다.
8단계 - Elasticsearch 설치
Elasticsearch는 Magento에서 제품 검색에 사용됩니다. Magento 2.4.6과 호환되는 버전인 Elasticsearch 7.x를 공식 리포지토리를 사용하여 설치할 것입니다. 요구 사항 페이지에는 Elasticsearch 8.5도 언급되어 있지만 Magento와 제대로 작동하지 않습니다.
Elasticsearch의 GPG 키를 가져옵니다.
$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
/etc/yum.repos.d/ 디렉토리에 elasticsearch.repo라는 파일을 생성하고 편집을 위해 엽니다.
$ sudo nano /etc/yum.repos.d/elasticsearch.repo
다음 코드를 붙여넣습니다.
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
작업이 끝나면 Ctrl + X를 눌러 파일을 저장하고 프롬프트가 나타나면 Y를 입력합니다.
Elasticsearch를 설치합니다.
$ sudo dnf install --enablerepo=elasticsearch elasticsearch
Elasticsearch는 많은 메모리를 사용합니다. 서버 크기에 따라 사용량을 제한해야 합니다. /etc/elasticsearch/jvm.options.d/memory.options 파일을 생성하고 편집을 위해 엽니다.
$ sudo nano /etc/elasticsearch/jvm.options.d/memory.options
다음 코드를 붙여넣습니다. 첫 번째 값은 초기 메모리를 나타내고 두 번째 값은 최대 사용 가능한 메모리를 나타냅니다. 1GB 이상을 사용할 경우 -Xms1g 형식을 사용합니다.
-Xms512m
-Xmx784m
Ctrl + X를 눌러 파일을 저장하고 프롬프트가 나타나면 Y를 입력합니다. 이는 Elasticsearch가 1GB의 RAM을 사용하도록 구성합니다. 요구 사항 및 서버 사양에 따라 수정하십시오.
서비스를 시작하고 활성화합니다.
$ sudo systemctl enable elasticsearch --now
Elasticsearch가 작동하는지 확인합니다.
$ curl http://localhost:9200
다음과 같은 출력을 볼 수 있어야 합니다.
{
"name" : "magento.example.com",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "saBfw0F_Tam6ayGjXr6pEA",
"version" : {
"number" : "7.17.17",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "aba4da413a368e296dfc64fb20897334d0340aa1",
"build_date" : "2024-01-18T10:05:03.821431920Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
9단계 - Redis 서버 설치
Magento는 세션 및 캐시 저장소로 Redis를 사용합니다. 이는 전적으로 선택 사항이며 데이터베이스를 세션 저장소로 사용할 수 있습니다. 그러나 Redis가 더 나은 성능을 발휘합니다. 최신 버전의 Magento는 Redis 7.0과 호환됩니다. Rocky Linux는 Redis 6.0을 제공하므로 설치를 위해 Remi 리포지토리를 사용할 것입니다.
2단계에서 PHP를 설치할 때 Remi 리포지토리를 이미 설치했습니다. 사용 가능한 Redis 모듈을 나열합니다.
$ dnf module list redis
Name Stream Profiles Summary
redis 7 common [d] Redis 지속적인 키-값 데이터베이스
Remi의 모듈 리포지토리 for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
redis remi-5.0 common [d] Redis 지속적인 키-값 데이터베이스
redis remi-6.0 common [d] Redis 지속적인 키-값 데이터베이스
redis remi-6.2 common [d] Redis 지속적인 키-값 데이터베이스
redis remi-7.0 common [d] Redis 지속적인 키-값 데이터베이스
redis remi-7.2 common [d] Redis 지속적인 키-값 데이터베이스
힌트: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Redis 7.0을 활성화합니다.
$ sudo dnf module enable -y redis:remi-7.0
Redis 서버를 설치합니다.
$ sudo dnf install redis
Redis 버전을 확인합니다.
$ redis-server -v
Redis server v=7.0.15 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=77c9855172eb54e9
Redis 서비스를 활성화하고 시작합니다.
$ sudo systemctl enable redis --now
다음 명령을 사용하여 서비스 연결을 확인합니다.
$ redis-cli
Redis 셸로 전환됩니다.
첫 번째 단계는 Redis 기본 사용자에 대한 비밀번호를 설정하는 것입니다. Your_Redis_Password를 선택한 강력한 비밀번호로 바꾸십시오. 비밀번호 앞에 > 문자를 붙이십시오.
127.0.0.1:6379> acl setuser default >Your_Redis_Password
Redis 인증을 테스트합니다.
127.0.0.1:6379> AUTH Your_Redis_Password
OK
서비스에 핑을 보냅니다.
127.0.0.1:6379> ping
PONG
exit를 입력하여 서비스를 종료합니다.
10단계 - Magento 다운로드
Magento의 웹 루트 디렉토리를 생성합니다.
$ sudo mkdir /var/www/html/magento -p
Magento 디렉토리에 현재 사용자에게 권한을 부여합니다.
$ sudo chown $USER:$USER /var/www/html/magento/ -R
다음으로 Magento 리포지토리에 필요한 인증 키를 얻어야 합니다. https://commercemarketplace.adobe.com/ 웹사이트를 방문하고 오른쪽 상단의 로그인 링크를 클릭하면 Adobe ID로 로그인하라는 페이지가 표시됩니다.

Adobe ID로 로그인 버튼을 클릭하여 다음 페이지로 이동합니다.

Adobe ID가 있는 경우 자격 증명을 입력하여 계속하거나 여기에서 계정을 생성할 수 있습니다. 계정을 생성하고 로그인한 후 https://commercemarketplace.adobe.com/customer/accessKeys/ URL을 엽니다. 프로필(https://commercemarketplace.adobe.com/customer/account/)을 방문하고 액세스 키 링크를 클릭하여 이 페이지에 접근할 수도 있습니다.

새 액세스 키 생성 버튼을 클릭하여 인증 키를 생성합니다. 식별을 위해 키에 이름을 지정합니다.

다음 단계에서 사용할 공개 키와 비공개 키를 기록해 두십시오.
~/.config/composer/auth.json 파일을 생성하고 편집을 위해 엽니다.
$ nano ~/.config/composer/auth.json
다음 코드를 붙여넣습니다. 공개 키를 사용자 이름으로, 비공개 키를 비밀번호로 사용합니다.
{
"http-basic": {
"repo.magento.com": {
"username": "",
"password": ""
}
}
}
Ctrl + X를 눌러 파일을 저장하고 프롬프트가 나타나면 Y를 입력합니다.
/var/www/html/magento 디렉토리로 전환합니다.
$ cd /var/www/html/magento
Magento 프로젝트를 생성합니다. 명령의 끝에 있는 .는 명령이 실행되는 현재 디렉토리를 나타냅니다.
$ composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .
다음과 같은 출력을 볼 수 있어야 합니다.
Creating a "magento/project-community-edition" project at "./"
Installing magento/project-community-edition (2.4.6-p3)
- Downloading magento/project-community-edition (2.4.6-p3)
- Installing magento/project-community-edition (2.4.6-p3): Extracting archive
Created project in /var/www/html/magento/.
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 566 installs, 0 updates, 0 removals
- Locking 2tvenom/cborencode (1.0.2)
- Locking adobe-commerce/adobe-ims-metapackage (2.2.0)
- Locking allure-framework/allure-codeception (v2.3.0)
- Locking allure-framework/allure-php-commons (v2.3.1)
- Locking allure-framework/allure-phpunit (v2.1.0)
...............................................
파일 권한을 설정하고 Magento 바이너리를 실행 가능하게 만들기 위해 다음 명령을 실행합니다. 또한 Magento 디렉토리의 소유자를 Nginx 사용자로 설정하여 웹사이트에 접근할 수 있도록 합니다.
$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R :nginx .
$ sudo chmod u+x bin/magento
11단계 - Magento 설치
Magento 디렉토리에 있는지 확인합니다.
$ cd /var/www/html/magento
다음 명령을 실행하여 Magento를 설치합니다.
$ bin/magento setup:install \
--base-url=http://magento.example.com \
--use-secure=1 \
--base-url-secure=https://magento.example.com \
--use-secure-admin=1 \
--db-host=127.0.0.1 \
--db-name=magento \
--db-user=magentouser \
--db-password=Your_password2 \
--admin-firstname=Navjot \
--admin-lastname=Singh \
[email protected] \
--admin-user=navjot \
--admin-password=admin_password \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1 \
--elasticsearch-host=http://127.0.0.1 \
--elasticsearch-port=9200 \
--session-save=redis \
--session-save-redis-db=0 \
--session-save-redis-password=redis_password \
--cache-backend=redis \
--cache-backend-redis-db=2 \
--cache-backend-redis-password=redis_password \
--page-cache=redis \
--page-cache-redis-db=4 \
--page-cache-redis-password=redis_password
프로세스가 완료되면 다음과 같은 출력을 볼 수 있습니다.
.......
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_l5pv1h
Nothing to import.
관리 패널에 접근하기 위해 나중에 필요할 Admin URI를 기록해 두십시오.
Magento 크론 작업을 생성합니다.
$ php bin/magento cron:install
크론 작업을 확인합니다.
$ crontab -l
다음과 같은 출력을 볼 수 있어야 합니다.
#~ MAGENTO START f37deed947b2ea951ad6f939b8ab752bc79587e3d77f40d06f20f0657c98e94d
* * * * * /usr/bin/php /var/www/html/magento/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/html/magento/var/log/magento.cron.log
#~ MAGENTO END f37deed947b2ea951ad6f939b8ab752bc79587e3d77f40d06f20f0657c98e94d
12단계 - PHP-FPM 구성
/etc/php-fpm.d/www.conf 파일을 엽니다.
$ sudo nano /etc/php-fpm.d/www.conf
PHP 프로세스의 Unix 사용자/그룹을 nginx로 설정해야 합니다. 파일에서 user = apache 및 group = apache 줄을 찾아 nginx로 변경합니다.
...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...
파일에서 listen.owner = nobody, listen.group = nobody, listen.mode = 0660 줄을 찾아 주석을 제거한 후 다음과 같이 변경합니다.
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server.
; Default Values: user and group are set as the running user
; mode is set to 0660
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Ctrl + X를 눌러 파일을 저장하고 프롬프트가 나타나면 Y를 입력합니다.
실행 시간을 180초로 늘립니다.
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 180/' /etc/php.ini
PHP-FPM의 메모리 한도를 128MB에서 512MB로 늘립니다. 서버 크기와 요구 사항에 따라 한도를 높일 수 있습니다.
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/' /etc/php.ini
Magento는 기본적으로 미디어 라이브러리의 파일 크기 한도를 2MB로 설정합니다. 다음 명령을 실행하여 파일 크기 한도를 25MB로 늘립니다.
$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 25M/g' /etc/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 25M/g' /etc/php.ini
Zlib 압축을 켭니다.
$ sudo sed -i 's/zlib.output_compression = Off/zlib.output_compression = On/g' /etc/php.ini
realpath_cache 구성을 다음과 같이 늘립니다.
$ sudo sed -i 's/;realpath_cache_size = 4096k/realpath_cache_size = 10M/g' /etc/php.ini
$ sudo sed -i 's/;realpath_cache_ttl = 120/realpath_cache_ttl = 7200/g' /etc/php.ini
/etc/php.d/10-opcache.ini 파일을 편집을 위해 엽니다.
$ sudo nano /etc/php.d/10-opcache.ini
;opcache.save_comments=1 줄을 찾아 주석을 제거합니다.
opcache.save_comments=1
Ctrl + X를 눌러 파일을 저장하고 프롬프트가 나타나면 Y를 입력합니다.
PHP-FPM 서비스를 재시작합니다.
$ sudo systemctl restart php-fpm
PHP 세션 디렉토리의 그룹을 Nginx로 변경합니다.
$ sudo chgrp -R nginx /var/lib/php/session
13단계 - SELinux 구성
다음 명령을 실행하여 Magento 디렉토리의 보안 컨텍스트를 변경합니다.
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/app/etc(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/var(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/pub/media(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/pub/static(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/generated(/.*)?'
$ sudo restorecon -Rv '/var/www/html/magento/'
외부 호스트에 대한 연결을 허용하는 정책을 적용합니다.
$ sudo setsebool -P httpd_can_network_connect 1
Nginx가 PostgreSQL에 접근할 수 있도록 허용하는 정책을 적용합니다.
$ sudo setsebool -P httpd_can_network_connect_db 1
14단계 - Nginx 구성
/etc/nginx/nginx.conf 파일을 편집을 위해 엽니다.
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf; 줄 앞에 다음 줄을 추가합니다.
server_names_hash_bucket_size 64;
Ctrl + X를 눌러 파일을 저장하고 프롬프트가 나타나면 Y를 입력합니다.
/etc/nginx/conf.d/magento.conf 파일을 생성하고 편집을 위해 엽니다.
$ sudo nano /etc/nginx/conf.d/magento.conf
다음 코드를 붙여넣습니다.
upstream fastcgi_backend {
server unix:/run/php-fpm/www.sock;
}
server {
# Redirect any http requests to https
listen 80;
listen [::]:80;
server_name magento.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name magento.example.com;
set $MAGE_ROOT /var/www/html/magento;
include /var/www/html/magento/nginx.conf.sample;
client_max_body_size 25m;
access_log /var/log/nginx/magento.access.log;
error_log /var/log/nginx/magento.error.log;
# TLS configuration
ssl_certificate /etc/letsencrypt/live/magento.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/magento.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/magento.example.com/chain.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
}
작업이 끝나면 Ctrl + X를 눌러 파일을 저장하고 프롬프트가 나타나면 Y를 입력합니다.
Magento는 /var/www/magento/nginx.conf.sample에 Nginx 구성 템플릿을 제공하며, 이를 구성에 포함했습니다. $MAGE_ROOT 변수는 우리가 설정한 Magento 웹 루트 디렉토리를 가리키며 샘플 구성 파일에서 사용됩니다.
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
Nginx 서비스를 재시작합니다.
$ sudo systemctl restart nginx
https://magento.example.com URL을 통해 Magento 웹사이트를 엽니다. 다음 페이지가 표시되어야 합니다.

CSS 및 JS가 로드되지 않으면 다음 명령을 실행합니다.
$ cd /var/www/html/magento
$ sudo php bin/magento setup:static-content:deploy -f
$ sudo php bin/magento indexer:reindex
15단계 - 이중 인증 비활성화
관리 패널에 접근하기 전에 기본적으로 활성화된 이중 인증을 비활성화해야 합니다. Magento는 설치 중에 이중 인증을 활성화하기 위해 sendmail을 통해 메일을 보내려고 하지만, 이를 구성하지 않았으므로 대시보드에 접근하는 유일한 방법은 먼저 이 기능을 비활성화하는 것입니다.
서버에 sendmail이 구성되어 있는 경우 이 단계를 건너뛸 수 있습니다. 다음 명령을 사용하여 Magento의 두 개 모듈을 비활성화하여 이중 인증을 비활성화해야 합니다.
$ sudo php /var/www/html/magento/bin/magento module:disable Magento_AdminAdobeImsTwoFactorAuth
$ sudo php /var/www/html/magento/bin/magento module:disable Magento_TwoFactorAuth
다음 명령을 실행하여 클래스를 생성합니다.
$ sudo php /var/www/html/magento/bin/magento setup:di:compile
캐시도 정리합니다.
$ sudo php /var/www/html/magento/bin/magento c:c
16단계 - 관리 포털 접근
Magento 설치 스크립트에서 제공한 URI를 사용하여 관리 포털을 열어야 합니다. 만약 URI를 기록하는 것을 잊었거나 잃어버린 경우, 다음 명령을 사용하여 URI를 다시 가져올 수 있습니다.
$ php /var/www/magento/bin/magento info:adminuri
Admin URI: /admin_l5pv1h
브라우저에서 https://magento.example.com/admin_l5pv1h URL을 열면 다음 화면이 표시됩니다.

설치 중에 제공한 관리자 자격 증명을 입력하고 로그인 버튼을 클릭하여 진행합니다. 다음 화면이 표시됩니다.

Adobe가 사용 데이터 수집을 요청하는 팝업이 표시됩니다. 진행하려면 허용하지 않음 버튼을 클릭합니다.
다음 단계는 이메일을 위한 SMTP를 구성하여 이중 인증을 다시 활성화할 수 있도록 하는 것입니다. 상점 >> 구성 메뉴를 방문합니다.

왼쪽에서 고급 메뉴를 확장하고 시스템 옵션을 클릭하여 이메일 설정 페이지를 엽니다.

전송, 호스트 및 포트 옵션 앞의 시스템 값 사용을 선택 해제합니다. 전송 드롭다운 메뉴를 클릭하고 SMTP를 선택합니다. 이 튜토리얼에서는 Amazon SES를 메일러로 사용합니다.

SMTP 호스트, 포트 587, 사용자 이름 및 비밀번호를 입력하고 Auth를 LOGIN으로 설정하고 SSL을 TLS로 설정합니다. 완료되면 구성 저장 버튼을 클릭합니다. 이제 이메일 설정을 구성했으므로 다음 단계는 상점 이메일 ID를 구성하여 테스트할 수 있도록 하는 것입니다.
페이지를 위로 스크롤하고, 같은 페이지에서 일반 메뉴를 확장하고 상점 이메일 주소 옵션을 선택합니다.

기본 발신자 이메일 필드를 선택 해제하고 상점의 이메일 ID를 입력합니다. 완료되면 구성 저장 버튼을 클릭합니다. 마찬가지로 연락처 화면을 열고 동일한 변경을 수행한 후 구성 저장 버튼을 클릭하여 완료합니다.

관리자 옵션을 변경하면 캐시에 영향을 미칠 수 있으며 경고가 표시됩니다. 다음 명령을 실행하여 캐시를 수동으로 지웁니다.
$ sudo php /var/www/html/magento/bin/magento c:c
이메일을 테스트하려면 상점 페이지를 방문하고 문의하기 페이지를 엽니다. URL https://magento.example.com/contact/를 사용하여 직접 접근할 수 있습니다. 테스트 메시지를 보내고 제출 버튼을 클릭합니다. 유사한 메일을 받을 수 있어야 합니다.

17단계 - 이중 인증 활성화 및 구성
이제 SMTP 메일러를 활성화했으므로 이중 인증을 다시 활성화할 시간입니다. 다음 명령을 실행하여 이중 인증을 활성화합니다.
$ sudo php /var/www/html/magento/bin/magento module:enable Magento_AdminAdobeImsTwoFactorAuth
$ sudo php /var/www/html/magento/bin/magento module:enable Magento_TwoFactorAuth
모듈에 대한 설정을 업그레이드합니다.
$ sudo php /var/www/html/magento/bin/magento setup:upgrade
다음 명령을 실행하여 클래스를 생성합니다.
$ sudo php /var/www/html/magento/bin/magento setup:di:compile
캐시도 정리합니다.
$ sudo php /var/www/html/magento/bin/magento c:c
관리 영역에 접근할 수 없는 경우 다음 명령도 실행합니다.
정적 콘텐츠를 강제로 배포합니다.
$ sudo php /var/www/html/magento/bin/magento setup:static-content:Deploy -f
파일 권한을 설정합니다.
$ cd /var/www/html/magento
$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R :nginx .
관리 포털을 방문하면 다음 화면이 표시됩니다.

Google Authenticator 방법을 사용할 것입니다. 하드웨어 키가 있는 경우 사용할 수 있습니다. Google Authenticator 방법은 Authy, 1Password, Bitwarden, Microsoft Authenticator 등 모든 TOTP 앱과 함께 작동합니다. 진행하려면 적용 버튼을 클릭합니다.

다음 페이지에서 2FA 앱으로 스캔할 QR 코드가 표시됩니다. 앱에 세부 정보를 입력하고 생성된 코드를 인증 코드 필드에 복사합니다. 진행하려면 확인 버튼을 클릭하여 관리자 대시보드로 이동합니다.
결론
이로써 Rocky Linux 9 서버에 Nginx 서버와 Elasticsearch를 사용하여 Magento 전자상거래 사이트를 설치하는 튜토리얼이 완료되었습니다. 질문이 있으시면 아래 댓글에 남겨주세요.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.