在这我用Vagrant+Oracle VM VirtualBox+Centos8来进行搭建Linux
准备软件(Vagrant和VirtualBox版本随意):
1.Vagrant - 用于创建和部署虚拟化开发环境的工具
链接: https://www.vagrantup.com
2.Oracle VM VirtualBox - 是一款简单易用还免费的开源虚拟机
链接: https://www.virtualbox.org
3.Centos8 - Linux系统(国外box镜像下载有点慢,在这我用的是国内镜像CentOS-8的box,根据自己喜欢的box下载)
链接: http://www.vagrantbox.es/国外box镜像地址
链接: http://mirrors.ustc.edu.cn/ 国内box镜像地址
我下载的是:http://mirrors.ustc.edu.cn/centos-cloud/centos/8/x86_64/images/CentOS-8-Vagrant-8.3.2011-20201204.2.x86_64.vagrant-virtualbox.box
下载完之后自行安装(建议先安装Oracle VM VirtualBox后安装Vagrant)
安装完成后打开cmd命令控制台,安装Vagrant插件
安装vagrant插件:
vagrant version :查看版本
vagrant plugin list :查看安装插件列表
vagrant plugin install vagrant-vbguest :共享目录插件(很重要)
vagrant plugin install vagrant-scp :ssh链接插件
vagrant plugin install vagrant-share :ssh链接插件
(安装根据网络速度快慢)
1.在自己硬盘创建目录:(在这我的是在D:\linux_study\01)
在D:\linux_study\01下创建两个目录
D:\linux_study\01\data 用来共享目录
D:\linux_study\01\work 用来存储box配置
2.把自己下载box放在D:\linux_study\01\work下
(我的是CentOS-8-Vagrant-8.3.2011-20201204.2.x86_64.vagrant-virtualbox.box改名为CentOS-8.box)
3.打开cmd命令控制台进入D:\linux_study\01\work目录:
C:\Users\Administrator>cd D:\linux_study\01\work
C:\Users\Administrator>d:
D:\linux_study\01\work>
这样就进来work目录
4.添加box
D:\linux_study\01\work>vagrant box add centos8 CentOS-8.box
5.初始化
D:\linux_study\01\work>vagrant init centos8
此时在work目录下有个配置文件Vagrantfile
打开Vagrantfile文件修改两个地方,把前面的注释#去掉启用两个选项
config.vm.network "private_network", ip: "192.168.33.12"
第一个:config.vm.network “private_network”, ip: “192.168.33.12” 虚拟机的ip,根据自己喜欢设置
config.vm.synced_folder "../data", "/vagrant_data"
第二个:config.vm.synced_folder “…/data”, “/vagrant_data” 虚拟机和win10共享的目录,…/data就是自己创建的D:\linux_study\01\data,可以指向其他地方,/vagrant_data是虚拟机的目录
6.启动虚拟机
D:\linux_study\01\work>vagrant up
出现default: /vagrant_data => D:/linux_study/01/data表示共享目录是没问题的
7.配置远程登录
默认两个账户:
账号:root 密码:vagrant
账号:vagrant 密码vagrant
在cmd命令控制台用vagrant远程登录
D:\linux_study\01\work>vagrant ssh
默认会vagrant账户登录CentOS8
此时就可以用cmd命令控制台控制Centos8系统了
不喜欢用vagrant的ssh远程控制的话可以配置
配置如下输入vagrant密码用root用户设置
[vagrant@10 ~]$ su root
8.修改sshd配置开启远程登录
[root@10 ~]# vi /etc/ssh/sshd_config
9.安装net工具方便查看ip ifconfig命令查看网卡信息
[root@10 ~]# yum -y install net-tools
10.把#Port 22前面的#去掉开启22端口
把PasswordAuthentication on改成PasswordAuthentication yes开启可以用root远程登录
改完之后重启一下ssh并且开机自动开启
[root@10 ~]# service sshd restart
[root@10 ~]# chkconfig sshd on
11.永久关闭防火墙
[root@10 ~]# vi /etc/selinux/config
改: SELINUX=enforcing
为: SELINUX=disabled
12.退出ssh连接:
Ctrl+D //组合键(从root退出需要按两次Ctrl+D)
重启虚拟机
D:\linux_study\01\work>vagrant reload
13.此时就可以用远程登录了
1.先安装wget网络下载工具
[root@10 ~]# yum install wget -y
2.在这我使用阿里的yum源,根据自己喜欢用yum
链接: 阿里云yum镜像
[root@10 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
[root@10 ~]# yum makecache
[root@10 ~]# yum upgrade -y
安装依赖库之前重启一下虚拟机:
依赖库的集合命令
[root@10 ~]# yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。没安装的会报这个错误./configure: error: the HTTP rewrite module requires the PCRE library.
[root@10 ~]# yum install -y pcre pcre-devel
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
[root@10 ~]# yum install -y zlib zlib-devel
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
[root@10 ~]# yum install -y openssl openssl-devel
1.直接下载.tar.gz安装包,下载到D:\linux_study\01\data共享目录下
链接: https://nginx.org/en/download.html
2.也可以用wget下载
nginx-1.18.0.tar.gz不能在vagrant_data共享目录下进行编译(否则会报错)
在这我为了方便下载的稳定版nginx-1.18.0包直接在~目录下解压和编译(目录自己喜欢选择)
[root@10 ~]# wget -c https://nginx.org/download/nginx-1.18.0.tar.gz
3.解压下载的安装包,进去nginx-1.18.0目录
[root@10 ~]# tar -zxvf nginx-1.18.0.tar.gz
[root@10 ~]# cd nginx-1.18.0/
4.创建安装目录 /usr/local/nginx
[root@10 nginx-1.18.0]# mkdir /usr/local/nginx
5.执行命令编译,执行安装目录/usr/local/nginx,这里简单的默认编译安装
[root@10 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx
注意:如果要使用nginx https ,则使用以下配置
[root@10 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
6.执行命令安装
[root@10 nginx-1.18.0]# make & make install
7.启动nginx,并指定对应的配置文件, 使用-c指定配置文件
[root@10 nginx-1.18.0]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
8.针对需要修改对应的配置文件,然后重新刷新下配置即可
配置文件目录:/usr/local/nginx/conf/nginx.conf
刷新配置命令:/usr/local/nginx/sbin/nginx -s reload
9.配置开机自启动
新建shell脚本,内容如下,文件保存路径 /etc/init.d/nginx(以下代码我暂时看不懂,参考别人的代码)
#!/bin/sh
#
# chkconfig: 2345 10 20
#nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
killall -9 nginx
}
restart() {
configtest || return $?
stop
sleep 1
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
10.需要注意的配置:
nginx="/usr/local/nginx/sbin/nginx" #nginx执行程序的路径。
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" #nginx.conf配置文件的路径。
11.保存后设置文件的执行权限
chmod a+x /etc/init.d/nginx
12.通过下面指令控制启动停止
/etc/init.d/nginx start
/etc/init.d/nginx stop 【无法停止,请使用手动kill】
13.上面的方法完成了用脚本管理nginx服务的功能,但是还是不太方便。
先将nginx服务加入chkconfig管理列表:
chkconfig --add /etc/init.d/nginx
14.加完这个之后,就可以使用service对nginx进行启动,重启等操作了。
service nginx start
service nginx stop 【无法停止,请使用手动kill】
service nginx restart
15.最后设置开机自动启动
chkconfig nginx on
/usr/local/nginx/sbin/nginx 启动
/usr/local/nginx/sbin/nginx -s stop 关闭
/usr/local/nginx/sbin/nginx -s quit 退出
/usr/local/nginx/sbin/nginx -s reload 重启
查看端口是否有ngnix进程监听
[root@10 nginx-1.18.0]# netstat -ntlp | grep 80
查看nginx进程
[root@10 nginx-1.18.0]# ps aux|grep nginx
剩下自己尽情发挥~~~~
还有做最后随便讨论一下遇到各种问题:
1.在虚拟机跟win10共享的目录不能用编译的目录包括所有软件编译.否则会出现:
./configure error : C compiler gcc is not found等等错误.猜测共享目录无法找到gcc编译器路径
2.用centos7时我测试过更新yum之后就编译成功。
3.vagrant默认安装gcc环境的,但是不会安装PCRE pcre-devel和OpenSSL库的,需要自己手动安装
4.我尝试过有一些centos8的box是不能使用共享目录,原因目前还没去研究。我在这是用的是
5.大概我遇到的问题就这么多,后期遇到问题再补上,还有nginx优化和测试工具安装以后的章节