라즈베리파이에 워드프레스 설치
1. 아파치 설치
sudo apt install apache2 -y
2. 설치가 잘 되었는지 크롬에서 테스트
http://localhost
3. IP 주소 알아내기
hostname -I
4. 기본 웹페이지 주소
/var/www/html/index.html
5. 주소로 폴더 구조 볼 수 없게 설정
// sudo nano /etc/apache2/apache2.conf
// 수정 전
<Directory /var/www/>
Options Indexes FollowSymLinks // Indexes 를 지운다.
AllowOverride None
Require all granted
</Directory>
// 수정 후
<Directory /var/www/>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
// 재시작
sudo service apache2 reload
1. PHP 설치 (버전 8.2)
1. PHP 설치 (버전 7.3) 옛날 버전
sudo apt install php -y
2. 설치가 잘 되었는지 테스트
sudo nano /var/www/html/index.php
<?php phpinfo(); ?>
3. index.html 이 index.php 보다 우선하기 때문에 index.html 파일을 지운다.
sudo rm index.html
4. php 코드가 보인다면 재시작
sudo service apache2 restart
# PHP 7 제거하기
sudo apt-get purge php7.*
1. MySQL 설치
sudo apt install mariadb-server php-mysql -y
2. 아파치 재시작
sudo service apache2 restart
1. 워드프레스 설치
2. 웹 루트 폴더의 모든 파일을 지운다.
cd /var/www/html/
sudo rm *
3. wget 을 사용해서 워드프레스 최신 버전 다운로드
sudo wget http://wordpress.org/latest.tar.gz
4. 압축 해제
sudo tar xzf latest.tar.gz
5. 압축 푼 wordpress 디렉토리 파일들을 웹 루트 폴더로 이동
sudo mv wordpress/* .
6. 워드프레스 압축파일과 wordpress 디렉토리 삭제
sudo rm -rf wordpress latest.tar.gz
7. 디렉토리 구조 확인
tree -L 1
8. 파일들을 모두 아파치 유저로 권한 변경
sudo chown -R www-data: .
1. 워드프레스 데이터 베이스 설정
sudo mysql_secure_installation
2. 현재 mysql 패스워드 입력. 없으므로 그냥 엔터
Enter current password for root (enter for none)
3. 루트 패스워드를 설정한다. 잘 기억해놓을 것.
Set root password?
4. 다음 4가지 질문에 모두 Y를 눌러라.
Remove anonymous users.
Disallow root login remotely.
Remove test database and access to it.
Reload privilege tables now.
5. mysql 실행하고 루트 패스워드 입력
sudo mysql -uroot -p
6. wordpress 데이터 베이스를 만들기
create database wordpress;
7. 성공했다면 다음 메시지가 나온다.
Query OK, 1 row affected (0.00 sec)
8. 루트 유저에 데이터베이스 권한 주기 (위에서 적은 패스워드가 바뀌니 똑같이 적어준다.)
GRANT ALL PRIVILEGES ON wordpress.* TO ‘root’@’localhost’ IDENTIFIED BY ‘패스워드’;
FLUSH PRIVILEGES;
9. 10. Ctrl + D 로 MariaDB 종료
1. 워드프레스 환경 설정
2. 한국어 선택
3. 데이터베이스 연결 정보
Database Name: wordpress
User Name: root
Password:
Database Host: localhost
Table Prefix: wp_
4. 설치 완료 후 관리자 로그인
http://localhost/wp-admin
5. 설정(Setting) – 고유주소(Permalinks) – ‘사용자 정의 구조’ 선택 후 다음을 입력한다.
/%category%/%post_id%
그리고 변경 사항 저장(Save Change)을 클릭한다.
주소표시줄에서 URL 구조가 카테고리명/글id 로 바뀌었음.
6. 아파치 rewrite 모드 사용
sudo a2enmod rewrite
7. 아파치에서 request 가 overwrite 되도록 설정. (중요. 안하면 Not Found 오류남)
sudo nano /etc/apache2/sites-available/000-default.conf
// 3줄 추가한다.
<VirtualHost *:80>
<Directory “/var/www/html”>
AllowOverride All
</Directory>
8. 아파치 재시작
sudo service apache2 restart
공유기 포트포워드 추가
FTP : 21번 포트
SSH : 22번 포트
HTTP: 80번 포트
HTTPS : 443 포트
워드프레스에 주소 설정
워드프레스 – 설정 – 일반
워드프레스 주소 : http://hunweb.iptime.org
사이트 주소 : http://hunweb.iptime.org
워드프레스 주소 설정이 잘못되었다면
터미널 열고
mysql -u root -p
use wordpress;
// 주소를 올바르게 바꿔준다.
update wp_options set option_value=’https://hunweb.iptime.org’ where option_name=’siteurl’ or option_name=’home’;
1. SSL 인증서 발급 받고 HTTPS 사용하기
2. Lets’ Encrypt 설치
sudo apt install letsencrypt -y
3. cetbot 을 이용해서 인증서 발급받기
sudo certbot certonly –webroot -w /var/www/html -d hunweb.iptime.org
# IMPORTANT NOTES: 에 Congratulations! 메시지가 나오면 성공이다.
4. 발급받은 인증서 확인
sudo certbot certificates
인증서 파일 경로가 보이는 마지막 두 줄을 복사한다.
5. 아파치에 적용
sudo nano /etc/apache2/sites-available/default-ssl.conf
다음 두 줄을 찾아서
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
발급 받은 인증서 파일 경로로 수정 (경로를 잘 확인하자. live 인지 keys 인지)
SSLCertificateFile /etc/letsencrypt/live/hunweb.iptime.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/hunweb.iptime.org/privkey.pem
6. SSL 인증서를 적용했으므로 추가 (중요. 안하면 Not Found 오류남)
sudo nano /etc/apache2/sites-available/default-ssl.conf
<VirtualHost _default_:443>
<Directory “/var/www/html”>
AllowOverride All
</Directory>
7. 아파치에서 SSL 포트를 연다. (443 번 포트 열기)
sudo a2enmod ssl
8. a2ensite 명령어로 위에서 만든 가상 호스트를 작동시킨다.
sudo a2ensite default-ssl
8. 아파치 재시작
sudo service apache2 restart
9. 인증서는 90일 동안 사용 가능하다.
인증서가 만료 되기 30일부터 인증서 갱신이 가능하다.
만료되기 전에 인증서를 갱신하라.
sudo certbot renew
10. 80번 포트와 443번 포트가 열려있는지 확인 (LISTEN 상태인지 확인)
netstat -nap | grep ‘LISTEN ‘
# 갱신 중에 다음의 오류가 발생한다면 [[webroot_map]] 아래에 다음과 같이 써준다.
Attempting to renew cert (도메인) from /etc/letsencrypt/renewal/도메인.conf produced an unexpected error: Missing command line flag or config entry for this setting
[[webroot_map]]
hunweb.iptime.org = /var/www/html
1. vsftpd (FTP) 에도 SSL 을 적용해서 FTPS 로 만들기
sudo nano /etc/vsftpd.conf
다음 3 줄을 찾아서
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
위에서 발급 받은 인증서 파일 경로로 수정
rsa_cert_file=/etc/letsencrypt/live/hunweb.iptime.org/fullchain.pem
rsa_private_key_file=/etc/letsencrypt/keys/hunweb.iptime.org/privkey.pem
ssl_enable=YES
2. vsftpd 재시작
sudo service vsftpd restart
# FTPS 로 연결하려면 파일질라 같은 프로그램이 필요하다.
FileZilla 를 실행하고
File – Site Manager – Charset 탭 – Force UTF-8 에 체크한다. // UTF-8 강제적용
https://filezilla-project.org/
HTTP 를 HTTPS 로 강제 변환
# rewrite 모듈을 설치한다.
sudo a2enmod rewrite
# 파일 수정
sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
DocumentRoot /var/www/html
# 추가해준다.
ServerName hunweb.iptime.org
</IfModule>
# 여기까지
</VirtualHost>
2. 아파치를 재시작한다.
sudo service apache2 restart
# 대시 두 개를 하나로 치환하는 기능 해제하기 (–) => (-)
# 큰 따옴표와 작은 따옴표가 다르게 변경하는 기능 해제하기
sudo nano /var/www/html/wp-includes/default-filters.php
마지막에 추가
add_filter(‘run_wptexturize’, ‘__return_false’);
https://stackoverflow.com/questions/3330800/wordpress-disable-wptexturize-globally
ipTime 공유기 시스템에서 SSL 인증서 발급하기 (Let’s Encrypt)
2. 서브 도메인 입력하고 add domain 버튼 클릭
3. certbot 설치
sudo apt install certbot
4. 인증서 발급
sudo certbot certonly -a webroot -w /var/www/letsencrypt -d test123.duckdns.org
4. wordpress 설정에서 워드프레스 주소와 사이트 주소를 다음과 같이 바꿔준다.
https://hunweb.duckdns.org
워드프레스 기타 설정
워드프레스에 주소 설정 (https 로 설정)
워드프레스 – 설정 – 일반
워드프레스 주소 : https://hunweb.iptime.org
사이트 주소 : https://hunweb.iptime.org
사이드 바에 카테고리 위젯 추가
테마 디자인 – 위젯 – 사이드바 영역에 카테고리를 끌어서 놓는다.
계층도 표시에 체크를 하고 저장을 한다.
메뉴에 카테고리 추가하기
메뉴 이름을 정해주고 카테고리 항목들을 오른쪽 메뉴 구조에 배치해준다.
메뉴에 로그인, 로그아웃 추가하기
Ultimate Member 플러그인 참조
PHP 업로드 용량 설정
https://hunweb.iptime.org/programming/php/100
워드프레스 플러그인
고전 편집기 플러그인
Ultimate Member 플러그인 (개선된 회원가입/로그인)
TinyMCE Advanced 플러그인 (고전 편집기에 기능 추가)
Category Order and Taxonomy Terms Order 플러그인 (카테고리 순서 변경)
Limit Login Attempts Reloaded 플러그인 (로그인 여러번 실패시 차단)
SSL 무료 인증서 받기 1
https://milkye.tistory.com/337
SSL 무료 인증서 받기 2
https://elfinlas.github.io/2018/03/19/certbot-ssl/
아파치2에 SSL 인증서 적용하기
https://m.blog.naver.com/PostView.nhn?blogId=ameeam&logNo=220950594646
http를 https로 강제변환
https://milkye.tistory.com/338
워드프레스 설치
https://things-actruce.tistory.com/13
letsencrypt ssl인증서 만료 갱신 오류 해결 – webroot 관련
https://servedev.tistory.com/76
대시 두 개를 한 개로 변환하는 기능 해제 ( ‘–‘ => ‘-‘)
https://suay.site/?p=110
주소로 폴더 구조 볼 수 없도록 설정
https://stackoverflow.com/questions/2530372/how-do-i-disable-directory-browsing
ipTime 공유기 시스템에서 SSL 인증서 발급하기 (Let’s Encrypt) (duckdns)
https://yogyui.tistory.com/entry/ipTime-공유기-SSL-인증서-발급-Lets-Encrypt