CentOS7에서 Wordpress 설치하기(nginx,php7, mariadb10)

Posted by Everyharu
2016. 5. 3. 16:59 IT/Etc

이하 모든 설치는 root계정으로 진행한다고 가정합니다.


1. php 7.0 설치

1
2
3
4
yum install -y epel-release
rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum --enablerepo=remi update remi-release
yum --enablerepo=remi-php70 install -y php php-mbstring php-pear php-fpm php-mcrypt php-devel php-xml php-mysql php-gd
cs

설치가 완료되면 php.ini 파일을 설정해야한다. 기본적으로 아래의 설정은 설정하고 넘어가자.

vim /etc/php.ini

1
2
3
4
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Seoul
cs

1
2
;cgi.fix_pathinfo=1
cgi.fix_pathinfo=0
cs

이번에는 nginx에서 proxy로 사용하기 위해 php-fpm 을 설정한다.
vim /etc/php-fpm.d/www.conf
1
2
3
4
5
;user = apache
user = nginx
; RPM: Keep a group allowed to write in log dir.
;group = apache
group = nginx
cs


1
2
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock
cs

1
2
3
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
cs
이렇게 세군대를 수정해준다.
그리고 php-fpm을 실행하고 시작프로그램으로 등록한다.
1
2
systemctl enable php-fpm.service
systemctl start php-fpm
cs


2. mariadb10 설치

vim /etc/yum.repos.d/MariaDB.repo

1
2
3
4
5
6
7
# MariaDB 10.1 centos repository
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/rhel7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
cs

yum install -y mariadb mariadb-server
설치가 완료되면 간단하게 설정을 한다.

vim /etc/my.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[mysql]
default-character-set = utf8
 
[mysqld]
skip-host-cache
skip-name-resolve
lower_case_table_names=1
character-set-client-handshake=FALSE
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
character-set-server = utf8
collation-server = utf8_general_ci
max_connections = 500 
thread_pool_max_threads = 300 
innodb_file_per_table                           # innodb 테이블스페이스를 테이블별로 각각의 파일로 나누어 생성한다. 
innodb_buffer_pool_size = 2G               # 버퍼풀의 메모리 사이즈. 권장은 메인메모리의 50~70% (전용서버일때) 디폴트는 8M  
innodb_flush_log_at_trx_commit = 1 
innodb_adaptive_flushing = ON
innodb_adaptive_hash_index = ON
innodb_autoextend_increment  = 8  # 테이블스페이스를 자동으로 늘려주는 단위, MB 단위이다. 
 
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
 
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
 
!includedir /etc/my.cnf.d
cs

위처럼 설정했으면 이제 mariadb 를 최초 실행해준다.

systemctl start mariadb
systemctl enable mariadb

그리고 다음을 실행한다.

1
mysql_secure_installation
cs

mysql 의 기본보안설정이다. testdb등을 삭제해야한다.
처음에 패스워드를 물어보면 그냥 엔터로 넘어가고 추가적으로 새로운 패스워드를 설정하겠냐고 물어보니 설정하자.
Change the root password? [Y/n] y

이후 질답

1
2
3
4
5
6
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
 
systemctl restart mariadb.service
cs

이렇게 하고나면 접속할 사용자 계정이 필요해진다.

1
mysql -uroot -p
cs

아까 설정한 password를 입력하여 접속하자.

이후에 다음과 같이 권한설정과 함께 내가 사용할 root이외의 계정을 만들자. 한글로 되어있는 부분을 잘 변경해서 입력하자.

1
2
GRANT ALL PRIVILEGES ON *.* TO '이부분에 사용할 계정명'@'%' IDENTIFIED BY '이부분에 사용할 패스워드 입력' WITH GRANT OPTION;
FLUSH PRIVILEGES;
cs
1
2
3
4
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY '이곳에는 패스워드를 넣어주세요.';
GRANT EXECUTE, PROCESS, SELECT, SHOW DATABASES, SHOW VIEW, ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TABLESPACE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, LOCK TABLES, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SHUTDOWN, SUPER  ON *.* TO 'wordpress'@'127.0.0.1';
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'wordpress'@'localhost';
cs

위 명령으를 입력하고 다른 GUI 툴로 접속해서 계정에 대한 관리를 하는걸 추천한다. 일단 권한 설정은 이정도만 다루도록 한다.

설정이 완료되면 exit 를 입력하여 나오도록 한다.

그리고 방금 만든계정으로 다시 접속해서 db를 만들어보자

mysql -uwordpress -p

1
CREATE DATABASE `wordpress`
cs

위와같이 database까지 생성했으면 db준비완료


3. nginx 설치
(nginx의 경우 버전이 wordpress 에 별로 영향을 미치지 않는다. 안정성있게 기본제공버전으로 설치하도록 하자.)

1
2
yum install -y nginx
systemctl enable nginx
cs

wordpress 디렉토리를 아직 만들진 않았지만 설정을 미리 해놓도록 하자.

1
vim /etc/nginx/conf.d/default.conf
cs
아래 설정내용은 자유롭게 수정해도 좋지만 일단 기본적으로 다음과 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
server {
    listen       80
    server_name  localhost;
 
    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;
 
    index   index.php;
    root    /home/www/wordpress;
 
    location / { 
        try_files $uri $uri/ /index.php?$args;
    }   
 
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }   
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }   
 
    #error_page  404              /404.html;
 
    # redirect server error pages to the static page /50x.html
    #   
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }   
 
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /home/www/wordpress$fastcgi_script_name;
        include     fastcgi_params;
    }   
}
cs

nginx 의 conf가 제대로 작성됬는지 테스트한다.

nginx -t


그리고나서 nginx를 재시작한다.

systemctl restart nginx


4. wordpress 설치

다음을 순차적으로 따라해본다.(중간에 wget으로 받는 파일은 워드프레스 영문버전이다. 한글버전을 받고 싶다면 해당 url로 교체하여 입력한다.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload
firewall-cmd --list-all
mkdir /home/www/
 
cd
wget https://wordpress.org/latest.tar.gz
tar zxvf latest.tar.gz wordpress
rm -rf latest.tar.gz
mv wordpress/ /home/www/wordpress
mkdir /home/www/wordpress/wp-content/uploads
mkdir /home/www/wordpress/wp-content/upgrade
chown -R nginx:nginx /home/www/wordpress
chown -R nginx:nginx /var/lib/php/
 
chcon -R -t httpd_sys_content_t /home/www
/usr/sbin/setsebool -P httpd_can_network_connect true
setsebool -P httpd_can_network_connect 1
setsebool -P httpd_enable_homedirs 1
setsebool -P httpd_can_network_relay 1
setsebool -P httpd_setrlimit 1
chcon -R -t httpd_sys_rw_content_t /home/www/wordpress/
 
cd /home/www/wordpress/
cp /home/www/wordpress/wp-config-sample.php /home/www/wordpress/wp-config.php
vim /home/www/wordpress/wp-config.php
cs

이제 편집기의 내용 중 DB이름과 user 이름을 넣어주도록하자.

1
2
3
4
5
6
// database_name_here 부분에 DB의 이름을 넣어야 한다. 원하는 이름으로 넣어주자.
define('DB_NAME', 'database_name_here');
// username_here 부분에 위에서 만들었던 db의 계정명을 넣어주자.
define('DB_USER', 'username_here');
// password_here 부분에 위에서 만들었던 db 계정의 password를 입력해주자.
define('DB_PASSWORD', 'password_here');
cs

그리고 db내용이 끝나는 부분쯤에 다음을 넣자

1
define('FS_METHOD','direct');
cs

저장하고 빠져나오면 일단 준비는 완료.


부가적으로 메일이 필요한 기능을 쓴다면 추가적으로 php에서의 mail 기능이 이상태로는 안될 수 있으니 sendmail도 설치하자.

1
2
3
yum install sendmail
sestatus -| grep sendmail
setsebool -P httpd_can_sendmail=on
cs


그리고 이제 웹브라우저를 열고 워드프레스 인스톨 페이지에 접속해보자.

http://서버의IP/wp-admin/install.php

만약 위와같은 화면을 만나지 못했다면 위의 내용을 다시한번 천천히 정독해보도록한다.