[英]Install Phalcon with Vagrant/Puppet (git command not found)
我已經成功設置了Vagrant / Puppet配置,以使用nginx,mysql,php5-fpm等安裝基本的hashicorp / precise64服務器。服務器啟動了,我可以使用PHP了而沒有任何問題(可以訪問該網頁)。
但是Phalcon給了我一些問題。 我創建了一個簡單的shell腳本(例如install.sh),其內容如下:
#!/bin/sh
git clone --depth=1 https://github.com/phalcon/cphalcon.git
cd cphalcon/build
./install
wait
service php5-fpm restart
service nginx restart
將該外殼程序腳本復制到linux服務器的根目錄,然后應使用以下Puppet命令執行該腳本:
exec { '/install_phalcon.sh':
require => File['/install_phalcon.sh'],
cwd => '/',
path => '/',
}
它開始執行shell腳本,但是會出現類似“找不到git命令”的錯誤。 我之前已經使用“ cp”和“ ln”之類的命令看到了這一點。
登錄無業游民的VM時,使用“ sudo su”,然后執行shell腳本,一切順利。
我做錯什么了,這是供股嗎? 以及如何在Vagrant / Puppet中解決呢?
謝謝!
您的exec
資源使用$PATH
值/
。 這是一個非常糟糕的主意。
許多可執行文件和幾乎所有的 shell腳本都必須依賴/bin
核心實用程序,某些依賴於/usr/bin
實用程序。 對於非root用戶命令, /bin:/usr/bin
通常是搜索路徑的安全選擇,並且root用戶的某些腳本也可能依賴於/sbin:/usr/sbin
。
嘗試
exec { '/install_phalcon.sh':
require => File['/install_phalcon.sh'],
cwd => '/',
path => [ '/bin', '/usr/bin' ],
}
我可以共享我的無業游民並安裝文件。 我在Ubuntu上使用Phalcon。 它在Mac,Windows和Ubuntu計算機上沒有任何問題。
Vagrantfile文件(文件名僅為“ Vagrantfile”)
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Base Box
# --------------------
config.vm.box = "precise32"
config.vm.box_url = "http://files.vagrantup.com/precise32.box"
# Connect to IP
# --------------------
config.vm.network :private_network, ip: "192.168.5.0"
# Forward to Port
# --------------------
#config.vm.network :forwarded_port, guest: 80, host: 8080
# Optional (Remove if desired)
config.vm.provider :virtualbox do |v|
# How much RAM to give the VM (in MB)
# -----------------------------------
v.customize ["modifyvm", :id, "--memory", "700"]
# Uncomment the Bottom two lines to enable muli-core in the VM
#v.customize ["modifyvm", :id, "--cpus", "2"]
#v.customize ["modifyvm", :id, "--ioapic", "on"]
end
# Provisioning Script
# --------------------
config.vm.provision "shell", path: "init.sh"
# Synced Folder
# --------------------
config.vm.synced_folder "./", "/var/www/", :mount_options => [ "dmode=775", "fmode=644" ], :owner => 'www-data', :group => 'www-data'
end
和安裝文件(文件名為“ init.sh”):
#!/bin/bash
# Using Precise32 Ubuntu
# to use closest ubuntu mirror by geographic location
echo 'deb mirror://mirrors.ubuntu.com/mirrors.txt precise main restricted universe multiverse' | cat - /etc/apt/sources.list > temp && mv temp /etc/apt/sources.list
echo 'deb mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main restricted universe multiverse' | cat - /etc/apt/sources.list > temp && mv temp /etc/apt/sources.list
echo 'deb mirror://mirrors.ubuntu.com/mirrors.txt precise-backports main restricted universe multiverse' | cat - /etc/apt/sources.list > temp && mv temp /etc/apt/sources.list
echo 'deb mirror://mirrors.ubuntu.com/mirrors.txt precise-security main restricted universe multiverse' | cat - /etc/apt/sources.list > temp && mv temp /etc/apt/sources.list
sudo apt-get update
sudo apt-get update
#
# For PHP 5.5
#
sudo apt-get install -y python-software-properties
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
#
# MySQL with root:<no password>
#
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install mysql-server
#
# PHP
#
sudo apt-get install -y php5 php5-dev apache2 libapache2-mod-php5 php5-mysql php5-curl php5-mcrypt php5-gd php5-imagick
#
# Redis
#
sudo apt-get install -y redis-server
#
# MongoDB
#
sudo apt-get install mongodb-clients mongodb-server
#
# Utilities
#
sudo apt-get install -y curl htop git-core gcc autoconf
sudo apt-get install -y libpcre3-dev
#
# Redis Configuration
# Allow us to Remote from Vagrant with Port
#
sudo cp /etc/redis/redis.conf /etc/redis/redis.bkup.conf
sudo sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' /etc/redis/redis.conf
sudo /etc/init.d/redis-server restart
#
# MySQL Configuration
# Allow us to Remote from Vagrant with Port
#
sudo cp /etc/mysql/my.cnf /etc/mysql/my.bkup.cnf
# Note: Since the MySQL bind-address has a tab character I comment out the end line
sudo sed -i 's/bind-address/bind-address = 0.0.0.0#/' /etc/mysql/my.cnf
#
# Grant All Priveleges to ROOT for remote access
#
mysql -u root -Bse "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION;"
sudo service mysql restart
#
# Composer for PHP
#
sudo curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
#
# Apache VHost
#
cd ~
echo '<VirtualHost *:80>
DocumentRoot /var/www/public
SetEnv APPLICATION_ENV "development"
</VirtualHost>
<Directory "/var/www/public">
Options Indexes Followsymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/www/logs/error.log
' > vagrant.conf
sudo mv vagrant.conf /etc/apache2/sites-available
sudo a2enmod rewrite
#
# Install PhalconPHP
# Enable it
#
cd ~
git clone --depth=1 git://github.com/phalcon/cphalcon.git
cd cphalcon/build
sudo ./install
echo "extension=phalcon.so" > phalcon.ini
sudo mv phalcon.ini /etc/php5/mods-available
sudo php5enmod phalcon
sudo php5enmod curl
#
# Install PhalconPHP DevTools
#
cd ~
echo '{"require": {"phalcon/devtools": "dev-master"}}' > composer.json
composer install
rm composer.json
sudo mkdir /opt/phalcon-tools
sudo mv ~/vendor/phalcon/devtools/* /opt/phalcon-tools
sudo ln -s /opt/phalcon-tools/phalcon.php /usr/bin/phalcon
sudo rm -rf ~vendor
#
# PHP.ini params edits
#
sudo echo "; ######### PHP.ini modifications from vagrant init.sh #######" >> /etc/php5/apache2/php.ini
sudo echo "error_reporting = E_ALL | E_STRICT" >> /etc/php5/apache2/php.ini
sudo echo "display_errors = On" >> /etc/php5/apache2/php.ini
#
# Reload apache
#
sudo a2ensite vagrant
sudo a2dissite 000-default
sudo service apache2 reload
sudo service apache2 restart
sudo service mongodb restart
#echo -e "----------------------------------------"
#echo -e "To create a Phalcon Project:\n"
#echo -e "----------------------------------------"
#echo -e "$ cd /var/www"
#echo -e "$ phalcon project projectname\n"
#echo -e
#echo -e "Then follow the README.md to copy/paste the VirtualHost!\n"
#echo -e "----------------------------------------"
#echo -e "Default Site: http://192.168.5.0"
#echo -e "----------------------------------------"
####### writable Volt directory
sudo mkdir /vagrant/cache/volt/
sudo chmod 777 /vagrant/cache/volt/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.