编译安装Nginx实现网络访问多虚拟主机(wordpress+phpmyadmin)

简介:

一、安装Nginx

    后面会有一篇博客专门介绍Nginx,在这篇博客中仅仅介绍如何安装Nginx并配置,使其实现多个虚拟主机,分别根据不同的域名访问wordpress和phpMyadmin,对于这两个软件已经使用apache进行过配置,详细的过程可以参考原先的博客。

    安装Nginx有两种方式,一种是使用yum进行安装,在这里要说的是编译安装,首先要到官网或者镜像网站下载Nginx的源代码(下载完成之后导入虚拟机中):http://nginx.org/en/download.html

    我下载的是nginx-1.12.1.tar.gz这个版本的源代码包,如果虚拟机能够连接网络,也可以直接使用命令进行下载:

1
wget http: //nginx .org /download/nginx-1 .12.1. tar .gz

    现在在机器中如果能够查看到这个软件,就可以进行下一步了:

wKiom1nhmXzxMTXlAAARrqNIvMc031.png-wh_50

    使用命令来解压到当前目录:

1
~] # tar -zxf nginx-1.12.1.tar.gz -C ./

    注意:在安装之前要确保编译所需的环境已经配置好,可以使用下面这个命令来进行安装(还有编译所需包,如Development Tools):

1
~] # yum install openssl-devel pcre-devel libevent-devel -y

    然后在当前目录下就可以看到一个“nginx-1.12.1”目录,切换到这个目录中:

1
~] # cd nginx-1.12.1

    在这个目录中可以看到Nginx的所有源代码,下面使用configure来进行编译前的设置,可以使用下面这条命令查看帮助,根据自己的需要选择安装的模块,在这个帮助中以“ --without”开头的是默认安装的,如果写上这个选项则不安装,而以“--with”开头的是默认不安装的,只有写上这个选项才会安装:

1
nginx-1.12.1] # ./configure --help

    在这篇博客中就不详细介绍每一个选项的功能了,下面我们直接使用这条命令进行编译:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
nginx-1.12.1] # ./configure \
--prefix= /usr/local/nginx  \
--sbin-path= /usr/sbin/nginx  \
--conf-path= /etc/nginx/nginx .conf \
--error-log-path= /var/log/nginx/error .log \
--http-log-path= /var/log/nginx/access .log \
--pid-path= /var/run/nginx .pid \
--lock-path= /var/lock/subsys/nginx .lock \
--user=nginx --group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_dav_module \
--with-threads \
--with- file -aio \
--with-http_stub_status_module

    如果在使用了上面这条命令之后出现的画面如图所示,则代表成功,如果报错,则说明openssl-devel pcre-devel libevent-devel等包没有安装,返回上面重新安装这几个包:

wKiom1nhncPjZqsrAACzAbyzx_Q132.png-wh_50

    成功之后就可以进行编译和安装了:

1
  nginx-1.12.1] # make && make install


二、配置Nginx

    到这里,Nginx就算是安装好了,接下来我们要对其进行配置,首先要启动这个程序,需要事先创建nginx用户和nginx组(也可以在配置文件中修改成别的用户和组):

1
nginx-1.12.1] # useradd nginx  #同名组自动创建

    因为在进行编译配置的时候我们就将nginx的二进制文件写到了“/usr/sbin/”下,所以我们可以直接使用命令来启动nginx:

1
nginx-1.12.1] # nginx

    接下来我们使用命令来查看nginx是否启动成功:

nginx-1.12.1]# ss -tlpn

    发现,nginx已经启动了,但是因为我的主机中还存在httpd所以nginx自动将端口切换为了801(可以通过“/etc/nginx/nginx.conf”来修改监听的端口,不过在这里我就不改了),如果你的主机中没有httpd那么他就会监听80端口,下面我将801端口改成80:

wKiom1nhoQGi55-xAAEaRUwr9gs634.png-wh_50

    使用命令停掉httpd(如果没启动就不用管了):

1
~] # service httpd stop

    此时在真实主机上就可以通过浏览器访问“192.168.3.10”(这个IP是刚才虚拟机的IP)

wKiom1nhoYGABpfhAABzZLWfvcA602.png-wh_50

    这样的Nginx的配置就完成了,下面开始配置两个虚拟主机,两个虚拟主机的根目录我分别存放在“/myweb/wordpress”和“/myweb/phpmyadmin”中,现在分别建立这两个目录,并在其中写入两个不同的主页来进行测试:

1
2
3
nginx-1.12.1] # mkdir -pv /myweb/{wordpress,phpmyadmin}
nginx-1.12.1] # echo "This is wordpress" > /myweb/wordpress/index.html
nginx-1.12.1] # echo "This is phpmyadmin" > /myweb/phpmyadmin/index.html

    下面要进行两个虚拟主机的配置,首先编辑文件“/etc/nginx/nginx.conf”添加内容,使其包含片段配置文件,这是为了将接下来的配置和主配置分开,避免配置错误:

1
nginx-1.12.1] # vim /etc/nginx/nginx.conf

    在“http”的大括号中添加下面这条:

1
include  /etc/nginx/conf/ *.conf"

    接下来我们在“/etc/nginx/conf/”下创建一个以“.conf”结尾的片段配置文件并写入内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
   listen 80;
   server_name myweb.wordpress.com;
   location / {
     root  /myweb/wordpress ;
     index index.html;
   }
}
server {
   listen 80;
   server_name myweb.phpmyadmin.com;
   location / {
     root  /myweb/phpmyadmin ;
     index index.html;
   }
}

    保存并退出之后,使用“nginx -t”命令检查配置文件是否有错误,如果没有错误,就使用“nginx -s reload”命令重新载入配置:

wKioL1nhpVPzEicVAAAyHQMFoso944.png-wh_50

    再次使用“ss -tnlp”命令查看,发现现在是Nginx在使用80端口(801端口依然在使用,那是主配置文件里的东西,暂时不去管它):

wKiom1nhuaHgjD97AAD5bkKNzuM959.png-wh_50

    然后回到真实主机上,在“C:\\Windows\System32\drivers\etc\hosts”内配置下面两条解析(如果不可以保存请更改权限,具体操作查看http://11142243.blog.51cto.com/11132243/1966271):

1
2
192.168.3.10 myweb.wordpress.com
192.168.3.10 myweb.phpmyadmin.com

    保存之后通过浏览器访问这两个网址就可以发现配置成功了:

wKiom1nhujrhMvdxAAA2JuGpTDw860.png-wh_50

wKiom1nhujyCorVPAAA5Uv3ooQ8585.png-wh_50

    接下来删掉这两个测试目录:

1
~] # rm -frv /myweb/*

三、安装并配置wordpress和phpmyadmin

    这两个软件都需要使用MySQL[MariaDB]和PHP,所以我们要安装这两个软件,具体的安装过程参考:

http://11142243.blog.51cto.com/11132243/1966271

    首先将程序包上传到服务器中:

wKiom1nhu4fiMVuOAAAaZ19Cwhw831.png-wh_50

    然后分别解压到各自对应的目录中:

~]# tar -zxf /software/phpMyAdmin-3.5.4-all-languages.tar.gz -C /myweb/

~]# tar -zxf /software/wordpress-4.8.1-zh_CN.tar.gz -C /myweb/

    改个名字或者建立链接:

1
~] # mv /myweb/{phpMyAdmin-3.5.4-all-languages,phpmyadmin}

wKiom1nhvWqilMjgAABJe2-5Dwk830.png-wh_50

    使用命令安装所需软件:

1
~] # yum install php php-fpm mysql mysql-server

    然后进行wordpress的配置,参考:http://11142243.blog.51cto.com/11132243/1964468

    配置完成之后,我们还需要回到刚才配置虚拟主机那里把刚才的配置增加几条选项,变成下面的样子(因为Nginx默认将PHP注释掉了,需要我们自己开启):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
server {
   listen 80;
   server_name myweb.wordpress.com;  
   location / {
     root  /myweb/wordpress ;
     index index.html index.php;
   }     
   location ~ \.php$ {
     root  /myweb/wordpress ;
   include        fastcgi_params;
   fastcgi_pass   127.0.0.1:9000;
   fastcgi_index  index.php;
   fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
   }     
}
server {
   listen 80;
   server_name myweb.phpmyadmin.com; 
   location / {
     root  /myweb/phpmyadmin ;
     index index.html index.php;
   }     
   location ~ \.php$ {
     root  /myweb/phpmyadmin ;
   include        fastcgi_params;
   fastcgi_pass   127.0.0.1:9000;
   fastcgi_index  index.php;
   fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
   }     
}

    保存退出之后重新加载配置,即可看到两个虚拟主机配置成功:

wKiom1nhxjDhbwL4AAC3JMieakM080.png-wh_50


wKiom1nhxjHQD4LRAACdLagj_Zc360.png-wh_50wKioL1nhw3vQjsFEAAGCyz4rb0o095.png-wh_50




    可能会遇到的错误:

        配置phpmyadmin可能会出现下面的错误:

Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.

需要将/var/lib/php/session的所有者改为nginx

1
chown  -R nginx:nginx  /var/lib/php/session














本文转自正经的青年51CTO博客,原文链接:http://blog.51cto.com/11142243/1972367  ,如需转载请自行联系原作者



相关文章
|
2月前
|
安全 网络安全 数据安全/隐私保护
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限。它通过设置一系列规则,控制谁可以访问特定资源、在什么条件下访问以及可以执行哪些操作。ACL 可以应用于路由器、防火墙等设备,分为标准、扩展、基于时间和基于用户等多种类型,广泛用于企业网络和互联网中,以增强安全性和精细管理。
321 7
|
5月前
|
消息中间件 存储 Serverless
函数计算产品使用问题之怎么访问网络附加存储(NAS)存储模型文件
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
21天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
45 2
|
2月前
|
网络协议 安全 文件存储
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问,即使IP地址变化,也能通过DDNS服务保持连接。适用于家庭网络远程访问设备及企业临时或移动设备管理,提供便捷性和灵活性。示例代码展示了如何使用Python实现基本的DDNS更新。尽管存在服务可靠性和安全性挑战,DDNS仍极大提升了网络资源的利用效率。
95 6
|
2月前
|
安全 网络安全 数据安全/隐私保护
访问控制列表(ACL)是网络安全管理的重要工具,用于定义和管理网络资源的访问权限。
访问控制列表(ACL)是网络安全管理的重要工具,用于定义和管理网络资源的访问权限。ACL 可应用于路由器、防火墙等设备,通过设定规则控制访问。其类型包括标准、扩展、基于时间和基于用户的ACL,广泛用于企业网络和互联网安全中,以增强安全性、实现精细管理和灵活调整。然而,ACL 也存在管理复杂和可能影响性能的局限性。未来,ACL 将趋向智能化和自动化,与其他安全技术结合,提供更全面的安全保障。
140 4
|
2月前
|
应用服务中间件 网络安全 nginx
轻松上手Nginx Proxy Manager:安装、配置与实战
Nginx Proxy Manager (NPM) 是一款基于 Nginx 的反向代理管理工具,提供直观的 Web 界面,方便用户配置和管理反向代理、SSL 证书等。本文档介绍了 NPM 的安装步骤,包括 Docker 和 Docker Compose 的安装、Docker Compose 文件的创建与配置、启动服务、访问 Web 管理界面、基本使用方法以及如何申请和配置 SSL 证书,帮助用户快速上手 NPM。
458 1
|
3月前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
203 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
3月前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
3月前
|
tengine 应用服务中间件 Linux
Tengine、Nginx安装PHP命令教程
要在阿里云Linux上安装PHP,请先更新YUM源并启用PHP 8.0仓库,然后安装PHP及相关扩展。通过`php -v`命令验证安装成功后,需修改Nginx配置文件以支持PHP,并重启服务。最后,创建`phpinfo.php`文件测试安装是否成功。对于CentOS系统,还需安装EPEL源和Remi仓库,其余步骤类似。完成上述操作后,可通过浏览器访问`http://IP地址/phpinfo.php`测试安装结果。
|
3月前
|
应用服务中间件 Linux nginx
Mac os 安装 nginx 教程(success)
这篇文章是关于如何在Mac OS系统上使用Homebrew安装nginx及其依赖,并解决安装过程中可能出现的权限问题。
292 0
Mac os 安装 nginx 教程(success)