워드프레스는 웹에서 가장 인기 있는 오픈 소스 블로그 시스템이자 CMS이다. PHP와 MySQL을 기반으로 한다. 수천 개의 무료 플러그인과 테마로 기능을 확장할 수 있다.
가상 머신에서 간단하게 워드프레스를 호스팅해보자.
먼저 수동으로 셋업하고, 자동으로 Vagrantfile로 Provisoning을 해보자.
수동 - WordPress 호스팅하기
$ vagrant init spox/ubuntu-arm
Vagrant.configure("2") do |config|
config.vm.box = "spox/ubuntu-arm"
config.vm.network "private_network", ip: "192.168.33.11"
config.vm.network "public_network"
end
- vagrantfile을 생성하여 network을 설정하고 가상 머신을 생성한다.
apache, php, mysql, 종속성 설치
sudo apt install apache2 \
ghostscript \
libapache2-mod-php \
mysql-server \
php \
php-bcmath \
php-curl \
php-imagick \
php-intl \
php-json \
php-mbstring \
php-mysql \
php-xml \
php-zip
- apache, php, mysql을 설치하고 관련된 패키지를 설치한다.
Install WordPress
Ubuntu Archive의 APT 패키지가 아닌 WordPress.org의 릴리스를 사용할 예정이다.
릴리스를 사용하면 워드프레스에서 해결할 수 없는 문제가 적어진다.
sudo mkdir -p /srv/www
sudo chown www-data: /srv/www
curl https://wordpress.org/latest.tar.gz | sudo -u www-data tar zx -C /srv/www
- 설치 디렉토리를 생성하고 WordPress.org에서 파일을 다운로드한다.
Configure Apache for WordPress
<VirtualHost *:80>
DocumentRoot /srv/www/wordpress
<Directory /srv/www/wordpress>
Options FollowSymLinks
AllowOverride Limit Options FileInfo
DirectoryIndex index.php
Require all granted
</Directory>
<Directory /srv/www/wordpress/wp-content>
Options FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
- WordPress용 Apache 사이트를 만든다. 다음 명령어를 사용하여 /etc/apache2/sites-available/wordpress.conf를 생성한다.
sudo a2ensite wordpress

- wordpress를 사용할 수 있도록 한다.
- 이 명령어는 soft link를 생성한다.
sudo a2enmod rewrite
sudo a2dissite 000-default
- default 페이지로 apache로 연결하지 않도록 한다.
sudo service apache2 reload
- 변경된 설정을 적용하기 위해 apache를 reload한다.
데이터베이스 mysql 설정하기
$ sudo mysql -u root
mysql> CREATE DATABASE wordpress;
mysql> CREATE USER wordpress@localhost IDENTIFIED BY '<your-password>';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON wordpress.* TO wordpress@localhost;
mysql> FLUSH PRIVILEGES;


워드프레스를 mysql에 연결하도록 설정하기
이제 이 데이터베이스를 사용하도록 WordPress를 구성한다.
sudo -u www-data cp /srv/www/wordpress/wp-config-sample.php /srv/www/wordpress/wp-config.php
- 먼저 샘플 구성 파일을 wp-config.php에 복사한다.
sudo -u www-data sed -i 's/database_name_here/wordpress/' /srv/www/wordpress/wp-config.php
sudo -u www-data sed -i 's/username_here/wordpress/' /srv/www/wordpress/wp-config.php
sudo -u www-data sed -i 's/password_here/<your-password>/' /srv/www/wordpress/wp-config.php
- 그 다음 구성 파일에서 데이터베이스 자격 증명을 설정한다.
define( 'AUTH_KEY', 'put your unique phrase here' );
define( 'SECURE_AUTH_KEY', 'put your unique phrase here' );
define( 'LOGGED_IN_KEY', 'put your unique phrase here' );
define( 'NONCE_KEY', 'put your unique phrase here' );
define( 'AUTH_SALT', 'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT', 'put your unique phrase here' );
define( 'NONCE_SALT', 'put your unique phrase here' );
define('AUTH_KEY', ';Ec|+/R+{KROU.e+%2yb(tVMx4p4B%Y.l&m.CXKVFCim@![&KYE>|/:SqV/ [NH(');
define('SECURE_AUTH_KEY', 'DN#(UT>=+&%Ht+[zz]/lP-~,8/;;q2np&bt*A@M?0E#*@$2 A8GrT6Eza0-7|5|6');
define('LOGGED_IN_KEY', 'r(|ac#vUY*A848ykxh9+Gz_+d5z|ZWQ-i i-hc,xj^1u`$}R,CP5XlYl+pv)V%+~');
define('NONCE_KEY', 'a;{5_tv52EO-zm#>C0[5(Y(AzV~Wxvm%l_BJ?2U),$876TD-;~f!L>JV&N3uWZrf');
define('AUTH_SALT', '%gDcPu42B{4eQ1EfN+yKpl16wMy:q&pV+v!Vn1QBHKhoaXH_y{C)JmI4O,;l}>X}');
define('SECURE_AUTH_SALT', '9Y7&if.jU,=~P-Yt@KJ)D4d=|~>BIeTD(b|)/2r{35KEtb*vPYNutq~= 6iC{Vw$');
define('LOGGED_IN_SALT', '5LUb>Rwy|s4-_yEC|Q+LQ4E.GsaDm)481g%jrV>jJ/|UL:B#X+Z-QshBpoo$[q}}');
define('NONCE_SALT', '+!u;q9xR`c(.x#i6#:AWS1>z|Y#pC0a$Flh6V*3S7#U=~-_]!-S/w8Pr!eV.-Vd^');
- srv/www/wordpress/wp-config.php 파일을 수정한다.

- 가상 머신을 설치할 때 설정한 private_network IP주소를 이용하여 접속한다.
Configure WordPress



자동 - WordPress 호스팅하기(IaC)
자동이랄 것도 없이 매우 간단하다.
provision 섹션에 위 과정을 그대로 작성하면 끝난다.
# Enable provisioning with a shell script. Additional provisioners such as
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use.
config.vm.provision "shell", inline: <<-SHELL
sudo apt update
sudo apt install apache2 \
ghostscript \
libapache2-mod-php \
mysql-server \
php \
php-bcmath \
php-curl \
php-imagick \
php-intl \
php-json \
php-mbstring \
php-mysql \
php-xml \
php-zip -y
sudo mkdir -p /srv/www
sudo chown www-data: /srv/www
curl https://wordpress.org/latest.tar.gz | sudo -u www-data tar zx -C /srv/www
cp /vagrant/wordpress.conf /etc/apache2/sites-available/wordpress.conf
sudo a2ensite wordpress
sudo a2enmod rewrite
sudo a2dissite 000-default
sudo service apache2 reload
mysql -u root -e 'CREATE DATABASE wordpress;'
mysql -u root -e 'CREATE USER wordpress@localhost IDENTIFIED BY "admin123";'
mysql -u root -e 'GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON wordpress.* TO wordpress@localhost;'
mysql -u root -e 'FLUSH PRIVILEGES;'
sudo -u www-data cp /srv/www/wordpress/wp-config-sample.php /srv/www/wordpress/wp-config.php
sudo -u www-data sed -i 's/database_name_here/wordpress/' /srv/www/wordpress/wp-config.php
sudo -u www-data sed -i 's/username_here/wordpress/' /srv/www/wordpress/wp-config.php
sudo -u www-data sed -i 's/password_here/admin123/' /srv/www/wordpress/wp-config.php
service mysql restart
SHELL
cp /vagrant/wordpress.conf /etc/apache2/sites-available/wordpress.conf
wordpress.conf에서 수정할 부분은 로컬 폴더를 공유하는 위치에 파일을 이동하여 가상 머신으로 이동하여 적용할 수 있다.
mysql -u root -e 'CREATE DATABASE wordpress;'
mysql에 로그인 없이 쿼리를 작성하려면 mysql -u root 명령어로 로그인을 한뒤 -e 옵션을 추가하여 쿼리를 입력하면 된다.
vagrant up 명령어를 사용하면 가상 머신이 생성되면서 provision 섹션에 입력된 명령어가 실행되면서 워드프레스가 설치된다.
워드프레스는 웹에서 가장 인기 있는 오픈 소스 블로그 시스템이자 CMS이다. PHP와 MySQL을 기반으로 한다. 수천 개의 무료 플러그인과 테마로 기능을 확장할 수 있다.
가상 머신에서 간단하게 워드프레스를 호스팅해보자.
먼저 수동으로 셋업하고, 자동으로 Vagrantfile로 Provisoning을 해보자.
수동 - WordPress 호스팅하기
$ vagrant init spox/ubuntu-arm
Vagrant.configure("2") do |config|
config.vm.box = "spox/ubuntu-arm"
config.vm.network "private_network", ip: "192.168.33.11"
config.vm.network "public_network"
end
- vagrantfile을 생성하여 network을 설정하고 가상 머신을 생성한다.
apache, php, mysql, 종속성 설치
sudo apt install apache2 \
ghostscript \
libapache2-mod-php \
mysql-server \
php \
php-bcmath \
php-curl \
php-imagick \
php-intl \
php-json \
php-mbstring \
php-mysql \
php-xml \
php-zip
- apache, php, mysql을 설치하고 관련된 패키지를 설치한다.
Install WordPress
Ubuntu Archive의 APT 패키지가 아닌 WordPress.org의 릴리스를 사용할 예정이다.
릴리스를 사용하면 워드프레스에서 해결할 수 없는 문제가 적어진다.
sudo mkdir -p /srv/www
sudo chown www-data: /srv/www
curl https://wordpress.org/latest.tar.gz | sudo -u www-data tar zx -C /srv/www
- 설치 디렉토리를 생성하고 WordPress.org에서 파일을 다운로드한다.
Configure Apache for WordPress
<VirtualHost *:80>
DocumentRoot /srv/www/wordpress
<Directory /srv/www/wordpress>
Options FollowSymLinks
AllowOverride Limit Options FileInfo
DirectoryIndex index.php
Require all granted
</Directory>
<Directory /srv/www/wordpress/wp-content>
Options FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
- WordPress용 Apache 사이트를 만든다. 다음 명령어를 사용하여 /etc/apache2/sites-available/wordpress.conf를 생성한다.
sudo a2ensite wordpress

- wordpress를 사용할 수 있도록 한다.
- 이 명령어는 soft link를 생성한다.
sudo a2enmod rewrite
sudo a2dissite 000-default
- default 페이지로 apache로 연결하지 않도록 한다.
sudo service apache2 reload
- 변경된 설정을 적용하기 위해 apache를 reload한다.
데이터베이스 mysql 설정하기
$ sudo mysql -u root
mysql> CREATE DATABASE wordpress;
mysql> CREATE USER wordpress@localhost IDENTIFIED BY '<your-password>';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON wordpress.* TO wordpress@localhost;
mysql> FLUSH PRIVILEGES;


워드프레스를 mysql에 연결하도록 설정하기
이제 이 데이터베이스를 사용하도록 WordPress를 구성한다.
sudo -u www-data cp /srv/www/wordpress/wp-config-sample.php /srv/www/wordpress/wp-config.php
- 먼저 샘플 구성 파일을 wp-config.php에 복사한다.
sudo -u www-data sed -i 's/database_name_here/wordpress/' /srv/www/wordpress/wp-config.php
sudo -u www-data sed -i 's/username_here/wordpress/' /srv/www/wordpress/wp-config.php
sudo -u www-data sed -i 's/password_here/<your-password>/' /srv/www/wordpress/wp-config.php
- 그 다음 구성 파일에서 데이터베이스 자격 증명을 설정한다.
define( 'AUTH_KEY', 'put your unique phrase here' );
define( 'SECURE_AUTH_KEY', 'put your unique phrase here' );
define( 'LOGGED_IN_KEY', 'put your unique phrase here' );
define( 'NONCE_KEY', 'put your unique phrase here' );
define( 'AUTH_SALT', 'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT', 'put your unique phrase here' );
define( 'NONCE_SALT', 'put your unique phrase here' );
define('AUTH_KEY', ';Ec|+/R+{KROU.e+%2yb(tVMx4p4B%Y.l&m.CXKVFCim@![&KYE>|/:SqV/ [NH(');
define('SECURE_AUTH_KEY', 'DN#(UT>=+&%Ht+[zz]/lP-~,8/;;q2np&bt*A@M?0E#*@$2 A8GrT6Eza0-7|5|6');
define('LOGGED_IN_KEY', 'r(|ac#vUY*A848ykxh9+Gz_+d5z|ZWQ-i i-hc,xj^1u`$}R,CP5XlYl+pv)V%+~');
define('NONCE_KEY', 'a;{5_tv52EO-zm#>C0[5(Y(AzV~Wxvm%l_BJ?2U),$876TD-;~f!L>JV&N3uWZrf');
define('AUTH_SALT', '%gDcPu42B{4eQ1EfN+yKpl16wMy:q&pV+v!Vn1QBHKhoaXH_y{C)JmI4O,;l}>X}');
define('SECURE_AUTH_SALT', '9Y7&if.jU,=~P-Yt@KJ)D4d=|~>BIeTD(b|)/2r{35KEtb*vPYNutq~= 6iC{Vw$');
define('LOGGED_IN_SALT', '5LUb>Rwy|s4-_yEC|Q+LQ4E.GsaDm)481g%jrV>jJ/|UL:B#X+Z-QshBpoo$[q}}');
define('NONCE_SALT', '+!u;q9xR`c(.x#i6#:AWS1>z|Y#pC0a$Flh6V*3S7#U=~-_]!-S/w8Pr!eV.-Vd^');
- srv/www/wordpress/wp-config.php 파일을 수정한다.

- 가상 머신을 설치할 때 설정한 private_network IP주소를 이용하여 접속한다.
Configure WordPress



자동 - WordPress 호스팅하기(IaC)
자동이랄 것도 없이 매우 간단하다.
provision 섹션에 위 과정을 그대로 작성하면 끝난다.
# Enable provisioning with a shell script. Additional provisioners such as
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use.
config.vm.provision "shell", inline: <<-SHELL
sudo apt update
sudo apt install apache2 \
ghostscript \
libapache2-mod-php \
mysql-server \
php \
php-bcmath \
php-curl \
php-imagick \
php-intl \
php-json \
php-mbstring \
php-mysql \
php-xml \
php-zip -y
sudo mkdir -p /srv/www
sudo chown www-data: /srv/www
curl https://wordpress.org/latest.tar.gz | sudo -u www-data tar zx -C /srv/www
cp /vagrant/wordpress.conf /etc/apache2/sites-available/wordpress.conf
sudo a2ensite wordpress
sudo a2enmod rewrite
sudo a2dissite 000-default
sudo service apache2 reload
mysql -u root -e 'CREATE DATABASE wordpress;'
mysql -u root -e 'CREATE USER wordpress@localhost IDENTIFIED BY "admin123";'
mysql -u root -e 'GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON wordpress.* TO wordpress@localhost;'
mysql -u root -e 'FLUSH PRIVILEGES;'
sudo -u www-data cp /srv/www/wordpress/wp-config-sample.php /srv/www/wordpress/wp-config.php
sudo -u www-data sed -i 's/database_name_here/wordpress/' /srv/www/wordpress/wp-config.php
sudo -u www-data sed -i 's/username_here/wordpress/' /srv/www/wordpress/wp-config.php
sudo -u www-data sed -i 's/password_here/admin123/' /srv/www/wordpress/wp-config.php
service mysql restart
SHELL
cp /vagrant/wordpress.conf /etc/apache2/sites-available/wordpress.conf
wordpress.conf에서 수정할 부분은 로컬 폴더를 공유하는 위치에 파일을 이동하여 가상 머신으로 이동하여 적용할 수 있다.
mysql -u root -e 'CREATE DATABASE wordpress;'
mysql에 로그인 없이 쿼리를 작성하려면 mysql -u root 명령어로 로그인을 한뒤 -e 옵션을 추가하여 쿼리를 입력하면 된다.
vagrant up 명령어를 사용하면 가상 머신이 생성되면서 provision 섹션에 입력된 명령어가 실행되면서 워드프레스가 설치된다.