首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Centos 6灯栈的Vagrantfile

Centos 6灯栈的Vagrantfile
EN

Stack Overflow用户
提问于 2018-09-04 16:06:02
回答 1查看 312关注 0票数 3

我需要帮助整理一个Vagrantfile文件。

我试图在Windows桌面上设置一个虚拟机,用于处理现有的PHP/MySQL应用程序。我被指示使用Vagrant和VirtualBox。我已经翻阅了Vagrant的文档,发现这件事超出了我的想象,有很多过时的信息。我对Linux的一般使用有一定的了解,但在安装LAMP服务器方面没有任何背景。

我所拥有的:

  • 流浪者2.1.2
  • VirtualBox 5.2.18

我在VM中需要的东西:

  • Centos 6
  • 阿帕奇
  • MySQL 5.5
  • PHP 5.6
  • MySQLi/Mysqlnd (PDO可选)
  • 卷曲
  • DOM/SimpleXML
  • 典型PHP应用程序所需的任何PHP扩展
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-05 20:59:09

它已经花了几个星期和很多涉水通过过时的教程,但我完成了。我分享,所以在灯服务堆栈上的其他人有一个地方开始制作他们的迷航文件。请注意,这是而不是为优雅而做的。这是一个很容易理解和调整一个人的需要的快速启动。

与上述原稿相比,出现了一些小偏差:

  • 我使用的是Ubuntu/bionic64,而不是Centos 6,主要是因为我找到了大量的教程材料。为CentOS 6修改这个文件应该不会太困难。CentOS使用Yum代替Apt进行包管理。我不完全确定还有什么不同。
  • 我使用的是PHP7.2而不是5.6。
  • 我发现PHP7.2附带了MySQLi,本机驱动程序已经安装完毕。

工作的迷走神经文件和shell引导程序包括,为理解大量评论:https://pastebin.com/Eqvhq8KZ

代码语言:javascript
复制
# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = '2'

#########################################################################
# VM Setup for LAMP stack application
#
# - Install PHP and packages
# - Install Apache
# - Configure /vagrant as document root
# - Config PHP for development and logging
# - Install MySQL
# - Setup database and permissions (username and password are "vagrant")
# - Install Composer
#########################################################################

@script = <<SCRIPT

#################### PHP ####################
apt-get install -y apt-utils php7.2 php7.2-bcmath php7.2-bz2 php7.2-cli php7.2-curl php7.2-intl php7.2-json php7.2-mbstring php7.2-opcache php7.2-soap php7.2-sqlite3 php7.2-xml php7.2-xsl php7.2-zip unzip

#################### APACHE2 ####################
apt-get install -y apache2 libapache2-mod-php7.2

# Remove /var/www default
rm -rf /var/www

# Symlink /vagrant to /var/www
ln -fs /vagrant /var/www

# Add ServerName to httpd.conf
echo "ServerName localhost" > /etc/apache2/httpd.conf

# Setup hosts file
VHOST=$(cat <<EOF
<VirtualHost *:80>
    DocumentRoot "/vagrant"
    ServerName localhost
    <Directory "/vagrant">
        Options Indexes FollowSymLinks MultiViews Includes
        AllowOverride All
        Require all granted
        Order allow,deny
        Allow from all
        AddType text/html .shtm .shtml
        AddOutputFilter INCLUDES .htm .html .shtm .shtml
    </Directory>
</VirtualHost>
EOF
)
echo "${VHOST}" > /etc/apache2/sites-enabled/000-default.conf

# Enable mod_rewrite
a2enmod rewrite

# Put PHP into development configuration
mv /etc/php/7.2/apache2/php.ini /etc/php/7.2/apache2/php.ini.back
cp /usr/lib/php/7.2/php.ini-development /etc/php/7.2/apache2/php.ini

# Enable PHP extensions in php.ini
#sed -i 's/;extension=mysqli/extension=mysqli/' /etc/php/7.2/apache2/php.ini

# PHP will log its errors in a /log/error_log file
sed -i 's:;error_log = php_errors.log:error_log = /vagrant/log/error_log:' /etc/php/7.2/apache2/php.ini

# Restart apache
systemctl restart apache2.service

#################### MYSQL ####################
apt-get install -y mysql-server mysql-client-core-5.7 php7.2-mysql

systemctl start mysql.service

# Reset root password
#/usr/bin/mysqladmin -u root password 'root'
mysqladmin -u root password 'root'

# Setup database from root user and setup the application user
mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS app"
mysql -uroot -proot app < /vagrant/db/schema.sql
mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON *.* to 'vagrant'@'localhost' IDENTIFIED BY 'vagrant'"
mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON *.* to 'vagrant'@'%' IDENTIFIED BY 'vagrant'"
mysql -uroot -proot -e "FLUSH PRIVILEGES"

# Allow remote connections for MySQL Workbench
MYSQLCONF=$(cat <<EOF

[mysqld]
bind-address        = 0.0.0.0
EOF
)
echo "${MYSQLCONF}" >> /etc/mysql/my.cnf

# Restart mysql
/etc/init.d/mysql restart

#################### COMPOSER ####################
curl -sS http://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

# Run composer install
cd /vagrant && composer install

#################### FINISHED! ####################
echo "** [PHP] Visit http://localhost:8080 in your browser for to view the application **"
SCRIPT


Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    config.vm.box = 'ubuntu/bionic64'

    config.ssh.insert_key = false

    config.vm.network "forwarded_port", guest: 80, host: 8080
    config.vm.network "forwarded_port", guest: 443, host: 8081
    config.vm.network "forwarded_port", guest: 3306, host: 3307

    #config.vm.synced_folder '.', '/var/www/html'

    # Provision runs only on the first "Vangrant up" command
    config.vm.provision 'shell', privileged: true, inline: @script

    config.vm.provider "virtualbox" do |vb|
        vb.customize ["modifyvm", :id, "--memory", "2048"]
        vb.customize ['modifyvm', :id, "--natdnshostresolver1", "on"]
    end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52170246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档