HC님을 위한 WordPress & NextCloud 설치 절차 Part 1
CentOS7 1810 버전 기준
사전 준비
사용자 및 디렉토리 생성
사용자
- skia:hckim
디렉토리
앞서 생성한 사용자에 다음 경로에 대한 권한을 부여한다.
- /sw
- /sw/openssl
- /sw/httpd
- /sw/mysql
- /sw/php
- /data2
- /data2/mysql
- /data2/drive
- /data2/docs
시스템 라이브러리 설치
yum -y install apr-devel apr-util-devel curl-devel pcre-devel libxml2-devel libwebp-devel libjpeg-devel libpng-devel libXpm-devel libicu-devel
추가 의존성 설치
openssl
mkdir /sw/openssl/src #임시경로
cd /sw/openssl/src
wget https://www.openssl.org/source/openssl-1.0.2s.tar.gz
tar -xvzf openssl-1.0.2s.tar.gz
cd openssl-1.0.2s
./config --prefix=/sw/openssl/1.0.2s --openssldir=/sw/openssl -fPIC
make && make install
cd /sw/openssl
ln -s ./1.0.2s/* .
export PATH=/sw/openssl/bin:$PATH
export LD_LIBRARY_PATH=/sw/openssl/lib:$LD_LIBRARY_PATH
openssl
명령을 수행했을 때 정상적으로 동작하고 which openssl
수행 결과가 /sw/openssl/bin
이면 정상
libzip
libzip 소스를 내려받아 cmake3
로 빌드해서 사용해야하는데 cmake3에 python3
의존성이 있기때문에 먼저 python3를 설치한다
yum install -y https://centos7.iuscommunity.org/ius-release.rpm
yum install -y python36u python36u-libs python36u-devel python36u-pip
이어서 cmake3 설치
yum install -y epel-release
yum install -y cmake3
드디어 libzip을 설치할 수 있는 환경이 만들어짐. libzip 을 설치한다.
cd ~/Downloads #임시 경로
wget https://libzip.org/download/libzip-1.5.1.tar.gz
tar -xvzf libzip-1.5.1.tar.gz
cd libzip-1.5.1
mkdir build
cd build
cmake3 ..
make && make install
cmake 에서 별도로 옵션을 지정하지 않았기때문에 /usr/local/lib64
경로에 libzip 라이브러리가 생성되었을 것인데 이를 시스템에 등록해준다.
vi /etc/ld.so.conf
파일을 열어 다음 라인 추가
/usr/local/lib64
ldconfig
명령으로 추가한 라이브러리에 대한 링크를 생성하고 다음 명령을 수행했을 때 아래와 같이 출력되면 정상
# ldconfig -p | grep libzip
libzip.so.5 (libc6,x86-64) => /usr/local/lib64/libzip.so.5
libzip.so (libc6,x86-64) => /usr/local/lib64/libzip.so
APM 설치
여기서부터는 skia
사용자로 진행
Apache httpd 설치
mkdir /sw/httpd/src #임시경로
cd /sw/httpd/src
wget http://apache.mirror.cdnetworks.com//httpd/httpd-2.4.39.tar.gz
tar -xvzf httpd-2.4.39.tar.gz
cd httpd-2.4.39
./configure --prefix=/sw/httpd/2.4.39 --enable-module=so --enable-so --enable-modes-shared=ssl --with-ssl=/sw/openssl --enable-ssl=shared --enable-rewrite
make && make install
cd /sw/httpd
ln -s ./2.4.39/* .
MySQL Community Version 설치
cd /sw/mysql/
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.17-linux-glibc2.12-x86_64 8.0.17
ln -s ./8.0.17/* .
export PATH=/sw/mysql/bin:$PATH
export LD_LIBRARY_PATH=/sw/mysql/lib:$LD_LIBRARY_PATH
이어서 vi /etc/my.cnf
파일을 열어 다음과 같이 수정한다. 해당 파일은 기본적으로 root 소유인데 소유권을 skia
사용자로 변경해주어야한다.
[mysqld]
user = skia
port = 3306
basedir=/sw/mysql
datadir=/data2/mysql
socket=/tmp/mysql.sock
innodb_data_file_path=ibdata1:32M:autoextend
innodb_log_files_in_group=3
innodb_log_file_size=256
innodb_buffer_pool_size=2048M
[mysqld_safe]
log-error=/sw/mysql/logs/error.log
위 설정이 마무리되었으면 데이터파일 생성 등 DB 초기화를 진행한다.
mysqld --initialize --user=skia
명령을 수행하면 datadir 경로에 기본 데이터파일 생성 등 인스턴스를 초기화한다. 이떄에 로그에서 초기 비밀번호를 알려주는데 잘 복사해둘 것.
mysqld_safe --user=skia &
명령으로 mysql 데이터베이스를 실행하고 mysql -uroot -p
명령을 수행해서 앞서 복사해둔 패스워드로 로그인한다. 그리고 다음 sql로 패스워드를 새롭게 설정한다.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
이어서 wordpress와 nextcloud 의 repository DB 로 사용할 데이터베이스를 각각 생성하고 해당 데이터베이스에 접근할 사용자도 별도로 생성한다.
CREATE USER 'skia'@'localhost' IDENTIFIED BY 'MYPASSWORD';
ALTER USER 'skia'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MYPASSWORD';
CREATE DATABASE skia_blog;
CREATE DATABASE skia_nas;
GRANT ALL PRIVILEGES ON skia_blog.* TO skia@localhost;
GRANT ALL PRIVILEGES ON skia_nas.* TO skia@localhost;
FLUSH ALL PRIVILEGES;
PHP 설치
mkdir /sw/php/src #임시경로
cd /sw/php/src
wget https://www.php.net/distributions/php-7.3.8.tar.gz
tar -xvzf php-7.3.8.tar.gz
cd php-7.3.8
./configure --prefix=/sw/php/7.1.8 --with-config-file-path=/sw/php --with-config-file-scan-dir=/sw/php/conf.d --with-apxs2=/sw/httpd/bin/apxs --with-mysqli --with-pdo-mysql --enable-calendar --enable-sockets --enable-sysvsem --enable-sysvshm --enable-zip --with-zlib --with-curl --with-gd --enable-mbstring --with-openssl=/sw/openssl --with-openssl-dir=/sw/openssl --with-jpeg-dir=/sw/php/jpeg --with-png-dir=/sw/php/png --with-xpm-dir=/sw/php/xpm --with-webp-dir=/sw/php/webp --enable-pcntl --enable-intl
make && make install
cd /sw/php
ln -s ./7.1.8/* .
profile 설정
지금까지 설치한 시스템 소프트웨어들이 skia
계정에서 제대로 동작할 수 있도록 vi ~/.bash_profile
에 다음 내용들을 추가한다.
export PATH=/sw/openssl/bin:/sw/httpd/bin:/sw/mysql/bin:/sw/php/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/lib64:/sw/openssl/lib:/sw/httpd/lib:/sw/mysql/lib:/sw/php/lib:$LD_LIBRARY_PATH
httpd 설정 및 실행
cd /sw/httpd/conf
경로로 이동해서 httpd 설정을 마무리한다.
...
ServerRoot "/sw/httpd"
...
Listen 80
...
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
...
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php7_module modules/libphp7.so
...
User skia
Group hckim
...
ServerName example.com:80
...
DocumentRoot "/data2/docs"
<Directory "/data2/docs">
...
AllowOverride All
...
</Directory>
...
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
...
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php .html
...
이어서 httpd 를 실행만 하면 되는데 80 포트로 웹서버 리스너를 바인딩하기 위해서는 root 계정으로 실행해야한다.
su -
. /home/skia/.bash_profile
httpd -k start
웹 어플리케이션 설치
WordPress
mkdir /data2/docs/blog
cd /data2/docs/blog
wget https://wordpress.org/latest.tar.gz
tar -xvzf latest.tar.gz
mv wordpress blog
위 과정이 끝났으면 웹브라우저에서 http://호스트네임/blog
경로로 접근했을 때에 wordpres 설정 화면이 뜨는데 다음과 같이 설정한다.
항목 | 값 |
---|---|
데이터베이스 이름 | skia_blog |
사용자 이름 | skia |
암호 | MYPASSWORD |
데이터베이스 호스트 | localhost:3306 |
테이블 접두어 | wp_ |
NextCloud
wordpress 설치와 같은 절차로 진행
mkdir /data2/docs/drive
cd /data2/docs/drive
wget https://download.nextcloud.com/server/releases/nextcloud-16.0.3.zip
unzip nextcloud-16.0.3.zip
mv nextcloud drive
http://호스트네임/drive
경로로 접근하면 wordpress와 비슷한 설정 화면이 뜨는데 데이터베이스를 mysql
로 선택한 뒤 다음과 같이 설정한다.
항목 | 값 |
---|---|
사용자 이름 | skia |
암호 | MYPASSWORD |
데이터 폴더 | /data2/drive |
데이터베이스 사용자 | skia |
데이터베이스 암호 | MYPASSWORD |
데이터베이스 이름 | skia_nas |
호스트 | localhost:3306 |