[Nextcloud/server, android] 개발 환경 구성

  기여에 앞서서, 먼저 환경 구성을 해야 한다.


Nextcloud/android 레포지토리에 기여하기로 했지만, 개발 환경에 서버도 필요하기 때문에 Nextcloud/server도 구축해야 한다.


1. Nextcloud Server 구축

서버 설치 및 구성은 아래 문서를 참고하였다.

https://docs.nextcloud.com//server/stable/admin_manual/installation/index.html


나는 Nextcloud server 운영체제로 Ubuntu 20.04 LTS를 선택했으며,

데이터베이스는 MySQL을 사용하여 구축할 것이다.


먼저 가상 머신에 Ubuntu 20.04 LTS를 설치한 후, 아래 사이트에서 nextcloud-20.0.1을 다운받는다.

https://nextcloud.com/install/

서버 구축에 필요한 라이브러리 설치

아래 커맨드를 통해 필요한 apache, mysql(mariadb), php를 설치한다

sudo apt update
sudo apt install apache2 mariadb-server libapache2-mod-php7.4
sudo apt install php7.4-gd php7.4-mysql php7.4-curl php7.4-mbstring php7.4-intl
sudo apt install php7.4-gmp php7.4-bcmath php-imagick php7.4-xml php7.4-zip

위의 mariadb-server를 설치하다가 아래와 같은 오류가 발생했다. MariaDB에 종속성이 없거나 패키지가 손상되었다는 오류다..😅

The following packages have unmet dependencies:
mariadb-server : Depends: mariadb-server-10.3 
but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

이는 버전을 명시해주면 된다!

아래 명령을 통해 mysql-common과 libmysqlclient21의 버전을 확인한다

sudo apt-cache show mysql-common | grep Version
sudo apt-cache show libmysqlclient21 | grep Version

나는 mysql-common의 버전이 5.8+1.0.5ubuntu2 였고 libmysqlclient21의 버전이 8.0.22-0ubuntu0.20.04.2였다 (libmysqlclient의 경우 버전에 따라 뒤에 붙는 숫자가 바뀌니 주의하자! 현재는 21인것 같다😆)

확인한 버전을 명시하여 설치하면 성공이다!

sudo apt-get install mariadb-server-10.3 mariadb-client-10.3 \
libmysqlclient21=8.0.22-0ubuntu0.20.04.2 mysql-common=5.8+1.0.5ubuntu2 


PHP 모듈 설치

sudo apt install php7.4-cli
// 이 command를 통해 아래 필수 모듈이 설치되었는지 확인한다
php -m | grep <module name> 
  • PHP (7.2, 7.3 or 7.4)
  • PHP module ctype
  • PHP module curl
  • PHP module dom
  • PHP module GD
  • PHP module hash (only on FreeBSD)
  • PHP module iconv
  • PHP module JSON
  • PHP module libxml (Linux package libxml2 must be >=2.7.0)
  • PHP module mbstring
  • PHP module openssl
  • PHP module posix
  • PHP module session
  • PHP module SimpleXML
  • PHP module XMLReader
  • PHP module XMLWriter
  • PHP module zip
  • PHP module zlib
  • PHP module pdo_mysql (MySQL/MariaDB) // 데이터베이스 연결 모듈

MySQL 및 MariaDB 구성

sudo /etc/init.d/mysql start
sudo mysql -uroot -p

위의 커맨드를 통해 mysql을 시작해야 한다!
이 과정에서 오류가 발생했는데 mysql.sock이 없다는 것이다... 이 소켓 파일은 mysql 데몬이 실행되면 저절로 생성이 되는 파일로 따로 만드는 것은 아니다ㅠ
아무리 찾아도 소켓파일이 없다... 

sudo mysqld_safe --user=root &

위 커맨드를 실행해보았을 때 에러를 확인할 수 있었고, error.log에 의하면 query_cache_size가 없다는 오류가 발생했다..
찾아보니 버전이 낮아서 생기는 오류였다...


mysql을 실행하여, 아래 커맨드를 통해 새로운 유저 aqaqsubin과 데이터베이스를 생성한다.

CREATE USER 'aqaqsubin'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'aqaqsubin'@'localhost';
FLUSH PRIVILEGES;

Apache 2.4를 설치한다. /etc/apache2/site-available/nextcloud.conf 를 생성한다.

Alias /nextcloud "/var/www/nextcloud/"

<Directory /var/www/nextcloud/>
  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews

  <IfModule mod_dav.c>
    Dav off
  </IfModule>

</Directory>

아래 커맨드를 통해 활성화한다.

 a2ensite
nextcloud.conf 

추가적으로 아래 모듈들을 활성화 시킨다.

a2enmod rewrite (Nextcloud가 정확히 동작하기 위해 필요한 모듈)

a2enmod headers (그 외 추가적인 모듈)
a2enmod env
a2enmod dir
a2enmod mime

Apache HTTP 서버를 실행한 후, 다운받은 nextcloud-20.0.1을 압축 해제하여 apache 문서 경로에 복사한다.

sudo cp -r nextcloud /var/www/

그 다음으로 Nextcloud에 대해 서버 구성 인증을 수행하지 않도록 설정해야 한다는데
어떻게 하는지 모르겠다.. 여기서 부터 막힌 것 같다.😅😅

https://docs.nextcloud.com//server/stable/admin_manual/installation/source_installation.html


이렇게 서버 구축에 어려워하는 윈도우 사용자를 위해 Nextcloud에서는 서버 설정이 완료된 VM을 제공해준다.

https://www.univention.com/products/univention-app-center/app-catalog/nextcloud/

VirtualBox 사용자는 VirtualBox Image(.ova)
VMware 사용자는 VMware Image(.zip)을 다운받으면 된다.

(주의 : RAM은 2GB 이상으로 해야 한다! 아니면 다시 설치해야 한다..)

몇 가지 설정을 마치면 아래와 같이 서버 구축이 완료된다.



서버 설정 중... 꽤나 많은 시간이 소요된다.





2. Nextcloud android 환경 설정 


위 사이트의 프로젝트를 다운받는다.

나는 Android Studio를 개발 도구로 선택했다.
Android Studio, Android SDK Platforms-Tools, SDK Tools는 최신 버전을 유지해야 한다.

Android Studio        4.1.1
Android Platforms    30.0.4
SDK Tools               26.1.1
SDK Build-Tools        30.0.2

SETUP.md에는 SDK Build-Tools이 24.0.2, Android 7.0 (SDK 24)으로 적혀있지만,
마지막 수정이 2019년 4월인 것을 보아 버전을 더 높여도 될 것 같다..

현재 최신 릴리즈가 3.13.1이므로 이를 다운받아 Nextcloud 안드로이드 어플리케이션을 사용해볼 예정이다.

git checkout tags/stable-3.13.1

git clone -b stable-3.13.1 https://github.com/nextcloud/android.git



*Android Emulator

실제 하드웨어가 없어도 앱을 개발하고 테스트 할 수 있도록, emulator를 설치하였다. 즉, 하나의 AVD(Android Virtual Device)를 설치하였다.

AVD Manager를 통해,

Category - Phone
Name - Pixel2
System image - Pie (target-Android 9.0) 

이와 같이 설정해주어 좀 더 효율적으로 개발과 테스트를 할 수 있게 되었다.



댓글

  1. 검색 이슈를 해결을 위해 서버 환경을 구축해야 하는데 이 글이 많은 도움이 될 것 같습니다!
    감사합니다!!😊

    답글삭제
  2. 자세하게 설명되어있어서 도움이 많이 되었습니다^^ 꼼꼼한 설명 감사합니다~~~ :)

    답글삭제

댓글 쓰기

이 블로그의 인기 게시물

[Nextcloud/android] 배터리 최적화 제외 여부 판단 오류 (Issue #7304)

[Nextcloud/android] passcode 화면에서 뒤로가기 이벤트 PR -> Merge