간단한 홈페이지를 구축할 상황이 발생했다. (웹디자이너가 있다면 비교적 간단하게 처리할수 있겠지만, 그렇지 못한 상황이다. )

네이버에 "홈페이지 제작" 검색해보면 호스팅비용 포함해서 100~200만원의 비용으로 홈페이지를 구축해주는 회사들이 많다. 연락해서 문의해본 결과 대부분의 저비용 홈페이지 구축은

 - 온라인으로만 진행하는데, 웹사이트를 통해서 맘에드는 템플릿 선택한 후

 - 그에 맞는 컨텐츠(내용과 관련 이미지)는 메일등으로 전달하면

 - 내용에 맞게 구성해 준다. 이미지가 없다면 라이선스 없는 적당한 이미지는 알아서 해줌.

 - 나중에 서비스가 종료되어도 결과물 백업은 안됨

 

저렴한건 알겠는데, 왠지 제작과정에서 커뮤니케이션이 원할하지 않으면 원하는 모양으로 단기간에 홈페이지를 구축하는게 가능할까? 싶어 고민하는 중에 지인의 소개로 알게된 SW제품이 

"워드프레스와  부트스트랩" 이다.

IT업계에 있다보니 처음듣는 이름은 아니었으나 사용해볼 일이 없어 관심을 두지 않았던 제품이다.

 

검색을 통해 둘의 장단점을 간단히 비교하고 워드프레스로 테스트해보기로 결정.

 

기존에 Moodle 테스트하려고 Azure에 만들어두었던 가상서버 활용해서 바로 설치해봄. ( Moodle 환경도 LAMP 였음).

이틀정도 만져본 테스트 결과물로 내부 OK 승인. 이후 AWS환경으로 운영환경 구축 진행.

(현재는 Azure보다는 AWS가 금액적으로 저렴함.)

 

1. AWS는 Azure보다 어렵구나. ( 아니 복잡하구나. 아니 linux와 windows 의 차이랄까? ) 

기존 프로젝트하면서 만들었던 AWS 개발환경 초기화하면서 요금발생 없애려고 Default VPC까지 전부 삭제해놓은 상황이라, Custom VPC부터 시작하다보니 조금은 어렵다고 느껴졌을수도. 

순서는 대략 다음과 같다.

a. VPC 생성

b. subnet 생성

c. internet gateway 생성
( subnet을 Public, Private으로 나누지 않고 하나만 생성하다보니 외부와 연결할 외부용 Internet Gateway가 필수)

d. 이후 EC2 생성

e. Elastic IP 생성하여 연결 

 

2. LAMP 환경 구성

OS는 Amazon Linux.

CentOS가 익숙했지만 더이상 업데이트되지 않는듯 하고, 또 AWS에서는 CentOS기반으로 Amazon Linux를 제공하기 때문에 굳이 CentOS를 사용하지 않아도 된다고 한다.

 

2.1 Apache2.x설치 및 SSL 구성

 

2.2 Amazon Linux에 PHP7.x 설치하기

 

2.3 MariaDB설치하기

 

 

3. WordPress 설치 & 세팅

  >> wordpress 간단 사용법 : https://www.youtube.com/watch?v=DbQTHmc15KQ 

 

테마설치시 ftp정보 물어보는 경우 대처 :  https://shary1012.tistory.com/256

테마설치시 directory 생성오류가 나오는 경우 :  chown -R apache.apache wp/ 

 

테마선택 : astra,

Astra 옵션 > 가져오기 plugin 설치, 설치완료 후 PageBuilder 선택( Elementor 선택 )

데모사이트 템플릿에서 : digital agency 선택 & 설치

 

 

 

 

4. WordPress 보안강화 (wp-admin 분리 및 접근통제)

 

 

 

5. 멀티사이트를 통한 영문홈페이지 추가 구축

 - gmail smtp api 플러그인 적용

 - multi site 구조변경 이후 gmail api 먹통 이후 재 설정

 - 영문, 국문 gmail api 사용하려면 각각 프로젝트를 만들서 진행해야 한다.

 - wordpress에서 키를 삭제하고 다시 진행해야 한다.

 

Delete Access Key 이후 설정을 다시 세팅, 이후 Grant Permission 버튼이 활성화 됨.

 

 

(To be continue...)



오픈소스 LMS (Moodle)설치(MS Azure)

Posted 2022. 1. 10. 16:43

moodle이라는 오픈소스 LMS를 MS Azure Cloud에 설치합니다.

docker-compose를 통해서 간단히 설치하는 방법도 있었지만 직접 APM형태로 설치&세팅하였습니다.

참고 설치 매뉴얼(한글)
https://techexpert.tips/ko/moodle-ko/%EC%9A%B0%EB%B6%84%ED%88%AC-%EB%A6%AC%EB%88%85%EC%8A%A4%EC%97%90-%EB%AC%B4%EB%93%A4-%EC%84%A4%EC%B9%98/

 

I. MS Azure 인프라 설치

 

1. Azure 리소스그룹 생성
 > 그룹명 : lms-vnet-rg
 > : 10.2.0.0/22

2. 가상네트워크(lms-vnet), subnet (subnet1, subnet2) 생성( DB, Web분리예정)
 > lms-vnet : 10.2.0.0/22
 > subnet1 : 10.2.1.0/24 (Web Server)
 > subnet2 : 10.2.2.0/24 (DB 영역)

3. 가상머신 생성
 > OS : CentOS7.8-free
 > WEB : 2vcpu, 4GiB 메모리 / DB : 4vcpu, 16GiB 메모리
 > 위치 : 한국 중부

II. moodle 소스 설치를 위한 APM 설치

 

1. Database 설치(MariaDB)

//MariaDB용 yum repository를 업데이트한다.
sudo vi /etc/yum.repos.d/MariaDB.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64/
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1

//mariadb, mariadb-server를 설치
sudo yum install mariadb mariadb-server -y 

//설치된 mariadb를 실행
sudo systemctl start mariadb

//Character-set 설정 (MariaDB 10.3기준)
sudo vi /etc/my.cnf.d/mysql-clients.cnf 

[mysql]
default-character-set=utf8mb4
..
[mysqldump]
default-character-set=utf8mb4
..


sudo vi /etc/my.cnf.d/server.cnf

[server]
init-connect='SET NAMES utf8mb4'
lower_case_table_name=1
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

# this is only for the mysqld standalone daemon
[mysqld]
default_storage_engine=innodb

//moodle용 Database와 사용자를 추가한다.(권한포함)
CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

//Create a user/password combination with appropriate permissions for the database. For example (MySQL again):
MariaDB [(none)]> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO 'moodleuser'@'localhost' IDENTIFIED BY 'moodleuser123!';
Query OK, 0 rows affected (0.003 sec)

//web-server접속용 권한
MariaDB [(none)]> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO 'moodleuser'@'10.2.1.0/255.255.255.0' IDENTIFIED BY 'moodleuser123!';
Query OK, 0 rows affected (0.005 sec)

 

2. ==== LMS Moodle 설치를 위한 Apache, PHP설치 ====

1). yum update ( 옵션 ) 
  sudo yum update -y

2). Apache 설치 

 sudo yum install httpd -y

 2.1) openssl, mod_ssl 설치 ( rpm -qa|grep OOO 으로 확인해서 설치되었다면 pass )

 sudo yum install mod_ssl -y 

 /etc/httpd/modules 아래에 mod_ssl.so 생성확인 

 2.2) ssl.conf 수정 및 인증서 복사 
  2.2.1 인증서 파일 복사하여 위치시킴.
  2.2.2 httpd.conf 를 수정하여 Rewrite 설정 (http -> https ) 

3). SELinux 해제 
    \> sudo vi /etc/selinux/config

    SELINUX=disabled 로 변경후 재부팅 
    임시로 적용 : sudo setenforce 0 

4). php 모듈 설치 

sudo yum install epel-release yum-utils
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm 

sudo yum-config-manager --enable remi-php73
sudo yum install php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysqlnd php-xml php-pear php-pdo libapache2-mod-php php-mbstring php-xmlrpc php-zip php-bcmath php-ldap php-pspell php-curl php-intl php-soap -y 

5). 아파치 재시작 및 php 적용사항 확인 
  sudo systemctl restart httpd

  sudo vi /var/www/html/phpinfo.php

<?php
phpinfo()
?>

 

2. 소스 다운로드 및 설치 진행

최신버전 : https://download.moodle.org/releases/latest/

1). 소스 다운로드(최신버전은 별도 확인)
version3.8
 wget https://download.moodle.org/stable38/moodle-latest-38.tgz

version3.11
 wget https://download.moodle.org/download.php/stable311/moodle-3.11.4.tgz

2). 압축을 해제 
sudo tar -zxvf moodle-latest-38.tgz

해제된 소스를 Apache Document Root로 이동한다. 
cp /downloads/moodle /var/www/html/ -R

3. 접근권한 및 설정 변경

3). 웹서버에게 moodle 디렉토리 소유권을 부여하고 접근권한을 변경한다.

 sudo chown apache.apache /var/www/html/moodle -R
 sudo chmod 0755 /var/www/html/moodle -R

4). Moodle 데이터 업로드 디렉토리를 생성 후 접근권한을 변경한다. 
  (SELinux가 해제되어 있지 않으면 설치시 오류가 발생한다.)

 sudo mkdir /var/www/moodledata
 sudo chown apache /var/www/moodledata -R

 sudo chmod 0777 /var/www/moodledata -R

5). http://domain.com/moodle/ 로 접속하면 설치가 진행된다.
   앞서 설치된 DB 접속정보를 입력하여 설치를 마무리 한다.
   설치후 변경은 config.php정보를 수정한다.

 

4. Google smtp 연동사용

회원가입, 수강신청등의 이유로 메일연동이 필요하다. smtp를 구글메일로 사용하기 위한 일반적인 설정.

설정시 AWS에 설치된 타시스템에서는 정상적으로 작동했는데, MS Azure에서는 미작동한다. 이유가?
PHP Mail 테스트로도 발송이 안되고 아래와 같이 오류가 발생함.
아래 오류를 획득하기 위해서 /etc/php.ini에서 error log 출력을 위한 설정을 변경해야한다. (별도구글링 )

오류
2021-11-23 11:06:40     SERVER -> CLIENT: 534-5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbv
                                          534-5.7.14 5flh2VmuG9Rpp1NcnLIkbChbKw0FMwuzjkRkz76Ka-FP7xOgVcUXwDM6sJkX2MWXNeLeI
                                          534-5.7.14 i0CgTViB6ZJK5jAW0tSA1NpT5CZNSXumtvLT_qzu2YMrun2Cacr1yNcLDOQHImm7>
                                          534-5.7.14 Please log in via your web browser and then try again.
                                          534-5.7.14  Learn more at
                                          534 5.7.14  https://support.google.com/mail/answer/78754 t66sm11915990pfd.150 - gsmtp
2021-11-23 11:06:40     SMTP ERROR: Password command failed: 534-5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbv
                                          534-5.7.14 5flh2VmuG9Rpp1NcnLIkbChbKw0FMwuzjkRkz76Ka-FP7xOgVcUXwDM6sJkX2MWXNeLeI
                                          534-5.7.14 i0CgTViB6ZJK5jAW0tSA1NpT5CZNSXumtvLT_qzu2YMrun2Cacr1yNcLDOQHImm7>
                                          534-5.7.14 Please log in via your web browser and then try again.
                                          534-5.7.14  Learn more at
                                          534 5.7.14  https://support.google.com/mail/answer/78754 t66sm11915990pfd.150 - gsmtp
2021-11-23 11:06:40     SMTP Error: Could not authenticate.
2021-11-23 11:06:40     CLIENT -> SERVER: QUIT
2021-11-23 11:06:40     SERVER -> CLIENT: 221 2.0.0 closing connection t66sm11915990pfd.150 - gsmtp
2021-11-23 11:06:40     SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

 

해결방법은 아래와 같다.

 

사용하려고 하는 gmail계정의 보안/인증에서 2단계인증 후 앱 비밀번호 생성해서 해당정보를 설정해줘야한다.

요약

1. 앱 비밀번호 생성시 앱을 선택하고자 할때 기타(맞춤이름)를 선택한다.
2. Smtp Client 로 명시하고 생성을 클릭
3. 생성된 비밀번호를 복사하여 사용자 Password 에 넣는다.
   계정정보는 기존정보를 그대로 넣거나 넣지않아도 정상 작동된다.



하나의 회의공간을 서로다른 회사가 사용하는데, 예약시스템으로 관리할 필요가 생겼다. 

예약시스템 관리하는 오픈소스를 찾아보았다.

회의내용등이 외부로 공개되는것을 원치 않아 내부에서만 사용하는 설치형태 기준으로 찾아보기로 했다.

(구글캘린더 응용등은 배제)

1. Coworkers - 친숙한 java 기반의 회의실(자원) 예약시스템, 설치를 해봤으나 기능이 좀 미비하고, 중간에 오류가 발생함(아마도 설정이나 소스를 제대로 확인하지 못해서 발생한게 아닌가 싶다.)

2. Booked - PHP로 개발된 예약시스템. 문서화 및 설치가이드가 잘되어 있는듯하여 이 제품으로 선택

 - 공식사이트 - https://www.bookedscheduler.com/

   ( 초기에는 사이트에서 다운로드를 지원했으나 3.0버전업 이후에 지원하지 않음. )

 - github에서 구버전(2.8.5) 다운로드 진행 : https://github.com/effgarces/BookedScheduler

 - 공식포럼 : https://forums.bookedscheduler.com/ 

 - 설치가이드 : 소스를 다운받으면 installation.md5에 영문으로 친절하게 가이드되어 있음

 

이후 어느순간 유료화 정책으로 변경되면서 소스다운로드가 사라졌다. 완전히 사라진건 아니고 숨겨졌다.

아래 github를 통해서 다운로드 해야한다. (22.05.01 updated)

https://github.com/effgarces/BookedScheduler

 

설치유형 : AWS EC2 개설해서 DB(MariaDB), Apache2.x로 직접 설치

설치순서 : 일반적인 APM설치의 과정을 거친다. 

 

1. MySQL(MariaDB)설치

2. Apache 설치

3. PHP설치

4. 방화벽 오픈

 

1. DB설치

CREATE DATABASE `booked`;
CREATE USER 'booked_user'@'localhost' identified by 'PASSWORD';
CREATE USER 'booked_user'@'127.0.0.1' identified by 'PASSWORD';

GRANT ALL on booked.* to 'booked_user'@'localhost';
GRANT ALL on booked.* to 'booked_user'@'127.0.0.1';

SET foreign_key_checks = 0;

 

2. Apache 설치

 //apache 설치
 \> sudo yum install -y httpd
...
 //apache 시작
 \> sudo systemctl start httpd

 //리부팅시 자동실행
 \> sudo systemctl enable httpd

 

3. PHP 및 모듈 설치

///////////// PHP7 설치 /////////////
sudo yum install epel-release yum-utils
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm 

sudo yum-config-manager --enable remi-php73
sudo yum install php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysqlnd php-xml php-pear php-pdo

sudo systemctl restart httpd

sudo vi /var/www/html/phpinfo.php

<?php
phpinfo()
?>

브라우져에서 http://SERVER-ADDRESS/phpinfo.php로 확인

 

4. 방화벽 해제

\> sudo vi /etc/selinux/config

SELINUX=disabled 로 변경.

 

5. 소스 배포 및 권한변경

특별한 이유가 없다면 /var/www/html에 배포한다.

sudo chown -R apache:apache /var/www/html

//tpl, tpl_c는 아래와 같이 권한을 변경
//설치과정에서 권한오류가 발생한다면 777변경 후 설치완료 후 755로 변경한다.
sudo chmod 755 tpl
sudo chmod 755 tpl_c

 

6. 설치스크립트 진행

http://SERVER-ADDRESS/Web/install/ 페이지에서 설치 진행

 

 

 

 

 



« PREV : 1 : 2 : 3 : 4 : ··· : 127 : NEXT »