| ‼️ | 该存储库不再积极维护。流浪盒仍然有效,但是除了社区贡献的修复程序之外,没有收到其他任何更新。目前专注于我们的LEMP堆栈开发 |
|---|
jolliest vagrant
这是一个简单的WordPress优化的Vagrant服务器,最初是为多个WordPress项目的本地开发环境而创建的。
该流浪服务器可以用作普通本地服务器,用于服务您的文件或测试静态PHP,但它也非常适合WordPress开发。
当前在Linux(Elementary OS),Mac OS X和Windows 10上成功测试。
另请参阅我们的LEMP盒子Marlin-Vagrant。
里面有什么?
| 特征 | 版本 /金额 |
|---|---|
| Ubuntu | 12.04.5 LTS(精确穿衣) |
| mysql | 5.5 |
| php | 5.3.10(可选的5.5.30) |
| WordPress优化 | 建议用于最佳WordPress性能的PHP模块 |
| 流浪汉 | NFS,带有预安装的软件包的profision.sh,速度优化 |
| CPU内核 | 2 |
| 内存 | 2 GB |
| apache | 2.2.22(可选的2.4.16) |
背景
在此盒子之前,我尝试了大约30个流浪设置。在此之前,我已经创建了两个Vagrant-Repositories。开始根据我的需求修改它们,并注意到提交后,我越来越多地遇到了我不需要或没有足够耐心地学习如何彻底配置的东西。
将我的头足够撞到墙之后,最终删除了这些存储库,并从头开始学习一切。流浪设置太多了,我可能尝试了其中的大多数。
厨师和木偶的配置和学习曲线使人疯狂。设法处理它们,但毕竟我更像是一个狂欢者,所以自然而然地,我的流浪设置将仅使用简单的bash脚本。保持简单,愚蠢。
名字背后的故事
试图为此构成独特的名称,并为多个项目的Anagrams注意到服务器,以使杂乱无章的perverter scrump 。这就是为什么这是有史以来jolliest vagrant 。
用法
要启动这个流浪汉,请始终使用vagrant up --provision和Provision -hook,以确保所有内容都正确加载。
目录
- 在Mac/Linux上安装
- 在Windows上安装
- 后安装
- 安装FastCGI
- 安装替代性PHP缓存
- 使用配置的速度更高
- 如何添加新的vhost
- 如何删除项目或VHOST
- 与LAN中的另一台计算机连接
- 端口转发(可选)
- SSL / HTTPS(可选)
- 安装phpmyadmin(可选)
- MySQL的续集Pro设置
- 额外的
- 使用FastCGI安装PHP 5.5和Apache 2.4
- 故障排除和问题
- 连接超时
- SSH命令以非零退出状态做出响应
- 损坏的JS/CSS
- 其他问题
建议
- Mac OS X或Linux
- Web服务器的简单知识
- 在同一文件夹下的WordPress项目
- 使用的Dudestack
在Mac/Linux上安装
- 安装VirtualBox
- 启动VirtualBox,检查更新并安装所有最新版本的VirtualBox和Oracle VM VirtualBox扩展包,如果询问
- 安装Vagrant( Mac OS X Homebrew:
brew install vagrant) - 使用命令vagrant插件安装
vagrant plugin install vagrant-triggers - 安装VirtualBox Guest添加-updater Vagrant-vbGuest带有命令
vagrant plugin install vagrant-vbguest - 克隆此回购到您的项目目录(path〜
~/Projects/jolliest-vagrant在dudestack中是depeatant) - (可选,例如,如果您想使用其他图像或遇到随附的VagrantFile的问题)如果您不知道或不在乎,请不要执行此步骤。修改VagrantFile :
config.vm.box和config.vm.box_url以匹配您的生产服务器OS,config.vm.networkfor ip(我建议它为10.1.2.3,以防止与其他子网碰撞)(对于Linux,您需要删除, :mount_options...如果出现问题的问题,请启动服务器。请删除零件。请删除零件。如果您不需要与同事访问LAN的服务器来更新WordPress,请使用config.vm.network \"public_network\"删除。如果您的MAC阻止它们,则可能需要尝试大于80和443的不同端口。例如,将端口更改为8080和443(也相应地更改触发器) - 如果将项目存储在与〜/项目不同的文件夹中,请将正确的路径更改为
config.vm.synced_folder - 编辑或添加软件包以匹配您在profision.sh中的生产服务器软件包(虽然很不错)
- 将
10.1.2.3 somesite.dev添加到您的/etc /hosts - 运行
vagrant up --provision。这可能需要一点时间。
如果您对VagrantFile进行任何更改,请运行vagrant reload或vagrant up --provision如果服务器未运行,或者如果您在运行时更改Provision.sh ,则运行vagrant provision 。
您始终可以通过vagrant ssh ssh\’Ing到Vagrant Box并键入sudo service apache2 status Apache状态。如果没有启动,请运行sudo service apache2 start 。
在Windows上安装
- 安装Windows的VirtualBox
- 为Windows安装Vagrant
- 安装Windows的Git
- 右键单击我的计算机(或Windows 10上的此组合),单击属性,单击Advaned System设置选项卡,单击环境变量。将
VBOX_MSI_INSTALL_PATH更改为VBOX_INSTALL_PATH。在Windows 10中,您可以转到高级系统设置,只需在打开启动菜单时键入它即可。 - 启动
cmd - 导航到
C:\\带有双点.. -
mkdir Projects创建一个项目DIR和cd Projects以输入该项目 - 克隆此存储库,使用命令
git clone git@github.com:digitoimistodude/jolliest-vagrant.git - 使用您喜欢的编辑器编辑
Vagrantfile,然后将~/Projects重命名为C:/Projects。删除, :mount_options => [\'nolock,vers=3,udp,actimeo=2\'] - 运行
vagrant up --provision,等待安装框时等待,如果询问它,请允许访问。这可能需要一点时间。 - 将
10.1.2.3 somesite.dev添加到您的c:/windows/system32/drivers/etc/hosts文件中,并获得乐趣!
后安装
由于我想使其尽可能简单,这将是多个不需要随时间变化的项目的单个VM,因此我希望手动安装额外的东西。另外,清洁剂越好,除了安装和配置东西比安装和配置事物更有趣呢?
- 确保您在Vagrant目录(
cd ~/Projects/jolliest-vagrant)中,并通过vagrant ssh进入Vagrant Box中 - 您可能需要删除默认的“它有效!” -页。
rm /var/www/index.html执行此操作 - 如果您想检查所有内容都可以并成功地链接了文件夹,则可以通过
cd /var/www/和ls访问公共文件夹,然后您应该在使用浏览器访问Localhost时查看所有项目和目录列表。
1。安装fastcgi
另一个速度提高技巧是将FASTCGI用作服务器API而不是默认的Apache处理程序。这是基于Howtoforge的文章:
-
sudo apt-get -y install apache2-mpm-worker libapache2-mod-fastcgi php5-fpm php5 -
sudo a2enmod actions fastcgi alias -
sudo pico -w /etc/apache2/conf.d/php5-fpm.conf<IfModule mod_fastcgi.c> AddHandler php5-fcgi .php Action php5-fcgi /php5-fcgi Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization </IfModule> -
sudo service apache2 restart -
sudo echo \"<?php phpinfo();\" > /var/www/info.php -
现在,当您转到10.1.2.3/info.php时,您应该在第三行中看到fpm/fastcgi 。
2。安装替代PHP缓存
替代PHP缓存加快了PHP处理。本教程基于数字海洋的文章:
-
sudo apt-get -y install php-pear php5-dev make libpcre3-dev -
sudo pecl install apc,在询问时选择或按返回(输入并接受其默认值的每一个可能的步骤) -
sudo pico -w /etc/php5/fpm/php.ini(正常/etc/php5/apache2/php.ini ,但我们正在使用fpm),一路向下滚动并添加到最后一行:extension = apc.so apc.shm_size = 64 apc.stat = 0 -
sudo cp /usr/share/php/apc.php /var/wwwandsudo service apache2 restart && sudo service php5-fpm restart -
现在,当您使用浏览器转到10.1.2.3/apc.php时,您应该查看APC信息
3。使用配置的速度更高
我附上了confs文件夹,其中包括自定义my.cnf和php.ini供您调整。
- (可选)进一步自定义配置
- SSH进入您的Vagrant Box(
cd ~/Projects/jolliest-vagrant && vagrant ssh) - 运行命令
sudo cp /vagrant/confs/my.cnf /etc/mysql/my.cnf && sudo cp /vagrant/confs/php.ini /etc/php5/fpm/php.ini - 运行正确重新启动
sudo service apache2 restart && sudo service php5-fpm restart && sudo service mysql restart - 配置更新完成!如果您想以后编辑配置,请将SSH纳入Vagrant并直接使用Nano进行编辑,例如
nano /etc/mysql/my.cnf等。
如何添加新的vhost
使用Apache的启用网站的配置来管理多个项目很容易。如果您的项目名称是jolly ,并且位于〜/Projects/Jolly中,则只需在VHOSTS中添加新的配置即可。 vhosts/jolly.dev.conf将是:
<VirtualHost *:80>
ServerAdmin webmaster@jolly
ServerName jolly.dev
ServerAlias www.jolly.dev
DirectoryIndex index.html index.php
DocumentRoot /var/www/jolly
LogLevel warn
ErrorLog /var/www/jolly/error.log
CustomLog /var/www/jolly/access.log combined
</VirtualHost>
运行vagrant provision和繁荣! http://*j**olly.dev指向您的项目文件。
如何删除项目或VHOST
如果您从Projects文件夹中删除项目或重命名该项目,则还应相应地删除/重命名vhosts/projectname.dev.conf ,并确保在vagrant ssh之后确保您没有conf以/etc/apache2/sites-enabled和/etc/apache2/sites-available .否则服务器(apache)将不会启动!
例如,如果我们将测试项目创建为〜/projects/test,然后删除文件夹,下次您启动Apache失败时。您将必须vagrant ssh和sudo rm /etc/apache2/sites-enabled/test.dev.conf && sudo rm /etc/apache2/sites-available/test.dev.conf && /vagrant/vhosts/test.dev.conf 。
与LAN中的另一台计算机连接
设置/etc /主机在远程计算机上设置 /etc /主机后,您应该很好地走到192.168.2.242 jolly.dev (当然取决于您的本地子网)。如果您有像我这样的问题,请在Vagrant主机PC上运行此命令(不在Vagrant SSH内部!):
sudo ssh -p 2222 -gNfL 80:localhost:80 vagrant@localhost -i ~/.vagrant.d/insecure_private_key
在某些情况下,这也有助于您在浏览器窗口中打开http:// localhost。
端口转发(可选)
Vagrantfile包含端口转发,但是Mac OS X有一些局限性。如果无法从局部网络达到.dev-urls,请将其添加到Sudo Nano/ /usr/bin/forwardports的sudo nano /usr/bin/forwardports :
echo \"
rdr pass on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080
rdr pass on lo0 inet proto tcp from any to 127.0.0.1 port 443 -> 127.0.0.1 port 8443
\" | sudo pfctl -f - > /dev/null 2>&1;
echo \"==> Fowarding Ports: 80 -> 8080, 443 -> 8443\";
osascript -e \'tell application \"Terminal\" to quit\' & exit;
CHMOD由chmod +x /usr/bin/forwardports和Run forwardports 。如果您要在LAN进行合作,则必须每次重启后执行此操作。
SSL / HTTPS(可选)
如果您需要使用HTTPS-Protocol,则需要自己的证书。
为Jolliest-vagrant创建自签名的SSL证书
- 转到您通过
cd ~/Projects/jolliest-vagrant克隆此回购的目录 - 确保您在流浪目录(
cd ~/Projects/jolliest-vagrant)中,然后进入您的Vagrant Box:vagrant ssh -
sudo a2enmod ssl启用SSL -
openssl genrsa -des3 -out server.key 1024 -
openssl req -new -key server.key -out server.csr -
cp server.key server.key.org -
openssl rsa -in server.key.org -out server.key -
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt -
sudo cp server.key /etc/apache2/ssl.key -
sudo cp server.crt /etc/apache2/ssl.crt
退出SSH并在~/Projects/jolliest-vagrant/vhosts/vhostname.dev.conf中更新您的网站vhost。
<VirtualHost *:443>
ServerAdmin webmaster@example
ServerName example.dev
ServerAlias www.example.dev
DirectoryIndex index.html index.php
DocumentRoot /var/www/example
LogLevel warn
ErrorLog /var/www/example/error.log
CustomLog /var/www/example/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt
SSLCertificateKeyFile /etc/apache2/ssl.key
SetEnvIf User-Agent \".*MSIE.*\" nokeepalive ssl-unclean-shutdown
</VirtualHost>
-
vagrant provision,您应该能够导航到https://e**xampl*e.dev并开始开发。
请注意:您只能同时拥有一个SSL项目,因此,当您切换项目时,将VirtualHost条目移至另一个项目Conf。
安装phpmyadmin(可选)
如果您使用Mac OS XI推荐续集Pro,但在其他情况下,PhpMyAdmin非常方便。基于数字海洋教程。
- 转到您通过
cd ~/Projects/jolliest-vagrant克隆此回购的目录 - 确保您在流浪目录(
cd ~/Projects/jolliest-vagrant)中,然后进入您的Vagrant Box:vagrant ssh - 使用
sudo apt-get install phpmyadmin apache2-utils - 在询问时选择Apache2,在下一个有关DBConfig-Common的问题中选择“是”
- 每次询问密码时键入
vagrant -
sudo pico -w /etc/apache2/apache2.conf,然后添加Include /etc/phpmyadmin/apache.conf到底部 - 使用
sudo service apache2 restart - 现在,您可以在Localhost/phpMyAdmin中访问您的phpMyAdmin(如果没有,请确保已添加了
10.1.2.3 localhost添加到您的/etc/hosts(在您的PC上,而不是在Vagrant SSH上),并且您调用了SSH LAN命令。
额外的
使用FastCGI安装PHP 5.5和Apache 2.4
如果您需要较新的PHP版本,则此框不会从开箱即用,因为您还必须升级Apache 2.4。这必须作为后安装完成(目前)。确保您在Vagrant框中(命令vagrant ssh内部的Vagrant安装文件夹~/Projects/jolliest-vagrant )。
请注意:我警告您,尽管我必须这样做一次,但此设置并不是很简单,但在下面我为您写了一个教程。不过,这可能需要时间,如果您需要新的东西,请考虑另一个流浪汉。稍后,我可能会在更新我们的生产服务器时创建一个较新的框,但现在就是它。
首先upgdare apache 2.2至2.4(基于本教程):
- 备份现有配置(如果有),则使用
sudo cp -R /etc/apache2 ~/apache2.2.backup - 带有
cd /etc/apache2/mods-enabled/ && sudo ls -al > ~/enabled-mods.txt备份现有mods列表 - 停止apache:
sudo service apache2 stop - 删除apache2文件:
sudo rm -r /etc/apache2 - 删除现有apache:
sudo apt-get remove apache2 && sudo apt-get remove apache2* && sudo apt-get purge apache2 apache2-utils apache2.2-bin apache2-common && sudo apt-get autoremove - 添加存储库:
sudo apt-add-repository ppa:ondrej/php5(如果找不到命令,请运行sudo apt-get install python-sofware-properties,然后重试) - 更新:
sudo apt-get update - 安装Apache 2.4:
sudo apt-get install apache2,在Y or I : install the package maintainer\'s version,然后在询问时检查install the package maintainer\'s version - 查看
cat /home/vagrant/enabled-mods.txtVagrant/Enabled-mods.txt的先前模块 -
cd /etc/apache2/mods-enabled和sudo ls -al,比较这两个输出,并查看丢失的模块 - Enable mods one by one with these commands:
sudo cp /home/vagrant/apache2.2.backup/mods-available/dir.load /etc/apache2/mods-available/sudo ln -s /etc/apache2/mods-available/dir.confsudo ln -s /etc/apache2/mods-available/dir.loadsudo cp /home/vagrant/apache2.2.backup/mods-available/alias.load /etc/apache2/mods-available/sudo ln -s /etc/apache2/mods-available/alias.confsudo ln -s /etc/apache2/mods-available/alias.loadsudo cp /home/vagrant/apache2.2.backup/mods-available/authn_file.load /etc/apache2/mods-available/sudo ln -s /etc/apache2/mods-available/authn_file.loadsudo ln -s /etc/apache2/mods-available/authz_groupfile.loadsudo ln -s /etc/apache2/mods-available/authz_user.loadsudo ln -s /etc/apache2/mods-available/autoindex.confsudo cp /home/vagrant/apache2.2.backup/mods-available/autoindex.load /etc/apache2/mods-available/sudo ln -s /etc/apache2/mods-available/autoindex.loadsudo cp /home/vagrant/apache2.2.backup/mods-available/cgid.load /etc/apache2/mods-available/sudo ln -s /etc/apache2/mods-available/cgid.confsudo ln -s /etc/apache2/mods-available/cgid.loadsudo ln -s /etc/apache2/mods-available/deflate.confsudo ln -s /etc/apache2/mods-available/deflate.loadsudo cp /home/vagrant/apache2.2.backup/mods-available/env.load /etc/apache2/mods-available/sudo ln -s /etc/apache2/mods-available/env.loadsudo cp /home/vagrant/apache2.2.backup/mods-available/fastcgi* /etc/apache2/mods-available/sudo ln -s /etc/apache2/mods-available/fastcgi.loadsudo ln -s /etc/apache2/mods-available/fastcgi.confsudo ln -s /etc/apache2/mods-available/fastcgi.loadsudo cp /home/vagrant/apache2.2.backup/mods-available/mime.load /etc/apache2/mods-available/sudo ln -s /etc/apache2/mods-available/mime.confsudo ln -s /etc/apache2/mods-available/mime.loadsudo ln -s /etc/apache2/mods-available/reqtimeout.confsudo ln -s /etc/apache2/mods-available/setenvif.confsudo ln -s /etc/apache2/mods-available/ssl.confsudo ln -s /etc/apache2/mods-available/ssl.loadsudo ln -s /etc/apache2/mods-available/status.confsudo ln -s /etc/apache2/mods-available/socache_shmcb.load - Copy default config in place with
sudo cp /home/vagrant/apache2.2.backup/sites-available/default /etc/apache2/sites-available/000-default.conf - 启用mod_rewrite:
sudo a2enmod rewrite
如果遇到任何问题,请尝试使用sudo dpkg -P apache2和sudo apt-get install apache2或//并尝试再次调试错误。
不要重新启动Apache,请踩踏此步骤。这是在Ubuntu 12.04上安装PHP 5.5的干净方法(基于此):
- 运行
sudo apt-add-repository ppa:ondrej/apache2 - 使用
sudo apt-get update更新存储库 - 安装PHP 5.5:
sudo apt-get install php5-common php5-mysqlnd php5-xmlrpc php5-curl php5-gd php5-cli php5-fpm php-pear php5-dev php5-imap php5-mcrypt - 在
Y or I : install the package maintainer\'s version,然后在询问时检查install the package maintainer\'s version - 检查它是5.5的
php -v - 使用
sudo apt-get install libapache2-mod-fastcgifpm - 启用php5-fpm by
sudo a2enconf php5-fpm && a2enmod actions fastcgi alias - 编辑和添加以下内容:
pico -w /etc/apache2/conf-available/php5-fpm.conf(根据有用的提示,此处:
<IfModule mod_fastcgi.c>
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
# NOTE: using \'/usr/lib/cgi-bin/php5-cgi\' here does not work,
# it doesn\'t exist in the filesystem!
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</Ifmodule>
如果您发现内部服务器错误或带有漂亮链接的404,请将其添加到/etc/apache2/apache2.conf (查找现有的类似行并删除它们):
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
重新启动Apache和FPM使用sudo service apache2 restart && sudo service php5-fpm restart 。退出Vagrant SSH并在Vagrant Directory End中运行vagrant reload && vagrant provision请查看可能的错误。否则一切都应该很好!
故障排除和问题
连接超时
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
default: Error: Connection timeout. Retrying...
...
如果您遇到这个非常奇怪的问题,
-
可能有些东西阻止了您的端口。请尝试将
auto_correct更改为false以查看是否与端口有关。如果是这样,请将访客端口更改为8080或1024上的一些随机数。然后,将端口转发设置从8080 -> 80更改,或从您在访客端口部分指定的任何端口号上更改。 -
您可能已经用SSH配置了。请确保在设置Vagrant之前,请确保使用Bitbucket的“设置SSH”设置SSH。
-
最好的是
vagrant destroy或删除所有流浪者的痕迹,然后从头开始尝试。 -
另外,您可能需要在
Vagrantfile中禁用nfs和mount_options。那帮助我两次。 -
尝试使用
Virtualbox手动启动VM,或添加v.gui = trueInsideconfig.vm.provider \"virtualbox\" do |v|看看是否会产生任何错误。 -
打开一个问题以发出跟踪器,以便我们可以进一步进行测试和讨论。
较早的问题是因为我使用了64位图像。在Mac OS X上,在64位环境中虚拟化似乎存在问题。今天,我的Vagrant Box使用Precise32而不是Precise64,此更改已永久解决了这个问题。如果您仍然遇到SSH问题,请告诉我。
SSH命令以非零退出状态做出响应
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
/sbin/ifdown eth1 2> /dev/null
Stdout from the command:
Stderr from the command:
stdin: is not a tty
这与超时 / SSH问题有关。请在连接超时部分中复制相同的步骤。
损坏的JS/CSS
VirtualBox的错误可能导致文件损坏。添加EnableSendfile off到/etc/apache2/httpd.conf应该解决此问题。
其他问题
在任何问题上,错误或麻烦,请打开问题以发出跟踪器。
MySQL的续集Pro设置
选择SSH选项卡并添加以下设置。
| 环境 | 输入字段 |
|---|---|
| 姓名: | 流浪mysql |
| MySQL主机: | 127.0.0.1 |
| 用户名: | 根 |
| 密码: | 流浪汉 |
| 数据库: | 选修的 |
| 港口: | 3306 |
| SSH主机: | 10.1.2.3 |
| SSH用户: | 流浪汉 |
| SSH密码: | 流浪汉 |
| SSH端口: | 22 |
