본문 바로가기
코딩, 개발 꾸준히 하면 볕날선생만큼 한다.

Create free WordPress on Oracle Cloud VM instance:: Install NginX + PHP + MariaDB + Wordpress

by 볕날선생 2021. 5. 18.
728x90
반응형

Oracle Cloud VM 인스턴스에서 무료 WordPress 생성 하기 : NginX + PHP + MariaDB + Wordpress 설치 

 

지난 글 https://imflower.tistory.com/2792

 

오라클 클라우드 VM 인스턴스 무료 로 워드프레스 WordPress 만들기 :: Free Oracle Cloud Web Hosting 워프 Wo

복습, 2021년 5월 17일 오전 10시 53분 시작. Oracle Cloud https://cloud.oracle.com/ 에서 워드프레스 만들기 1. 가상 네트워크 환경 만들기 오라클 클라우드 무료 회원가입 을 하고 홈 - 네트워킹 - 개요 에 들.

imflower.tistory.com

을 통해서 터잡고 기반공사를 끝냈다. 그리고 이어서 엔진엑스 피에이치피 마리아디비 워프 를 설치하겠다.

 

4. 내가 잘 쓰는 퍼티 PuTTY를 통해서 리눅스 명령어를 통해 설치를 하겠다.

우선 퍼티 설정 부터 PuTTY를 실행하면 퍼티 Configuraion 화면이 뜨는데 여기에 전편에 만들어서 인스턴스에 고정해 둔 예약된 IP/고정 공용 IP 아이피 주소 를 Hostname 칸에 넣는다. 어디에 적혀 있냐면 인스턴스 - 인스턴스 세부정보 를 누르면 인스턴스 엑세스 아래에 공용 IP주소 가 아이피주소다. 

 

그리고 다시 퍼티를 보면 왼쪽에 Connection - SSH - Auth 로 들어간다. 아래에 있는 GSSAPI 까지 들어갈 필요 없이 딱 Auth 까지만. 그러면 오른쪽에 파일을 찾는 버튼이 나오는데 전편에서 퍼티 키젠 키 제네레이션으로 만든 ppk 파일을 불러와준다. 그리고 Open 을 누르면 보안 경고가 뜨는데 Accept 를 누른다. 

 

이어서 login as : 가 뜨는데 ubuntu 를 적는다. 우분투 운영체제 이기 때문에 그렇고, 다른걸 넣으면 접속이 거부된다.

그리고 이어서 Passphrase가 뜨면 아까 PuTTY키젠으로 만들때 생성했던 Passphrase 를 입력한다. 

 

이제 Pu 퍼 TTY 티 를 통해서 오라클 vm 인스턴스에 접속이 되었다.

 

5. swapfile 생성 

sudo apt update && sudo apt upgrade
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

1기가짜리 공간의 스왑파일을 만들어서 권한을 주고 메모리의 가용 영역을 주어 나중에 워드프레스에 플러그인을 설치하거나 할떄 느려지거나 끊기는 현상을 방지한다. 명령어 한줄 한줄 진행될때 동의하시겠습니까? 메세지가 뜨면 Y 를 치고 엔터를 친다. 

 

그리고

sudo nano /etc/fstab

을 치면 nano 라고 하는 편집기를 통해서 fstab 파일을 수정할 수 있는데. 만약 나노 편집기가 설치되어 있지 않거나 지웠다면?, sudo apt install nano 라는 명령어를 쳐서 nano 편집기를 설치하고 위 명령어를 친다.

 

! 오라클 클라우드의 우분투 ubuntu 는 기본적으로 나노 편집가기 있는 것 같다.

 

나노 편집기를 실행하면


LABEL=cloudimg-rootfs   /        ext4   defaults        0 1
LABEL=UEFI      /boot/efi       vfat    defaults        0 1

이렇게 두줄이 있는데 바로 아랫줄에다가 (방향키로 지정 커서를 이동하면 된다.) 

/swapfile swap swap defaults 0 0 

을 한줄 추가하고 ctrl 컨트롤 + 엑스 X 를 누르고 (Save Modified Buffer ?)

Y 를 누르고 엔터를 쳐서 저장을 한다. 

 

그리고 네트워크 및 방화벽 설정을 해야 하는데, HTTP 트래픽을 허용하도록 iptables 구성을 업데이트 해야합니다.

iptables를 업데이트하려면 다음 명령어 를 치면 실행 됩니다. 

sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
sudo netfilter-persistent save

두개의 명령어를 각각 쳤으면 이제 마무리 되었습니다. 

sudo reboot

를 쳐서 재부팅한다. 

퍼티 inactive 상태로 PuTTY 재접속 해야함. 

 

6. Nginx 엔진엑스 깔기 (첨에 엔징스? 라고 불렀는데 엔진엑스였다. 부끄럽네)

sudo apt install nginx

딱히 오류메세지가 뜨지 않는다면 엔진엑스 설치 이후에 nginx -v 를 치면 

nginx version: nginx/버젼 (Ubuntu) 이 뜬다. 

 

7. php설치 및 세팅 

https://www.php.net 에 접속해보니 8.0.6 버젼 / 7.4.19 버젼 / 7.3.28 버젼이 있는데, 8.0 버젼으로 시도해보니 자꾸 실패해서 성공한 PHP 7.4 버전 기준으로 적겠습니다. 

sudo apt install -y nginx php7.4-fpm php7.4-cli php7.4-bcmath php7.4-dev php7.4-common php7.4-json php7.4-opcache php7.4-readline php7.4-mbstring php7.4-curl php7.4-gd php7.4-mysql php7.4-zip php7.4-intl php7.4-xml php-pear
php-fpm

설치하고 나면 php -v 를 쳐서 잘 설치되었는지 확인하고, 사이트 어베일러블 디폴트 파일을 약간 수정해줘야 합니다.

sudo nano /etc/nginx/sites-available/default

나노 편집기로 디폴트 파일을 불러옵니다. 

쭉 내려가다 보면

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {

              # First attempt to serve request as file, then

              # as directory, then fall back to displaying a 404.

                try_files $uri $uri/ =404;

        }

 

부분이 나오는데 여기서 아래처럼 index.php 를 추가합니다. 

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm index.nginx-debian.html;

 

        server_name _;

        location / {

              # First attempt to serve request as file, then

              # as directory, then fall back to displaying a 404.

                try_files $uri $uri/ /index.php?q=$uri&args;

        }

 

참고로 try_files $uri $uri/ /index.php?q=$uri&args; 부분 수정이 한글 퍼머 퍼멀링크 로 게시물 작성시 404 Not Found nginx/1.18.0 (Ubuntu) 오류 화면이 나오는 걸 막는 것이니 꼭 해줘야합니다. 

 

그리고 아래 내려가다보면 . 

        # pass PHP scripts to FastCGI server
        #
        #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;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #       deny all;
        #}
}

라는 부분이 있는데 아래처럼 바꿔줍니다. 

        # pass PHP scripts to FastCGI server
        #
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.4-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
                include fastcgi_params;
                fastcgi_read_timeout 300;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
               deny all;
        }
}

 

내용을 수정하고 ctrl 컨트롤 + 엑스 X 를 누르고 (Save Modified Buffer ?) Y 를 누르고 엔터를 쳐서 저장을 하면 됩니다. 

 

그리고 

sudo nginx -t

명령어를 쳐서 syntax is OK , test is Successful 메세지가 뜨면 잘 된겁니다. 

sudo systemctl reload nginx
sudo service nginx restart

명령어를 쳐서 엔진엑스를 다시 시작한다. 

 

그리고 나서 이제 info.php 파일을 /var/www/html 경로에 만들고 php 정보가 잘 적용되었는지 확인해봐야 합니다.

cd /var/www/html

html 폴더에 들어가서

sudo touch info.php

info.php 라는 파일을 만듭니다. 앞에 info 라는 이름은 본인이 테스트하고자 하는 아무 이름이나 상관 없습니다. 

sudo nano info.php

나노 편집기로 info.php 파일을 불러옵니다.

 

새로 만든파일이니 빈칸이겠죠. 여기에 

 

<?php phpinfo(); ?> 

 

라는 내용을 복사 붙혀넣기 하고 내용을 수정하고 ctrl 컨트롤 + 엑스 X 를 누르고 (Save Modified Buffer ?) Y 를 누르고 엔터를 쳐서 저장합니다. 

 

http://고정 아이피 주소/info.php 를 인터넷 주소창에 쳐서 잘 php 정보가 잘 뜨는지 확인합니다. 

잘 뜨면 아래 명령어를 쳐서 

sudo rm index.nginx-debian.html
sudo rm info.php

/var/www/html 에 있는 index.nginx-debian.html 파일과 info.php 파일을 삭제합니다.

SFTP / ftp 프로그램을 통해서 삭제해줘도 됩니다. 

 

그리고 http://고정 아이피 주소 를 인터넷 브라우저 주소창에 치면 403 Error가 나타납니다. 

( 예시 : 403 Forbidden nginx/1.18.0 (Ubuntu) ) 

 

8. 마리아 디비 MariaDB 설치하기 Marid디비 암호 설정 / 마리아DB 계정 만들고 설정하기 

https://downloads.mariadb.org/mariadb/repositories/#mirror=serverion 이라는 사이트에 들어갑니다. 

그럼 1.2.3.4 1~4 선택하는게 있는데. 이렇습니다. 

1. 본인의 OS / 2. 본인의 OS 버젼 / 3. Stable 이라고 적혀있는 버젼 / 4. 본인 국가 선택

저 같은 경우는 

1. 우분투 / 2. 20.04-Minimal / 3. 10.5 [Stable] 마리아 디비 의 버전 / 4. 한국 용복넷 

으로 선택했습니다. 그러자 나오는게 아래와 같은 명령어들이었습니다.

 

sudo apt-get install software-properties-common
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mirror.yongbok.net/mariadb/repo/10.5/ubuntu focal main'

그리고

sudo apt update
sudo apt install mariadb-server

그리고 나서 잘 설치되었는지 service mysql status 을 치면 Active : active (runnging) 라고 뜰 것입니다. 

 

service mysql status 명령어를 치고서 어? 다시 무언가 치는게 안나온다 싶을때 퍼티 를 끄지 마시고 그냥 Q 를 누르시면 됩니다. 큐 q 한번 누르면 다시 명령어 줄이 나타납니다. 

 

마리아 디비를 설치했으니 그 DB 데이타베이스에 접속할 수 있는 권한 비번 계정을 만들어야겠죠. 

 

sudo mysql_secure_installation

이라고 칩니다. 

그러면 순서대로

Enter current password for root (enter for none): 라고 뜰텐데 그냥 엔터 를 치면 됩니다. Enter
Switch to unix_socket authentication [Y/n] N
Change the root password? [Y/n] Y
New password : 마리아 디비에서 사용할 비번 잘 생각해서 칩니다. 
Re-enter new password: 다시한번 위에서 설정한 비번을 칩니다.
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] N
Remove test database and access to it? [Y/n] Y
Reload Privilege tables now? [Y/n] Y

Thanks for using MariaDB! 

그리고 명령어 줄이 다시 뜹니다. 

아래 명령어를 쳐서 php-mysql 모듈이 잘 설치되었나 확인합니다.

sudo apt-cache policy php7.4-mysql

만약 위 명령어를 쳤는데 installed : (none) 이라고 나타나면 

sudo apt-get install php7.4-mysql

을 쳐서 설치해줌 됩니다.

 

이제 언어설정을 해줘야 겠네요. 

sudo touch /etc/mysql/conf.d/mariadb.cnf

라고 쳐서 마리아디비.cnf 파일을 만들어 줍니다. 그리고 

sudo nano /etc/mysql/conf.d/mariadb.cnf

나노 에디터 로 불러옵니다. 방금 만든 파일이니 아무런 내용도 없겠죠. 

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
collation-server = utf8mb4_unicode_ci
character-set-server = utf8mb4
collation_server = utf8mb4_unicode_ci
character_set_server = utf8mb4

이 내용을 고대로 복붙해줍니다. 

복사 붙혀넣기 하고 내용을 수정하고 ctrl 컨트롤 + 엑스 X 를 누르고 (Save Modified Buffer ?) Y 를 누르고 엔터를 쳐서 저장합니다. 

 

이제 마리아디비 설치와 언어 설정이 완료되었으니 재부팅을 해줍니다. 

sudo service mysql restart
sudo iptables -F
sudo shutdown now -r

다시 퍼티 를 실행합니다. 

 

퍼티를 실행하고 Maria DB 에 접속해서 DB를 생성해줄 겁니다.

mysql -u root -p

명령어를 치면 위에서 만든 마리아 디비 에서 사용할 비밀번호를 치라고 나옵니다. 비번을 쳐주면 

MariaDB [(none)]> 

이라고 마리아 디비 / mysql 에서 사용하는 명령어 줄이 나옵니다. 

디비 저장소를 이제 만들겁니다. 

MariaDB [(none)]> CREATE DATABASE 본인이 원하는 데이터베이스 저장소 이름;

그리고 나서 

MariaDB [(none)]> SHOW DATABASES;

라고 치면 

+--------------------+
| Database                |
+--------------------+
| information_schema |
| 데이터베이스이름    |  # 생성한 DB 데이터베이스 저장소
| mysql                    |
| performance_schema |
+--------------------+
4 rows in set (0.000 sec)

 

이렇게 나올겁니다. 

 

이제 마리아 디비 MariaDB 를 사용할 계정을 생성할 겁니다. 아까는 마리아 디비 접속 비번을 설정해주었던 거고, 이후에 마리에 디비 접속 이후 사용자에 대한 계정을 생성한다고 보면 됩니다.

 

MariaDB [(none)]> CREATE USER 사용할아아디@localhost;

라고 쳐서 아이디를 만들고 잘 기억해두셔야 합니다.

 

그리고 방금 만든 아이디의 비번을 만들어야겠죠. 

MariaDB [(none)]> SET PASSWORD FOR 방금만든아이디@localhost=PASSWORD("비밀번호");

마리아 DB 에 접속 한 이후에 그 안에서 이용할 계정의 아이디 랑 비밀번호 가 잘 만들어 졌습니다. 

이제 이 만들어진 계정의 생성한 DB 저장소 의 권한을 줘야겠죠. 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON 위에서만든DB이름.* TO 방금만든아이디@localhost IDENTIFIED BY '방금설정한비번';

권한을 적용합니다.

MariaDB [(none)]> FLUSH PRIVILEGES;

잘 적용 되었으니 이제 마리아DB 에서 나갑니다.

MariaDB [mysql]> exit;

Bye 

9. 워프 워드프레스 설치 WordPress Install 하기 

wget -O ~/wordpress.zip https://ko.wordpress.org/latest-ko_KR.zip

워드프레스 한국어 페이지에 가니 워드프레스를 다운로드 하는 주소가 https://ko.wordpress.org/latest-ko_KR.zip 였습니다. 위 명령어를 치면 오라클 클라우드의 /home/사용자명/ 경로에 워드프레스 압축파일을 다운로드 합니다. 

 

다운받은 zip압축파일 압축해제를 위해 압축 프로그램이 필요합니다.

sudo apt install unzip

명령어 를 쳐서 zip 프로그램을 설치하고 

unzip ~/wordpress.zip -d ~

이라고 쳐서 압축을 해제하고 해당 압축파일을 삭제하도록 합니다. 

압축이 풀렸습니다. 그럼 이제 /home/사용자명(퍼티접속할때 사용자명)/wordpress 디렉토리에 압축이 해제되었습니다.
이제 웹루트 /var/www/html 로 옮겨야겠죠. 그래야 바로 아이피주소를 치면 워드프레스가 열릴테니까요. 

cp -a ~/wordpress/. /var/www/html

옮겨지지 않으면 Permission denied 권한 없음 거절 이 뜨면 앞에 sudo 만 붙여서 다시 해봅니다. 

sudo cp -a ~/wordpress/. /var/www/html

그리고 /home/사용자명 경로에 있던 wordpress 폴더와 wordpress.zip 파일을 삭제합니다. 

rm wordpress.zip
rm -r -f wordpress

인제 워드프레스 압축파일이 풀린(어찌보면 home/사용자명 폴더에서 풀린 wordpress 폴더의 파일이 복사되어 진) 디렉토리로 가보겠습니다.

cd /var/www/html/
dir

이동해서 dir 살펴보기를 하면 현재 있는 파일들이 나옵니다. 

더불어 wordpress 를 운영하면서 있으면 좋은 컨텐츠 폴더 내의 업그레이드, 업로드, 임시 폴더를 만들어줍니다. 

mkdir /var/www/html/wp-content/upgrade
mkdir /var/www/html/wp-content/uploads
mkdir /var/www/html/wp-content/temp

이제 워드프레스 설정을 해줘야 합니다. 

sudo cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php

워드프레스 설정 파일은 wp-config.php 에 담겨져 있는데요. 이걸 나노 에디터 로 불러와서 수정해줄 겁니다.

sudo nano /var/www/html/wp-config.php

열린 wp-config.php 파일을 살펴보면 아래와 같은 줄이 있을겁니다.


/** The name of the database for WordPress */
define( 'DB_NAME', '아까 생성한 마리아DB 데이터베이서 저장소 폴더 이름' );

/** MySQL database username */
define( 'DB_USER', 'MariaDB 계정 아이디' );

/** MySQL database password */
define( 'DB_PASSWORD', '마리이디비 계정 비번' );

그리고 아래에 


define( 'SECURE_AUTH_KEY', 'put your unique phrase here' );
define( 'LOGGED_IN_KEY', 'put your unique phrase here' );
define( 'NONCE_KEY', 'put your unique phrase here' );
define( 'AUTH_SALT', 'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT', 'put your unique phrase here' );
define( 'NONCE_SALT', 'put your unique phrase here' );

 

줄이 있는데 하나하나 커서를 위치시켜서 컨트롤 + 케이 ctrl+K 를 눌러서 지운다음에 http://api.wordpress.org/secret-key/1.1/salt/ 접속해서 생성된 난수를 그대로 복붙 합니다.

ctrl 컨트롤 + 엑스 X 를 누르고 (Save Modified Buffer ?) Y 를 누르고 엔터! 

 

이제 거의 끝나갑니다. 

sudo nano /etc/php/7.4/fpm/php.ini

php.ini 값만 수정해주면 됩니다. 

나노 에디터로 실행 한 다음에 컨트롤 + 더블유 ctrl+W 키를 눌러서 아래와 같은 내용을 찾아서 수정해줍니다.

 

upload_max_filesize = 64M
file_uploads = On
max_execution_time = 1000
memory_limit = 256M
post_max_size = 64M
max_input_time = 60
max_input_vars = 4440

 

ctrl 컨트롤 + 엑스 X 를 누르고 (Save Modified Buffer ?) Y 를 누르고 엔터! 

 

끝났네요. 이제 인터넷 주소창에 고정아이피 예약된 ip 주소를 치면 워드플레스 설정 및 설치가 시작됩니다. 

 

이어지는 글 :: 워드프레스 설치 후 발생하는 문제 | 워드 프레스 플러그인 wordpress plugin 설치 install 시 ftp id password 요구 하는 창이 뜰 때 ftp 접속 오류 워드프레스 플러그 인 

2021.05.28 - [코딩, 개발 꾸준히 하면 볕날선생만큼 한다.] - 오라클 oracle 클라우드 Cloud Vm 인스턴스 instance Create free WordPress on Oracle Cloud VM instance:: Install NginX + PHP + MariaDB + Wordpress :: LEMP Type 오라클 클라우드 VM 인스턴스 무료 로 워드프레스 WordPress 만들기..

 

오라클 oracle 클라우드 Cloud Vm 인스턴스 instance Create free WordPress on Oracle Cloud VM instance:: Install NginX +

지난 2021.05.17 - [코딩, 개발 꾸준히 하면 볕날선생만큼 한다.] - 오라클 클라우드 VM 인스턴스 무료 로 워드프레스 WordPress 만들기 :: Free Oracle Cloud Web Hosting 워프 WorP - 터잡기 및 기반공사 오라클..

imflower.tistory.com

 

728x90
반응형