[SERVER] Amazon Linux 2023 LAMP 셋팅

2024. 4. 12. 16:11Server



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

# Amazon Linux 2023 에서
# Apache http, MariaDB, PHP
# 설치 진행

 

# 환경 
# aws ec2
# linux version : amazone linux 2023
# 셋팅 환경 : php, apache httpd, mariadb

 

밑에서 나오는 3개는 전체 검색 후 전체 수정으로 진행한다.

수정해야할 단어 ID, Domain, IP :  [아이디] | [내도메인] | [내 아이피]

아이디는 프로젝트 명인데 나는 보통 도메인에 .com 이나 .co.kr을 뺀 도메인 root 도메인을 아이디로 삼는다.

 

# ec2-user로 접속 후 root로 로그인
sudo su

#퀵 소프트웨어 업데이트
sudo dnf update -y

#웹 서버, PHP 설치
sudo dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel

php -version
>> PHP 8.2.15

httpd -versoin
>> Apache/2.4.58


#MariaDB 설치
sudo dnf install -y mariadb105-server

#웹 서버 시작
sudo systemctl start httpd

#웹 서버 자동 재시작 설정
sudo systemctl enable httpd

#웹 서버 자동 재시작 설정 확인
sudo systemctl is-enabled httpd
>> enabled

#파일권한 설정
sudo usermod -a -G apache ec2-user
(ec2-user를 apache 그룹에 추가합니다.)

exit
groups
(그룹을 확인하기 위해 로그아웃 후, 다시 로그인하고, 그룹을 확인합니다.)

sudo chown -R ec2-user:apache /var/www
(/var/www 및 그 콘텐츠의 그룹 소유권을 apache 그룹으로 변경합니다.)

sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
(그룹 쓰기 권한을 추가하여 나중에 하위 디렉터리에 대한 그룹 ID를 설정하려면 /var/www와 그 하위 디렉터리의 디렉터리 권한을 변경합니다.)

find /var/www -type f -exec sudo chmod 0664 {} \;
(그룹 쓰기 권한을 추가하려면 /var/www 및 그 하위 디렉터리의 파일 권한을 반복하여 변경합니다.)

#다시 root 로그인
sudo su


#데이터베이스 설정
sudo systemctl start mariadb

sudo mysql_secure_installation
MariaDB 보안 설정을 위해 위의 명령어를 실행시키면,

현재 비밀번호를 입력하라고 나오는데, 초기의 비밀번호는 없기 때문에, 그냥 enter키를 눌러 넘어가줍니다.
비밀번호를 설정하겠냐고 묻는데 Y를 입력하고, 사용할 비밀번호를 두 번 입력해줍니다.
이후 물음에 대해서는 전부 Y를 입력해주면 보안 설정이 끝나게 됩니다.

sudo systemctl enable mariadb
(마지막으로 서버가 재부팅 되더라도, MariaDB가 자동으로 재시작할 수 있도록 위의 명령어를 입력해줍니다.)

#접속해보기
mariadb -u root -p
패스워드 입력 : 

잘 접속 됩니다. 다른 tool로 접속하려면 aws 보안에서 3306 포트도 열어줘야 합니다.

# 이제 설정에 들어간다
#######################################################################
수정해야할 단어 ID, Domain, IP :  [아이디] | [내도메인] | [내 아이피]
#######################################################################

도메인은 가비아에서 샀다고 가정한다.

# 사용자 추가 및 /home에 계정 생성, /www directory 권한 추가
useradd [아이디]
chmod 701 /home/[아이디]
mkdir /home/[아이디]/www
touch /home/[아이디]/www/index.php
echo 'hello php' > /home/[아이디]/www/index.php
chown [아이디].[아이디] /home/[아이디]/www -R
passwd [아이디]
비밀번호 입력 : 

# virtual host 추가
touch /etc/httpd/conf.d/[내도메인].conf

echo '
## [아이디] ##
<VirtualHost *:80>
        ServerAdmin admin@[내도메인]
        ServerName [내도메인]
        ServerAlias www.[내도메인]
        DocumentRoot /home/[아이디]/www

        ErrorLog /home/ec2-user/logs/[내도메인]_error_log
        CustomLog /home/ec2-user/logs/[내도메인]_access_log combined
</VirtualHost>
' > /etc/httpd/conf.d/[내도메인].conf

# 들어가서 밑에 내용이 잘 들어갔다면 OK
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
<VirtualHost *:80>
        ServerAdmin admin@[내도메인]
        ServerName [내도메인]
        ServerAlias www.[내도메인]
        DocumentRoot /home/[아이디]/www

        ErrorLog /home/ec2-user/logs/[내도메인]_error_log
        CustomLog /home/ec2-user/logs/[내도메인]_access_log combined
</VirtualHost>
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

#로그 경로 create director
mkdir /home/ec2-user/logs

# httpd 설정파일 복사(기본설정파일 유지를 위함)
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.old

# httpd 설정파일 수정 진행

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
(echo '가 앞에 오는건 그냥 쉘에서 입력 할 것.)
echo 'ServerRoot "/etc/httpd"

Listen 80

Include conf.modules.d/*.conf

User apache
Group apache

ServerAdmin root@localhost

#ServerName http://www.example.com:80

<Directory />
    AllowOverride none
    Require all denied
</Directory>

DocumentRoot "/var/www/html"

<Directory "/home/*">
    AllowOverride All
    Options +ExecCGI
    Require all granted
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks

    AllowOverride None

    Require all granted
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

<Files ".ht*">
    Require all denied
</Files>

ErrorLog "logs/error_log"

LogLevel warn

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    CustomLog "logs/access_log" combined
</IfModule>

<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

</IfModule>
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

<IfModule mime_module>
    TypesConfig /etc/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>

AddDefaultCharset UTF-8

<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>

EnableSendfile on

IncludeOptional conf.d/*.conf' > /etc/httpd/conf/httpd.conf
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


# 웹서버 재시작
systemctl restart httpd


# 여기까지 진행 후 가비아 도메인 연결을 했다면 주소창에 도메인 입력시 잘 나오게 됩니다.



# vsftpd (FTP 설치) / 현재 아이피 : [내 아이피]
dnf -y install vsftpd


# vsftpd 설정 복사
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.old


# 복사 후 기존 내용 삭제
echo 'anonymous_enable=NO
local_umask=022
local_enable=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=NO
xferlog_std_format=YES

chroot_local_user=YES
allow_writeable_chroot=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
#listen_port=10021
pasv_enable=YES
pasv_min_port=21000
pasv_max_port=21999
pasv_addr_resolve=NO
pasv_address=[내 아이피]' > /etc/vsftpd/vsftpd.conf


# aws 보안 > 인바운드 규칙 편집
21000-21999
20-21
내 아이피만

# 상기 위치 상세 정보는
EC2 > 
인스턴스 > 
인스턴스 ID 클릭해서 상세 이동 > 
상세 내용 하단쪽에 보안 탭 클릭 > 
보안그룹 밑에 눌러서 이동 >
인바운드 규칙 편집 클릭 > 
규칙 추가 > 사용자 지정 TCP(그대로 두기), 포트 범위 21000-21999 입력, 내 아이피만 입력
규칙 추가 > 사용자 지정 TCP(그대로 두기), 포트 범위 20-21 입력, 내 아이피만 입력
이렇게 두개 입력 후 규칙 저장

내 아이피만 21000~21999, 20~21 포트가 열리게 된다.


# userlist 설정 복사
cp /etc/vsftpd/user_list /etc/vsftpd/user_list.old


# userlist 추가
echo '[아이디]' >> /etc/vsftpd/user_list


# vsftpd 재 시작
systemctl restart vsftpd

# vsftpd 자동 재시작 설정
sudo systemctl enable vsftpd

# vsftpd 자동 재시작 설정 확인 확인
systemctl is-enabled vsftpd
> enabled

이제 EditPlus 또는 다른 FTP에서 
IP : [내 아이피]
ID : [아이디]
PW : 입력했던

을 입력하면 접속이 된다.