LNMP环境搭建学习 --- vagrant

 yum update -y 升级所有的包 不升级软件和系统内核

 


vagrant  add yourboxname.box  

==================================================================

vagrant  ( http://www.vagrantbox.es/  打好的包地址)

三种方式总结:
【1】原始windows开发模式:windows开发-本地访问调试(与生产环境毕竟不同)-发布到linux运行
【2】vagrant + virtualBox模式: windows开发 - 文件本地共享 -- 直接访问虚拟机(linux环境与生产一致)
【3】IDE+develop 模式: windows开发 - 文件远程上传 -- 访问远程开发机(linux环境与生产一致)
 
其实【1】,与【2,3】的区别就在于,程序是在哪里运行的,windows本地?or Linux仿生产环境
(能在仿生产的环境直接开发肯定比在windows开发在放到linux更好些,开发方便避免一些环境上等的麻烦)
 
【2】与【3】的区别就在于文件是如何同步的:【2】是通过虚拟机文件共享实现同步;【3】直接利用sftp远程上传实现同步。
 
缺点:
【1】毫无疑问,它的弊端就是开发时不能模拟生产环境,可能会有衔接问题,环境有了问题不像虚拟机重安一台立刻搞定。
【3】存在的问题,比如:当切换开发分支后改动了文件a和b,当前ide选中的是a文件,ok他会自动上传更新,但是b文件不会,因为窗口你没在b文件下呀,没有那么智能不会自动触发上传更新,这点就坑了造成代码不同步,需要你自己手动触发一下相关文件的上传,尤其是依赖一些包的时候会发生丢失,得全项目上传一次;
【2】因为是本地和虚拟机的文件共享嘛,没有文件上传遗漏一说,推荐使用。
 
一。安装虚拟机  Oracle VM VirtualBox(注意这是安装已经有环境的box包)
1.添加box
vagrant box add base your_box_addres
注意:base是默认名称,主要用来标识一下你添加的box,后面的命令都是基于这个标识来操作的,你也可以用其他名称【但是用了其他名字记得在第二步用此名字init】
 
2.初始化
vagrant init
vagrant init box_name
如果你添加的box名称不是[base],那么需要在初始化的时候指定名称
 
3.启动虚拟机
vagrant up
 $ vagrant box add {title} {url}
 $ vagrant init {title}
 $ vagrant up
  1. vagrant up (启动虚拟机)  
  2. vagrant halt (关闭虚拟机——对应就是关机)  
  3. vagrant suspend (暂停虚拟机——只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,可以执行恢复操作后继续使用)  
  4. vagrant resume (恢复虚拟机—— 与前面的暂停相对应)  
  5. vagrant destroy (删除虚拟机,删除后在当前虚拟机所做进行的除开Vagrantfile中的配置都不会保留)  
  6. vagrant status    查看虚拟机状态
  7. vagrant package  打包分发
  8. vagrant -v 查看版本信息
  9. vagrant ssh  连接虚拟机  (window机器不支持这样的命令,必须使用第三方客户端来进行连接,例如xmoba、putty、Xshell等.)
vagrant package --base vcode_default_1517562334868_37421 --output 0329.box//打包当前版本系统为 box,方便给其他童鞋使用(vcode_default_1517562334868_37421 换成你自己的package)
 
在我们的开发目录下有一个文件Vagrantfile,里面包含有大量的配置信息,主要包括三个方面的配置,虚拟机的配置、SSH配置、Vagrant的一些基础配置。(它的配置语法也是Ruby的)【修改配置文件,记得完后重启vagrant才能生效哦】

df -h
/vagrant这个目录是自动映射的,被映射到你刚刚建立的文件夹,这样就方便我们以后在开发机中进行开发,在虚拟机中进行运行效果测试了。
 
注意事项:
问题1.vagrant up 时提示错误 could not open file 问题
如果init指定了 add的名称test,那么init时也要说明,少了这一步。
 
问题2.vagrant up 时提示错误:
  1. Unable to load R3 module D:\virtualBox/VBoxDD.DLL (VBoxDD): GetLastError=1790 (VERR_UNRESOLVED_ERROR).  
原因:
本目录中的以下三个文件是原始的未被破解的WIN7 64位系统主题文件:
themeservice.dll , themeui.dll ,uxtheme.dll
 
为了使用工具UniversalThemePatcher-x64.exe恢复主题,特地将以上3个文件,
各拷贝了一份,并重新命名如下:
themeservice.dll.backup ,themeui.dll.backup ,uxtheme.dll.backup
 
解决方法:
我们只须把重命名后的3个文件:
themeservice.dll.backup ,themeui.dll.backup ,uxtheme.dll.backup
拷贝到C:\Windows\System32目录下面,
然后运行工具UniversalThemePatcher-x64.exe进行恢复即可。
下载地址:http://download.csdn.net/download/ty_hf/10013443【里边有使用说明】
问题3.虚拟机一切正常,文件代码也映射到虚拟机,但就是不能正常访问。
a).配置文件需要删除

  sudo rm -f /etc/udev/rules.d/70-persistent-net.rules  

问题就处在在持久网络设备udev规则(persistent network device udev rules)是被原VM设置好的,再用box生成新VM时,这些rules需要被更新。而这和Vagrantfile里对新VM设置private network的指令发生冲突。删除就好了。
 
b).如果设置了host,虚拟机里也要设置一次

  vi /etc/hosts  

问题3.问题 default: Warning: Authentication failure. Retrying...
解决:
编辑Vagrantfile ,添加如下文件
  1. config.ssh.username = "vagrant"   
  2. config.ssh.password = "vagrant"  
  1. 网络设置

    Vagrant有两种方式来进行网络连接,一种是host-only(主机模式),意思是主机和虚拟机之间的网络互访,而不是虚拟机访问internet的技术,也就是只有你一個人自High,其他人访问不到你的虚拟机。另一种是Bridge(桥接模式),该模式下的VM就像是局域网中的一台独立的主机,也就是说需要VM到你的路由器要IP,这样的话局域网里面其他机器就可以访问它了,一般我们设置虚拟机都是自high为主,所以我们的设置一般如下:

    config.vm.network :private_network, ip: "11.11.11.11"

    这里我们虚拟机设置为hostonly,并且指定了一个IP,IP的话建议最好不要用192.168..这个网段,因为很有可能和你局域网里面的其它机器IP冲突,所以最好使用类似11.11..这样的IP地址。

  2. hostname设置

    hostname的设置非常简单,Vagrantfile中加入下面这行就可以了:

    config.vm.hostname = "go-app"

    设置hostname非常重要,因为当我们有很多台虚拟服务器的时候,都是依靠hostname來做识别的,例如Puppet或是Chef,都是通过hostname來做识别的,既然设置那么简单,所以我们就別偷懒,设置一个。

  3. 同步目录

    我们上面介绍过/vagrant目录默认就是当前的开发目录,这是在虚拟机开启的时候默认挂载同步的。我们还可以通过配置来设置额外的同步目录:

    config.vm.synced_folder  "/Users/astaxie/data", "/vagrant_data"

    上面这个设定,第一个参数是主机的目录,第二个参数是虚拟机挂载的目录

  4. 端口转发

    config.vm.network :forwarded_port, guest: 80, host: 8080

    上面这句配置可厉害了,这一行的意思是把对host机器上8080端口的访问请求forward到虚拟机的80端口的服务上,例如你在你的虚拟机上使用nginx跑了一个Go应用,那么你在host机器上的浏览器中打开http://localhost:8080时,Vagrant就会把这个请求转发到VM里面跑在80端口的nginx服务上,因此我们可以通过这个设置来帮助我们去设定host和VM之间,或是VM和VM之间的信息交互。

修改完Vagrantfile的配置后,记得要用vagrant reload命令来重启VM之后才能使用VM更新后的配置。

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

现在开始学习安装LNMP

 

首先安装nginx的依赖

yum -y install gcc gcc-c++ openssl openssl-devel cyrus-sasl-md5

解释:gcc,gcc-c++编译环境     openssl 加密

由于Nginx中的功能是模块化,而模块又需要依赖一些软件包(如pcre库,zlib库,openssl库)

openssl-devel库依赖于zlib-devel,在通过yum进行安装时会自动解决依赖,因此这里省略zlib-devel。

mkdir software 放压缩包文件

wget http://nginx.org/download/nginx-1.14.0.tar.gz   下载压缩包

wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz     pcre 正则

tar -zxvf nginx-1.14.0.tar.gz

cd nginx-1.14.0

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-pcre=../pcre-8.42

安装完成。。。

make  && make install  编译安装

/usr/local/nginx/sbin/nginx 启动

ps -ef | grep nginx 是否启动 

----------------------------------------------------------------------------------------------

Nginx目录介绍:

src:存放Nginx的源代码;

man:存放Nginx的帮助文档;

html:存放默认网站文件;

contrib:存放其他机构或组织贡献的文档资料;

conf:存放Nginx服务器的配置文件;

auto:存放大量的脚本文件,和configure脚本程序相关;

configure:Nginx自动安装脚本,用于检查环境,生成编译代码需要的makefile文件;

其他目录都是Nginx服务器的相关文档资料;

 ---------------------------------------------------------------------------------------------------------------------------------------------

vi /etc/rc.local  开机自启动 这个文件是系统启动后会自动执行的

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf &

init 6重启系统

chmod o+x /etc/rc.local  修改权限

vi /etc/profile   nginx的位置加入到环境变量中

export PATH="$PATH:/usr/local/nginx/sbin:"

再次重启nginx

 

下面编译安装PHP-FPM

yum -y install gcc gcc-c++ libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel

wget  http://cn2.php.net/get/php-7.2.6.tar.gz/from/this/mirror

wget  https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-i686.tar.gz

tar zxf php-7.2.6.tar.gz

cd php-7.2.6/

./configure --prefix=/usr/local/php-fpm --enable-fpm --with-zlib --with-pdo-mysql --enable-mbstring --with-gd --with-png-dir=/usr/lib64 --with-jpeg-dir=/usr/lib64 --with-freetype-dir=/usr/lib64

make && make install

  

 

先对它进行一些配置,到php-fpm的安装目录etc下复制一份配置文件,修改配置文件 php-fpm.conf

 

 

 

设置对应的用户和组

user = ling

group = ling

useradd = ling

/usr/local/php-fpm/sbin/php-fpm

ps -e | grep php

我们可以通过快捷命令管理php-fpm 
关闭php-fpm 

 

编译MySQL

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data

代表没有安装cmake

yum -y install cmake

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data

 

make && make install

进入到我们的安装目录

cd /usr/local/mysql/

创建mysql用户和mysql用户组 并且让mysql用户属于mysql用户组

groupadd mysql    #创建mysql组
useradd -r -g mysql mysql    #增加mysql用户并让它属于mysql用户组

将所有的目录都改成mysql用户和mysql组 (安装好后默认都是root)

删除默认的配置文件

 rm -f /etc/my.cnf

安装MySQL系统表

./scripts/mysql_install_db --user=mysql


所有目录都改成root 和root组 只有data目录不是不是

chown -R root:root .
chown -R mysql:mysql data

修改配置文件

cp support-files/my-default.cnf /etc/my.cnf

以完整路径的方式启动MySQL

/usr/local/mysql/bin/mysqld_safe --user=mysql &

将MySQL程序复制到启动目录

cp support-files/mysql.server /etc/init.d/mysqld

增加配置即可

chkconfig --add mysqld

vim /etc/profile

 修改对应位置 将MySQL对应的bin目录增加进去

export PATH="$PATH:/usr/local/apache/bin:/usr/local/mysql/bin"

source /etc/profile
 ==================================================================================================================================================================================


posted @ 2018-06-08 00:27  玲汐  阅读(388)  评论(0编辑  收藏  举报