> [!date] published: 2022-12-12 ## 🌟 PHP 설정 아래의 WP-CLI 커맨드들을 먼저 보고 테스트해보려고 했는데 php 가 설치되어 있지 않아서 문제가 발생했다.. 어차피 Wordpress 컨테이너에 php도 함께 설치해줘야 하는 것이 맞으므로 앞 순서로 당겼다. PHP 8 버전은 wp-cli와 호환되지 않는다는 이슈가 있다([Heads-up: wp-cli not compatible with PHP 8.0 · Issue #5452 · wp-cli/wp-cli](https://github.com/wp-cli/wp-cli/issues/5452)). 그래서 7 버전을 써야 함. 그냥 `apt-get install php-fpm`을 실행하면 php7.3-fpm을 설치해준다. 버전을 명시하는게 좋으므로 직접 php7.3-fpm을 설치해줬다. (의존성이 있는 패키지들은 알아서 설치해주므로 굳이 내가 설치해 줄 필요는 없을 것 같다.) (추가) 아래에서 `wp core install` 명령에서 php.mysql을 요구해서 설치해줌 ```bash apt-get install -y php7.3-fpm php7.3-mysql ``` ## 🌟WP-CLI Commands ### ✨ Wordpress 설치 : **`wp core <command>`** [wp core – WP-CLI Command \| Developer.WordPress.org](https://developer.wordpress.org/cli/commands/core/) - `wp core download` - [wp core download – WP-CLI Command \| Developer.WordPress.org](https://developer.wordpress.org/cli/commands/core/download/) - wordpress 파일을 다운로드함. - 경로를 지정하지 않았다면 현재 경로를 사용하여 다운로드 한다. - **`[--path=<path>]`** : 설치할 경로를 지정할 수 있다. - **`[--locale=<locale>]`** : 설치 언어를 지정할 수 있다. - **`[--version=<version>]`** : 설치 버전을 지정할 수 있다. - `wp core install` - [wp core install – WP-CLI Command \| Developer.WordPress.org](https://developer.wordpress.org/cli/commands/core/install/) - 새로운 Wordpress table을 데이터베이스에 만든다. - 만드는데 필요한 정보는 옵션으로 넣어줄 수 있다. (URL, default admin user 등) - **`--url=<url>`** : 새로운 사이트의 주소 - **`--title=<site-title>`** : 새로운 사이트의 제목 - **`--admin_user=<username>`** : 관리자 유저의 이름 - **`[--admin_password=<password>]`** : 관리자 유저의 pw. 설정해주지 않으면 랜덤으로 생성된 문자열이 설정된다. - **`--admin_email=<email>`** : 관리자 유저의 이메일 - **`[--skip-email]`** : 새로운 관리자 유저에게 이메일 알림을 보내지 않는 옵션 - wp core is-installed - Wordpress가 설치되었는지 확인함. - 이런 식으로 스크립트에서 활용 가능!!! ```bash # Check whether WordPress is installed; exit status 0 if installed, otherwise 1 $ wp core is-installed $ echo $? 1 # Bash script for checking whether WordPress is installed or not if ! wp core is-installed; then wp core install fi ``` ### ✨ wp-config.php 파일 관리 : **`wp config <command>`** 여기선 생성만 합니다. - `wp config create` - 새로운 `wp-config.php` 파일을 만든다. (db 상수(?)들이 올바른지도 확인할 수 있다고 함.) - **`--dbname=<dbname>`** : database name - **`--dbuser=<dbuser>`** : database user - **`[--dbpass=<dbpass>]`** : database user password - **`[--dbhost=<dbhost>]`** : database user host (default : localhost)\ - [WORDPRESS_DB_HOST=mysql 질문 - 인프런 \| 커뮤니티 질문&답변](https://www.inflearn.com/questions/343997/wordpress-db-host-mysql-질문) - dbhost의 의미를 잘 모르겠어서 찾아봄. - dbhost의 값으로 접속했을 때 그 데이터베이스로 접속할 수 있게 하는 것이다. - 이렇게 넣어준 값들은 이렇게 wp-config.php 파일에 적히게 된다. ```php // ** Database settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define( 'DB_NAME', '뫄뫄' ); /** Database username */ define( 'DB_USER', '솨솨' ); /** Database password */ define( 'DB_PASSWORD', '랄랄라' ); /** Database hostname */ define( 'DB_HOST', '뿅뿅뿅' ); ``` ### ✨ WP-CLI 사용하기 ![[6a56ab85-8788-4785-bf39-9a7487f01f35.png]] 다운로드를 위해서 `wp` 명령어를 사용했더니 `--allow-root` 플래그를 사용하라는 안내가 떴다. 컨테이너 내의 사용자를… 변경해 줄 필요는 없을 것 같아서 경고가 뜨면 `--allow-root` 플래그를 넣어 주었다. ```bash # 기본 - root 계정에서는 실행이 되지 않는다. # wp core download # 명령어를 실행하는 위치에 파일 다운로드 # wp core download --allow-root # 파일 다운로드할 디렉토리 설정 (폴더가 없으므로 만들어줘야 한다.) # mkdir - 이미 존재하고 있으면 만들지 않는다. # -p : 부모 폴더도 만들어준다. mkdir -p /var/www/html/wordpress # 설정한 위치에 다운로드 wp core download --allow-root --path=/var/www/html/wordpress ``` 기본적으로 en_US 언어로 설치가 되고, (다른 언어는 `--locale` 옵션으로 지정해 줄 수 있었다.) `--path` 옵션으로 다운로드할 위치를 설정안해뒀더니 명령어를 실행한 루트에 파일이 저장되었다. Wordpress 설치 가이드들을 보면 대부분 설치 파일들을 `/var/www/html/wordpress/` 디렉토리에 위치시키는 것 같아서 나도 그 경로로 위치시켜 주기로 했다. ![[de149385-6612-4128-a0b8-d0c283d94664.png]] `wp core install` 전에 `wp-config.php` 파일을 만들어줘야 한다. (에러떠서 알게됨 😅) → `wp config create` 명령으로 만들어주기 ```bash # 여기서 지칭하는 DB는 Wordpress에서 사용할 DB인 MariaDB이므로 # 거기서 사용했던 환경변수들을 이용해주면 되겠다. # 파일 존재 확인 필요 wp config create --dbname=$MYSQL_DB \ --dbuser=$MYSQL_USER --dbpass=$MYSQL_PASSWORD \ --dbhost=$MYSQL_HOST --path=/var/www/html/wordpress --allow-root ``` `⚠️ Error: Unknown MySQL server host` - 문제가 있어서 `--dbhost` 옵션을 빼고 했더니 잘 생성이 되었다. (하지만 들어가는게 맞는 것 같으므로 어떻게 설정을 해야 하는 것인지 찾아봐야 함) 중복해서 생성하려고 시도하면 이미 있다고 에러를 발생시키므로 create 전에 해당 경로에 파일이 있는지 확인해줘야 할 듯 하다. ```bash # 다운로드한 파일을 갖고 설치해주기 # 인자들은 모두 환경변수로 다루어주자 # --allow-root : root 계정에서 wp를 사용할 수 있게 # This does not seem to be a WordPress installation. Pass --path=`path/to/wordpress`. # 이런 사유로 --path 추가 wp core install --url=$DOMAIN_NAME --title=$WP_TITLE \ --admin_user=$WP_ADMIN_USER --admin_password=$WP_ADMIN_PASSWORD \ --admin_email=$WP_ADMIN_EMAIL --skip-email \ --path=/var/www/html/wordpress --allow-root ``` `⚠️ Error: Your PHP installation appears to be missing the MySQL extension which is required by WordPress.` - php-mysql을 설치하지 않아서 발생하는 문제라고 함 (참고 : [\[Wordpress\] 워드프레스 에러. Your PHP installation appears to be missing the MySQL extension which is required by WordPress 해결 방법 :: 안산드레아스](https://ansan-survivor.tistory.com/1064)) php-fpm과 동일하게 php7.3-mysql을 설치해주었다. `⚠️ Error: Cannot select database. The database server could be connected to (which means your username and password is okay) but the mariadb database could not be selected.` - 생각해보니까 당연함… 아까 설정 파일에서 host에서 문제가 생겼던것과 동일한 원인일 것 같다. ⇒ 위의 설정파일의 dbhost의 값에다 mariadb가 설치되어있는 컨테이너의 ip (172.18.0.2) 를 넣어주니 설치까진 잘 된다. (뭘까…) --- 이 이후부터는 Virtual Box에서 해 보는게 나을 것 같아서… 내일의 나에게로 미룹니다. (뭔가 잘될것같기도???!?!?!?!?!?!)