티스토리 뷰
안녕하세요~
오늘은 아파치 웹 서버를 Ubuntu 20.04에 설치하는 방법을 가볍게 작성해보겠습니다.
아파치는 오픈 소스 웹 서버로 많은 사람들이 사용하고 있는 웹서버로 터미널만 잘 다룰 수 있다면 금방 설치할 수 있습니다.
터미널 접속
이 작업을 위해서는 Ubuntu 20.04가 설치된 서버와 터미널에 접근할 수 있는 권한이 필요합니다.
sudo 권한을 가진 사용자로 로그인이 필요합니다. ex) sudo su
패키지 리스트 업데이트
첫 단계로, 우리는 터미널을 열고 아래 명령어를 입력하여 우리의 서버에서 사용 가능한 패키지 리스트를 업데이트해야 합니다. 이렇게 해야 우리의 서버가 최신 버전의 소프트웨어를 다운로드 받을 수 있습니다.
sudo apt update
아파치 설치
다음으로, 아래의 명령어를 사용하여 아파치를 설치하도록 합니다.
sudo apt install apache2
명령어를 입력하면 서버가 디스크에 쓸 내용을 확인하라는 메시지가 나타날 수 있습니다.
그냥 그대로 엔터 키를 누르시면 됩니다.
아파치 서비스 상태 확인
아파치가 성공적으로 설치되었는지 확인하기 위해, 아파치 서비스의 상태를 확인해 봅니다.
아래의 명령어를 입력하면 현재 아파치 서비스 상태를 확인할 수 있습니다.
sudo systemctl status apache2
active (running)이라는 메시지가 표시되면, 아파치가 성공적으로 설치되었음을 의미합니다.
PHP 설치
아파치와 마찬가지로 PHP도 Ubuntu의 기본 패키지 저장소에서 쉽게 설치할 수 있습니다. 아래의 명령어를 통해 PHP를 설치해봅시다.
sudo apt install php libapache2-mod-php php-mysql
이 명령어는 PHP를 설치하고, Apache2 PHP 모듈을 설치하며, MySQL 데이터베이스와 PHP를 연결해주는 확장을 설치합니다.
PHP 설정
PHP의 주 설정 파일은 /etc/php/7.4/apache2/php.ini에 위치해 있습니다. 이 파일을 열어 PHP 설정을 변경할 수 있습니다. 아래의 명령어를 실행하여 설정 파일을 열어봅시다.
sudo nano /etc/php/7.4/apache2/php.ini
이 설정 파일에서는 여러 가지 PHP 옵션을 설정할 수 있습니다. 예를 들어 upload_max_filesize와 post_max_size를 변경하여 업로드 파일 크기의 최대 값을 조정할 수 있습니다. memory_limit 옵션을 변경하여 스크립트가 사용할 수 있는 최대 메모리를 설정할 수도 있습니다.
설정이 끝나면 Ctrl+X를 누르고, Y를 눌러 파일을 저장합니다
vi나 vim을 사용하시는 경우 편집이 끝나면 ESC를 누르고 :wq 를 눌러 저장합니다.
아파치와 PHP 통합 설정
기본적으로 아파치는 .html 파일을 우선적으로 처리합니다. 따라서 .php 파일을 먼저 처리하도록 아파치의 설정을 변경해야 합니다. 아래의 명령어를 실행하여 설정 파일을 열어봅시다.
sudo nano /etc/apache2/mods-enabled/dir.conf
그리고 아래와 같이 <IfModule mod_dir.c> 섹션의 DirectoryIndex 부분을 수정하여 .php 파일이 먼저 처리되도록 설정합니다.
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
마지막으로 아래의 명령어를 실행하여 아파치를 재시작하고, 변경한 설정을 적용시킵니다.
sudo systemctl restart apache2
아파치 가상 호스트 설정하기
가상 호스트 설정은 다양한 웹 사이트를 단일 아파치 웹 서버에서 호스팅할 수 있게 합니다. 이를 위해 아파치 설정 파일을 만들어야 합니다.
sudo nano /etc/apache2/sites-available/mywebsite.conf
그런 다음 아래와 같이 설정 파일을 작성합니다.
<VirtualHost *:80>
ServerName www.yourwebsite.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/yourwebsite
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
이 설정은 예시로 www.yourwebsite.com 웹 사이트에 대한 가상 호스트를 설정합니다. 보통은 이용하실 웹사이트명으로 파일명을 지정시는 경우가 많습니다. 아직 웹사이트가 없으신 경우 아이피로 구성하고 추후 변경하는 것을 추천드립니다.웹 사이트의 내용은 /var/www/yourwebsite 디렉토리에 위치해야 합니다.
설정 파일을 저장한 후에는 아래의 명령어를 실행하여 아파치가 새 설정을 인식하도록 해야 합니다.
sudo a2ensite mywebsite
sudo systemctl restart apache2
MySQL 설치 및 설정하기
다음으로 MySQL을 설치하고 설정합니다. 아래의 명령어로 MySQL 서버를 설치합니다.
sudo apt install mysql-server
설치가 완료된 후에는 MySQL 서버를 보안하기 위한 간단한 설정 과정을 진행해야 합니다. 아래의 명령어를 실행하면 됩니다.
간혹 아래 명령어로 보안설정을 하면서 비밀번호 문제로 무한루프를 겪으시는 경우가 있는데 그럴 경우에는 터미널을 재시작하시고 이단계를 건너 띈 다음 직접 mysql 명령으로 접속하신 후 root 비번을 지정하시는 것도 한 가지 방법입니다.
sudo mysql_secure_installation
이 과정에서 여러 보안 설정을 할 수 있습니다. 예를 들어 root 비밀번호를 설정하고 익명 사용자를 제거하며 root 사용자의 원격 로그인을 제한하고 테스트 데이터베이스를 제거할 수 있습니다.
- 무한루프 때문에 직접 설정하는 경우
mysql 명령으로 접속 후 아래 명령어로 직접 지정하시는 방법이 있습니다.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '<비밀번호>';
MySQL 외부 접속 허용하기
외부에서 MySQL에 접속하려면 MySQL 설정을 변경해야 합니다. 필수 사항은 아니지만 많은 개발자들이 MySQL 워크벤치나 DB접속툴을 이용해 외부접속을 하는 경우가 많습니다.
먼저 MySQL 설정 파일을 열어야 합니다.
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address라는 줄을 찾아 bind-address = 0.0.0.0으로 변경하고 저장합니다.
MySQL 서비스를 재시작합니다.
sudo systemctl restart mysql
이제 MySQL에 로그인하여 원격 접속을 허용할 사용자를 설정합니다.
위의 보안설정을 건너띄신 경우라면 mysql 만으로 접속이 되실겁니다.(이 경우에는 root의 비밀번호도 직접 변경해주시는 것을 추천드립니다.)
sudo mysql -u root -p
create user 'root'@'%' identified by '[password]';
grant all privileges on *.* to 'root'@'%' with grant option;
// 위의 코드는 유저 root의 모든 호스트 및 모든 database에 대한 접속 허용 코드입니다.
// root 가 아닌 다른 사용자라면 root 대신 다른 아이디를 입력하시면 됩니다.
FLUSH PRIVILEGES;
EXIT;
이로써 외부접속이 가능하게 됩니다.
위의 설정은 우분투 서버에서 php 환경을 구성하시는 분들이 많이 자주 사용하시는 설정이고 저 또한 자주 사용하는 설정입니다.
Nginx의 구성을 사용하시는 분들도 많이 계시겠지만 개인적으로 구매한 Laravel 기반 소스가 apache의 구성을 하고 있어 저장 용도로 작성하였습니다.
'프로그래밍 > Ubuntu' 카테고리의 다른 글
Ubuntu 20.04 서버에 PHP 8.1 설치하기 (0) | 2023.07.07 |
---|---|
Ubuntu에서 Composer 버전 관리 (0) | 2023.07.07 |
- Total
- Today
- Yesterday
- Platform Engineering
- gpt-4
- copy.ai
- deno
- 플랫폼 엔지니어링
- 노아스로스팅
- Galaxy z Fold 5
- php
- 대파빵
- JavaScript
- 20.04
- php8.1
- Ai
- 인페인팅
- Federated Learning
- Edge Computing
- Cleanup.pictures
- ubuntu
- AI Ethics
- AutoML
- Zfold5
- chatGPT4
- V8
- Hypersuggest
- ryan dahl
- 갤럭시 Z Fold 5
- 엣지컴퓨팅
- 언팩2023
- 김포레스트점
- 802.11bb
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |