CentOS 6, CentOS 7에서 nginx 1.14.2, mysql 8.0.15, php 7.3.4 설치 및 연동

길라잡이 0 165 2019.06.17 06:57

CentOS 6, CentOS 7 환경에서 설치했으며, 설치 방법은 거의 동일합니다.

설치 환경 및 버전입니다.
OS = CentOS 6.10(Final) , CentOS 7.6.1810(Core)
nginx = 1.14.2
mysql = 8.0.15
php = 7.3.4

 

** 사진이 작으면 클릭해서 봐주세요.

** 글의 내용을 그대로 복사하면 제대로 복사가 안될 수 있습니다. 메모장에 한번 붙여넣기 한 뒤 다시 복사해서 사용해주세요.


 

mysql 8.0.15 설치

mysql 설치 간에 필요한 패키지를 설치합니다.
#yum install -y cmake ncurses-devel openssl openssl-devel

 

설치 도중 메모리 관련 에러가 발생했었습니다. 따라서 미리 스왑 메모리를 증설해 놓겠습니다. 저는 4GB만큼 증설하였습니다.

#dd if=/dev/zero of=/var/swapfile bs=1024 count=4096000
#mkswap /var/swapfile
#swapon /var/swapfile

 

증설 후 free -m 명령어를 통해 제대로 스왑 메모리가 생겼는지 확인합니다.

 

저 같은 경우 리부팅 후에도 지속적으로 스왑 메모리가 적용되도록 설정해줬습니다.
#vi /etc/fstab
…(생략)
/var/swapfile    swap    swap    defaults    0  0

*make 도중 …sql/CMakeFiles/sql_gis.dir/item_geofunc_setops.cc.o 에러 또는 c++: fatal error: Killed signal terminated program … .가 발생하면 스왑메모리를 증설해주시면 됩니다.

 

mysql을 설치할 때 cmake 후 make 명령어를 수행하면 gcc 버전이 낮아 json 관련 에러가 발생합니다. 따라서 gcc를 미리 8.x 버전대로 업데이트 해놓겠습니다.
(CentOS 6의 경우 4.2.x 버전, CentOS 7 버전의 경우 4.5.x 버전으로 gcc가 설치될 것입니다.)

#yum install centos-release-scl
#yum install devtoolset-8-gcc devtoolset-8-gcc-c++
#scl enable devtoolset-8 — bash

 

설치 후 버전을 확인해보면 8.2.1 버전으로 변경된 것을 확인할 수 있습니다.

#gcc –version
#g++ –version

 

리부팅후에도 gcc 버전이 적용될 수 있도록 /root/.bashrc 파일에 아래 내용을 추가해줍니다.

#vi /root/.bashrc
…(생략)
source /opt/rh/devtoolset-8/enable

 

이제 mysql 그룹 및 계정을 생성합니다.

#groupadd -g 400 mysql
#useradd -u400 -g400 -d /usr/local/mysql -s /bin/false mysql

 

계정을 생성했으니 mysql을 설치해보겠습니다.

#cd /usr/local/src
#tar xvfz mysql-8.0.15.tar.gz
#cd mysql-8.0.15
#mkdir build
#cd build

-> mysql 상위 버전부터 빌드를 위한 디렉토리를 따로 만든 뒤 해당 디렉토리에서 작업하도록 변경되었습니다. 만약 빌드를 위한 별도의 디렉토리를 만들지 않고 cmake를

진행하면 다음과 같은 에러가 발생할 것입니다.

CMake Error at CMakeLists.txt:283 (MESSAGE):
Please do not build in-source. Out-of source builds are highly
recommended: you can have multiple builds for the same source, and there is
an easy way to do cleanup, simply remove the build directory (note that
‘make clean’ or ‘make distclean’ does not work)
 
You can force in-source build by invoking cmake with
-DFORCE_INSOURCE_BUILD=1
 
— Configuring incomplete, errors occurred!
 
 
cmake 다음에 ‘..(점 두개)’ 을 꼭 입력해주세요.
#cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 \
-DWITH_SSL=system -DMYSQL_TCP_PORT=3306 -DWITH_EXTRA_CHARSETS=all -DDEFAULT_COLLATION=utf8_general_ci -DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/include/boost
#make && make install

 

CentOS 6의 경우 make 도중 다음과 같은 에러가 발생할 수 있습니다.

cannot find any C preprocessor (cpp)
/usr/bin/rpcgen: C preprocessor failed with exit code 1
make[2]: *** [plugin/group_replication/libmysqlgcs/xdr_gen/xcom_vp.h] 오류 1
make[1]: *** [plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/all] 오류 2
make: *** [all] 오류 2

해당 에러는 다음과 같이 해결해줍니다.

#cp -arp /usr/bin/cpp /lib64/
#cp -arp /usr/bin/cpp /lib/

 

make install 까지 완료되었으면 이제 데이터베이스를 구성해줍니다.

#/usr/local/mysql/bin/mysqld –initialize-insecure –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data –user=mysql

 

디렉토리 및 파일에 대한 권한을 설정해줍니다.

#chown -R mysql.mysql /usr/local/mysql/
#chmod 711 /usr/local/mysql
#chmod 700 /usr/local/mysql/data
#chmod 751 /usr/local/mysql/bin/
#chmod 750 /usr/local/mysql/bin/*
#chmod 755 /usr/local/mysql/bin/mysql
#chmod 755 /usr/local/mysql/bin/mysqldump

 

boost를 설치해줍니다.

#cd /usr/local/include/boost/boost_1_68_0
#./booststrap.sh
#./b2 install

 

설정파일을 수정해줍니다.

#vi /etc/my.cnf

[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
port=3306
socket=/tmp/mysql.sock
 
[mysqld_safe]
log-error=/var/log/mysql_log.err
pid-file=/usr/local/mysql/mysql.pid

 

mysql 실행파일을 옮긴 뒤 리부팅후에도 자동으로 mysql이 실행되도록 설정해줍니다.

#cp -arp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#chkconfig –add mysqld
#chkconfig mysqld on
 
 
모든 설정이 완료되었으면 방화벽에서 mysql 포트인 3306을 열어줍니다. 서버마다 사용하는 방화벽이나 설정이 다를 수 있으니 해당 부분은 생략하겠습니다.
방화벽 설정 및 재시작을 한 뒤 mysql을 싱행해보겠습니다.
#/etc/init.d/mysqld start
다음과 같이 mysql이 실행된 것을 확인할 수 있습니다.
 
이제 mysql의 초기 패스워드를 설정해주겠습니다. 처음엔 패스워드가 설정되어 있지 않기 때문에 바로 접속이 가능합니다.
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘패스워드’;
Query OK, 0 rows affected (0.02 sec)
 
 
mysql 기본 언어셋을 설정해주겠습니다. 저같은 경우는 utf8로 설정해줬습니다.
#vi /etc/my.cnf.d/mysql-clients.cnf
 
[mysql]
default-character-set=utf8
 
[mysqldump]
default-character-set=utf8
 
 #vi /etc/my.cnf
 
[mysqld]
collation-server = utf8_unicode_ci
init-connect=’SET NAMES utf8′
character-set-server = utf8
 
my.cnf를 수정했으니 mysql을 재시작하여 수정한 내용을 적용시켜줍니다.
#/etc/init.d/mysqld restart
 
utf8로 변경되었는지 확인해보겠습니다.
#/usr/local/mysql/bin/mysql -u root -p
mysql> show variables like ‘c%’;
+———————————————-+———————————-+
| Variable_name                                | Value                            |
+———————————————-+———————————-+
| caching_sha2_password_auto_generate_rsa_keys | ON                               |
| caching_sha2_password_private_key_path       | private_key.pem                  |
| caching_sha2_password_public_key_path        | public_key.pem                   |
| character_set_client                         | utf8                             |
| character_set_connection                     | utf8                             |
| character_set_database                       | utf8                             |
| character_set_filesystem                     | binary                           |
| character_set_results                        | utf8                             |
| character_set_server                         | utf8                             |
| character_set_system                         | utf8                             |
| character_sets_dir                           | /usr/local/mysql/share/charsets/ |
| check_proxy_users                            | OFF                              |
| collation_connection                         | utf8_general_ci                  |
| collation_database                           | utf8_unicode_ci                  |
| collation_server                             | utf8_unicode_ci                  |
| completion_type                              | NO_CHAIN                         |
| concurrent_insert                            | AUTO                             |
| connect_timeout                              | 10                               |
| core_file                                    | OFF                              |
| create_admin_listener_thread                 | OFF                              |
| cte_max_recursion_depth                      | 1000                             |
+———————————————-+———————————-+
21 rows in set (0.00 sec)
 
이상으로 mysql 8.0.15 설치를 마치겠습니다.
 

 
nginx 1.14.2 설치
 
nginx 설치에 필요한 필수 패키지를 설치합니다.
#yum install -y libxml2-devel libxml2-static libxslt libxslt-devel gd gd-devel
 
pcre, zlib, openssl 을 설치합니다. 압축만 풀어주시면 됩니다.
#cd /usr/local/src
#wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.42.tar.gz
#tar xvfz pcre-8.42.tar.gz
#tar xvfz zlib-1.2.11.tar.gz
#tar xvfz openssl-1.1.1b.tar.gz
 
 
이제 nginx를 설치하겠습니다.
#cd /usr/local/src
#tar xvfz nginx-1.14.2.tar.gz
#cd nginx-1.14.2
#./configure –prefix=/usr/local/nginx –with-pcre=../pcre-8.42 –with-zlib=../zlib-1.2.11 –with-openssl=../openssl-1.1.1b –with-http_ssl_module –with-http_stub_status_module
#make && make install
 
nginx를 실행 및 리부팅시 자동실행 될 수 있도록 스크립트를 작성해줍니다.
(복사가 제대로 안될수도 있습니다.)
 
#vi /etc/init.d/nginx
#!/bin/sh
#
# nginx – this script starts and stops the nginx daemin
#
# chkconfig:   – 85 15
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /usr/local/nginx/conf/nginx.conf
# pidfile:     /usr/local/nginx/logs/nginx.pid
 
# Source function library.
. /etc/rc.d/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
# Check that networking is up.
[ “$NETWORKING” = “no” ] && exit 0
 
nginx=”/usr/local/nginx/sbin/nginx”
prog=$(basename $nginx)
 
NGINX_CONF_FILE=”/usr/local/nginx/conf/nginx.conf”
 
lockfile=/var/lock/subsys/nginx
 
start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $”Starting $prog: “
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
 
stop() {
    echo -n $”Stopping $prog: “
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
 
restart() {
    configtest || return $?
    stop
    start
}
 
reload() {
    configtest || return $?
    echo -n $”Reloading $prog: “
    killproc $nginx -HUP
    RETVAL=$?
    echo
}
 
force_reload() {
    restart
}
configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
    status $prog
}
rh_status_q() {
    rh_status >/dev/null 2>&1
}
 
case “$1” in
    start)  
        rh_status_q && exit 0
        $1      
        ;;      
    stop)   
        rh_status_q || exit 0
        $1      
        ;;      
    restart|configtest)
        $1      
        ;;      
    reload)
        rh_status_q || exit 7
        $1      
        ;;      
    force-reload)
        force_reload
        ;;      
    status)
        rh_status
        ;;      
    condrestart|try-restart)
        rh_status_q || exit 0
        ;;      
    *)
        echo $”Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}”
        exit 2  
esac
 
#chmod 700 /etc/init.d/nginx
#chkconfig –add nginx
#chkconfig nginx on
 
이제 nginx 를 실행하고 사이트에 정상적으로 접근이 되는지 확인해보겠습니다.(그 전에 방화벽에서 80번 포트를 열어주세요)
#/etc/init.d/nginx start
 
인터넷을 켜고 ip주소로 접근했을 때 다음과 같이 나오면 정상적으로 실행 중인것입니다.
 

 
php 7.3.4 설치
 
php 설치에 필요한 패키지들을 설치해줍니다.
#yum install -y curl-devel libtool-ltdl-devel gdbm-devel libc-client-devel bzip2-devel gzip
 
 
mhash를 설치해줍니다.
#cd /usr/local/src
만약 download파일로 설치되면 mv download mhash-0.9.9.9.tar.gz 로 변경 후 압축해제 한 뒤 진행합니다.
#tar xvfz mhash-0.9.9.9.tar.gz
#cd mhash-0.9.9.9
#./configure
#make && make install
 
libmcrypt를 설치해줍니다.
#cd /usr/local/src
압축 풀고 들어가서
#./configure
#make && make install
 
libzip를 설치해줍니다.
php7.3.4 는 libzip 0.11 이상부터 지원합니다. CentOS 7 기준으로 yum 설치시 0.10이 설치됩니다.
#cd /usr/local/src
#tar xvfz libzip-1.2.0.tar.gz
#cd libzip-1.2.0
#./configure
#make && make install
 
이제 php를 설치하겠습니다.
#cd/usr/local/src
#tar xvfz php-7.3.4.tar.gz
#cd php-7.3.4
#./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/lib –with-config-file-scan-dir=/etc/php/php.d –with-zlib-dir –enable-mbstring –with-curl –with-zlib –disable-rpath –enable-inline-optimization –enable-sockets –enable-sysvsem –enable-sysvshm –enable-pcntl –enable-mbregex –with-mhash –enable-zip –with-pcre-regex –with-mysqli –with-openssl –with-fpm-user=nobody –with-fpm-group=nobody –enable-fpm –with-pdo-mysql
 
configure 도중 다음과 같은 에러가 발생할 떄
configure: error: off_t undefined; check your library configuration
 
# vi /etc/ld.so.conf
/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64
위의 네줄 추가 후 저장한 뒤,
#ldconfig
 
#make && make install
 
fatal error: zipconf.h 에러 발생시
#cp -arp /usr/local/src/php-7.3.4/lib/zipconf.h /usr/local/include/
또는
#cp -arp /usr/local/src/php-7.3.4/ext/zip/lib/zipconf.h /usr/local/include/
 
 
이제 설정파일들을 복사해주겠습니다. nginx 와 php를 연동하기 위해선 php-fpm이 필요합니다.
#cp /usr/local/src/php-7.3.4/php.ini-production /usr/local/lib/php.ini
#cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
#cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
 
php-fpm 실행 파일을 /etc/init.d 에 복사해준 뒤 리부팅시에도 자동으로 실행될 수 있게 chkconfig 설정을 해줍니다.
#cp /usr/local/src/php-7.3.4/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
#chmod 700 /etc/init.d/php-fpm
#chkconfig php-fpm on
 
이제 마지막으로 nginx 와 php 를 연동하여 phpinfo 페이지를 띄워보도록 하겠습니다.
 
#vi /usr/local/nginx/conf/nginx.conf
 

Comments

번호 제목 글쓴이 날짜 조회
187 파이썬 MySql 쿼리 길라잡이 07.06 8
186 PHP 랜덤 문자열 생성 길라잡이 06.14 9
185 PHP 도메인명으로 아이피 확인하기 gethostbyname 길라잡이 06.13 5
184 파이썬 mysql 사용법 예제 pymysql 설치 길라잡이 06.13 7
183 MySQL 원격 접속 허용 길라잡이 06.13 10
182 IDLE 파이썬 쉘 길라잡이 06.13 9
181 파이썬 버전 확인 길라잡이 06.13 8
180 파이썬 DB연동 - PyMySQL + MySQL 길라잡이 06.13 9
179 php에서 쉘 명령어 실행 길라잡이 06.11 7
178 윈도우10 삭제가 안되는 폴더 파일 삭제하는 법 길라잡이 06.08 7
177 워드프레스 첫 번째 이미지를 자동으로 특성 이미지로 설정하는 방법 길라잡이 06.08 4
176 리눅스 CentOS 7 좀비 프로세스 생성, 찾기, 종료 길라잡이 06.04 12
175 MariaDB innodb_buffer_pool_size 최적화 항목들 길라잡이 06.01 18
174 리눅스 정보 조회 OS, CPU, RAM 길라잡이 06.01 16
173 MariaDB timeout 설정 길라잡이 06.01 19
172 데이터베이스 timeout 설정하기 길라잡이 06.01 13
171 MariaDB(MYSQL) 최적화 하기 – my.cnf(InnoDB) 설정 길라잡이 05.31 8
170 MariaDB Binlog Cache and Binlog Cache Size 길라잡이 05.31 10
169 apache error log 안쌓이게 하는 방법 길라잡이 05.31 14
168 파이썬으로 크롤링하는데 값이 안 읽어와질때 해결법 길라잡이 05.31 18
167 MariaDB max_heap_table_size 길라잡이 05.31 10
166 MariaDB tmp full 발생 시 조치방법 길라잡이 05.30 18
165 파이썬 MarkDown 사용법 총정리 길라잡이 05.30 18
164 파이썬 마크다운을 이용한 주피터 노트북 정리하는 방법 길라잡이 05.30 19
163 파이썬 input 함수 사용법 정리 파이썬 키보드 입력 길라잡이 05.30 17
162 파이썬 파일 사용법 정리 파일 읽기, 파일 쓰기, with문, pickle 모듈 길라잡이 05.30 11
161 파이썬 메모장에 글쓰기 길라잡이 05.30 16
160 파이썬 REQUESTS 모듈을 통한 자동화 글쓰기 길라잡이 05.30 11
159 파이썬 selenium chromedriver 버전 오류 해결하기 길라잡이 05.29 15
158 MARIADB OPEN_FILES_LIMIT 값 변경하기 길라잡이 05.29 12


 

페이스북에 공유 트위터에 공유 구글플러스에 공유 카카오스토리에 공유 네이버밴드에 공유