在Win10搭建Linux+Nginx编译安装

在Win10搭建Linux+Nginx源码编译安装

  • A.准备工具
  • B.安装Oracle VM VirtualBox和Vagrant
  • C.安装Centos8
  • D.安装nginx
    • 一.更新yum源接着更新gcc
    • 二.PCRE pcre-devel 安装
    • 三.zlib 安装
    • 四. OpenSSL 安装
    • 五. nginx下载解压编译安装
    • 六.检查nginx
  • 总结

A.准备工具

在这我用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

B.安装Oracle VM VirtualBox和Vagrant

下载完之后自行安装(建议先安装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链接插件
(安装根据网络速度快慢)

C.安装Centos8

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

在Win10搭建Linux+Nginx编译安装_第1张图片
出现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.此时就可以用远程登录了

D.安装nginx

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

一.更新yum源接着更新gcc

安装依赖库之前重启一下虚拟机:
依赖库的集合命令

[root@10 ~]# yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel

二.PCRE pcre-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 安装

zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

[root@10 ~]# yum install -y zlib zlib-devel

四. OpenSSL 安装

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。

[root@10 ~]# yum install -y openssl openssl-devel

五. nginx下载解压编译安装

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

六.检查nginx

/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

用浏览器访问
在这里插入图片描述

在Win10搭建Linux+Nginx编译安装_第2张图片

剩下自己尽情发挥~~~~

总结

还有做最后随便讨论一下遇到各种问题:
1.在虚拟机跟win10共享的目录不能用编译的目录包括所有软件编译.否则会出现:
./configure error : C compiler gcc is not found等等错误.猜测共享目录无法找到gcc编译器路径
2.用centos7时我测试过更新yum之后就编译成功。
3.vagrant默认安装gcc环境的,但是不会安装PCRE pcre-devel和OpenSSL库的,需要自己手动安装
4.我尝试过有一些centos8的box是不能使用共享目录,原因目前还没去研究。我在这是用的是
在Win10搭建Linux+Nginx编译安装_第3张图片
在这里插入图片描述
在Win10搭建Linux+Nginx编译安装_第4张图片
5.大概我遇到的问题就这么多,后期遇到问题再补上,还有nginx优化和测试工具安装以后的章节

你可能感兴趣的:(源码编译,nginx源码编译,centos8安装,nginx,linux,centos)