우분투에 워드프레스 설치하기

2021-11-28
우분투20.04 LTS + Apache2 + MySQL + PHP7.4 + Wordpress

이틀을 꼬박 날렸다.

AWS 프리 티어는 얼마 쓰지 않은 것 같은데 벌써 무료 용량이 다 찼다고 알림이 왔다. 속 편하게 유료로 쓸까 하다가, 테스트 웹사이트를 굳이 유료로 쓸 건 없다 싶어 대안을 찾았다. 10년도 더 된 구닥다리 노트북을 밀고 우분투를 깔기로 했다. 리눅스 기반이니 간단한 웹서버는 구축할 수 있으리라 여겼다.

서버 관련 지식이 전무하기에, 웬만한 건 구글링으로 해결했다. 여러 블로그를 뒤져가며 하나씩 따라하다보니 사이트가 만들어졌다. 시행착오가 좀 있었지만 결국 개설했다.

순서는 이렇다.

  • USB 부팅 디스크 + 우분투 ISO
  • 노트북에 우분투 설치
  • Apache2 + MySQL + PHP7.4(AMP) 설치
  • 워드프레스 설치

중간에 설정할 것들도 많고 오류도 잡아줘야 한다. 다음에 다시 작업할 때를 대비해 대략 순서를 기록해 둔다.

  • 우분투 부팅 USB + ISO 준비.

  • USB로 부팅해 우분투 설치

  • 우분투에 APM 설치

    • 우분투 패키지 업데이트

        • 등록된 저장소 내 패키지 정보를 최신으로 업데이트

          •   $ sudo apt update
            
          • 시스템에 설치된 패키지 업그레이드

          •   $ sudo apt upgrade
            
          • 불필요한 패키지 자동 삭제

          •   $ sudo apt autoremove
            
      • Apache2 설치

        • Apache2 설치

          •   $ sudo apt install apache2
            
          • 아파치 서버 시작

          •   $ sudo service apache2 start
            
          • 아파치 서버 중지

          •   $ sudo service apache2 stop
            
          • 아파치 서버 재시작

          •   $ sudo service apache2 restart
            
          • 부팅할 때마다 자동 실행

          •   $ sudo update-rc.d apache2 defaults
            
      • MySQL 설치

        • MySQL 설치

          •   $ sudo apt install mysql-server
            
          • 보안 스크립트 실행

          •   $ sudo mysql_secure_installation
            
          • 재부팅 시 자동 실행 설정

          •   $ sudo update-rc.d -f mysql defaults
            
      • PHP 7.4 설치 (Aphache와 MySQL 먼저 설치한 뒤 PHP 설치해야 함)

        • PHP 7.4 설치. Apache2와 MySQL 모듈도 함께 설치
    •     $ sudo apt install php libapache2-mod-php-mysql
      

      • PHP 익스텐션 목록 보기

      •   $ apt list php-* php7.4-*
        
      • 기본 익스텐션 설치

      •   $ sudo apt install php-{bz2,imagick,imap,intl,gd,mbstring,pspell,curl,readline,xml,xmlrpc,zip}
        
    • 워드프레스 필수 패키지 설치

      •   $ sudo systemctl enable php7.4-fpm
        
      • 재부팅시 자동 시작 설정

      •   $ sudo systemctl start php7.4-fpm
        
      • 설정 적용

      •   $ sudo systemctl reload php7.4-fpm
        
      • php.ini 설정

      •   $ sudo nano /etc/php/7.4/fpm/php.ini
        
      • 아래 항목 찾아서 수정

      •   short_open_tag = On
          memory_limit = 256M
          cgi.fix_pathinfo = 0
          upload_max_filesize = 100M
          post_max_size = 101M
          max_execution_time = 360
          date.timezone = Asia/Seoul
        
      • index.php 생성

        • ‘/var/www/html’로 이동해 index.php 만들고 내용 입력

          •   $ cd /var/www/html
              $ sudo nano index.php
              <?php
              phpinfo();
              저장
            
      • php-gd 라이브러리 설치

      •   $sudo apt-get install php-gd
        
      • mod_rewrite 활성화

      •   $ sudo a2enmod rewrite
        
    • MySQL 로그인

      •   $ mysql -u root -p
        
      • wordpress 데이터베이스 생성

      •   MySQL> CREATE DATABASE wordpress;
        
      • ID & PW 설정

      •   MySQL> CREATE USER 'asadal'@'localhost' IDENTIFIED BY 'password_here';
        
      • asadal 에게 DB 권한 부여

      •   MySQL> GRANT ALL ON wordpress.* TO 'asadal'@'localhost' WITH GRANT OPTION;
        
      • 저장 후 빠져나오기

      •   MySQL> FLUSH PRIVILEGES;
          MySQL> EXIT;
        
  • Wordpress 최신 한글 버전 설치

    • 파일 다운로드

      •   $ sudo wget https://ko.wordpress.org/latest-ko_KR.tar.gz
        
      • 압축 해제

      •   $ sudo tar -xvzf latest-ko_KR.tar.gz
        
      • 압축 파일 삭제

      •   $ sudo rm -rf /var/www/html/wordpress/latest-ko_KR.tar.gz
        
      • 루트 폴더로 워드프레스 파일 이동

      •   $ sudo mv /var/www/html/wordpress/* /var/www/html/
        
      • wordpress 폴더 삭제

      •   $ sudo rm -rf /var/www/html/wordpress
        
      • 루트 폴더로 이동

      •   $ cd /var/www/html
        
      • 권한 부여

      •   sudo chown -R www-data:www-data /var/www/html/
          sudo chmod -R 755 /var/www/html/
        
      • Apache2 재시작

      •   $ sudo service apache2 restart
        
  • Wordpress 설정

    • http://127.0.0.1 접속해 워드프레스 설치 완료

      • 도메인 연결

        • 아래 파일로 접속

          •   $ sudo nano /etc/apache2/sites-enabled/000-default.conf
            
      • 도메인 연결 설정

      •   ; 도메인 연결(http://www.cloudflare.com 접속해 사전 설정)
          ServerName asadal.ga 
          ServerAdmin asadal@hani.co.kr
          ServerAlias www.asadal.ga
          DocumentRoot /var/www/html
        
      • wp-config.php 파일 수정

      •   $ sudo nano /var/www/html/wp-config.php
        
      • sFTP 연결 모드 우회 설정

      •   define('FS_METHOD', 'direct');
        
      • 참고 : 기본 wp-config.php 설정

        • 랜덤키 발생 사이트 : https://api.wordpress.org/secret-key/1.1/salt/
    •     define('DB_NAME', 'wordpress');
          define('DB_USER', 'asadal');
          define('DB_PASSWORD', 'password_here');
          define('FS_METHOD', 'direct');
          define('AUTH_KEY',         '*+B12Um|BC@Jj4[rxz>7GmV$_Gydplm]e_DH=**{HmdBO&et~{60?-]buAH[|}0A');
          define('SECURE_AUTH_KEY',  '}@zH6`5ucI+D)J:-ttBXK~UAuEp8Zkv,exwJsN^yqExkbHW|=BP+0-K;m]a9moa4');
          define('LOGGED_IN_KEY',    'RVk%SCn`vKteLoI+$@Ip9eO+Wzd<-gC M?+m3kUfpe}LyWETlN ENnmm)~x/}10[');
          define('NONCE_KEY',        '3_iup<b|+xUW$K0<p<>[c^Bm1o*:kI]e3M`fS1p#FC |s=*5lSbo|b9I+H?wz+I}');
          define('AUTH_SALT',        '8-@O*c2WU-;83+dC>B[c60>GpWu`VWz^`+iZexB>f ZyTE[sN4{#X[W$uR9y77Wc');
          define('SECURE_AUTH_SALT', 'CU(3ZT*x8nA5xiV)hV&iJ_N+8b%%cOxn&;TY8kpigfyHY7NeAE|Q~ep f+6Og7&B');
          define('LOGGED_IN_SALT',   'Uzp!iS_^}kZY-Pw@-+v?D=%m4D1+xI.N1DpCP{v)x+ap:LIp&+EwMkH5@dvmKAr3');
          define('NONCE_SALT',       'yDfpy+/:9F0@9i,>[JogZ+81{+-LiRz1a+a/.0zI+dTIWy|;m%T-.4fgu2-G|=PF');
      
    • wp-config.php 기본 설정(추가)
    /** Memory Limit */
    define( 'WP_MEMORY_LIMIT', '256M' );
      
    /** Multisite */
    define( 'WP_ALLOW_MULTISITE', true );
    
      • 참고 : 멀티사이트 추가하기 : https://avada.tistory.com/2138
    • 참고 : 워드프레스 글 저장시 ‘응답이 유효한 JSON 응답이 아닙니다’ 오류가 날 때
        • https://h-sk.net/forums/topic/144811/
      • 참고 : 포트포워딩

        • https://m.blog.naver.com/seoulworkshop/221265052717
          • https://www.thewordcracker.com/basic/how-to-install-wordpress-in-local-computers/

참고 :

  • https://yoshikixdrum.tistory.com/214
  • https://blog.wsgvet.com/ubuntu-20-04-install-wordpress-php7-4/
  • https://swiftcoding.org/wp-config-file