vm/chef/cookbooks/wordpress/recipes/common.rb (67 lines of code) (raw):
# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
include_recipe 'apache2'
include_recipe 'apache2::mod-ssl'
include_recipe 'apache2::rm-index'
include_recipe 'apache2::security-config'
include_recipe 'mysql::version-8.0-embedded'
apt_update do
action :update
end
include_recipe 'php81'
include_recipe 'php81::module_libapache2'
include_recipe 'php81::module_mbstring'
include_recipe 'php81::module_mysql'
include_recipe 'php81::module_xml'
include_recipe 'c2d-config::create-self-signed-certificate'
remote_file '/tmp/wp-cli.phar' do
source node['wordpress']['cli']['url']
action :create
end
# Reference: http://wp-cli.org/#installing
bash 'configure wp cli' do
cwd '/tmp'
code <<-EOH
# Change permissions on the wp-cli.phar file for manipulation
chmod +x wp-cli.phar
# Move wp-cli.phar to complete installation
mv wp-cli.phar /usr/local/bin/wp
EOH
end
execute 'download wordpress' do
cwd '/var/www/html'
command <<-EOH
wp core download \
--version=${version} \
--path=/var/www/html \
--allow-root
EOH
environment({ 'version' => node['wordpress']['version'] })
live_stream true
end
execute 'chown wordpress home' do
command 'chown -R ${user}:${user} /var/www/html'
environment({ 'user' => node['wordpress']['user'] })
end
execute 'create wordpress database' do
command 'mysql -u root -e "CREATE DATABASE ${dbname}"'
environment({ 'dbname' => node['wordpress']['db']['name'] })
end
execute 'a2enmods' do
command 'a2enmod rewrite proxy_fcgi setenvif'
end
execute 'a2enconfs' do
command 'a2enconf php8.1-fpm'
end
# Include both configurations to the image
['http', 'https'].each do |file|
template "/etc/apache2/sites-available/wordpress-#{file}.conf" do
source "wordpress-#{file}.conf.erb"
end
end
# Enable HTTP version by default on image build
execute 'enable wordpress.conf' do
command 'a2ensite wordpress-http'
end
bash 'edit php.ini' do
user 'root'
code <<-EOH
sed -i 's/memory_limit = .*/memory_limit = 128M/' /etc/php/*/apache2/php.ini
sed -i 's/upload_max_filesize = .*/upload_max_filesize = 100M/' /etc/php/*/apache2/php.ini
sed -i 's/post_max_size = .*/post_max_size = 100M/' /etc/php/*/apache2/php.ini
sed -i 's/max_execution_time = .*/max_execution_time = 120/' /etc/php/*/apache2/php.ini
EOH
end