一、安装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
|
使用命令来解压到当前目录:
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等包没有安装,返回上面重新安装这几个包:
成功之后就可以进行编译和安装了:
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:
使用命令停掉httpd(如果没启动就不用管了):
1
|
~] # service httpd stop
|
此时在真实主机上就可以通过浏览器访问“192.168.3.10”(这个IP是刚才虚拟机的IP)
这样的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”命令重新载入配置:
再次使用“ss -tnlp”命令查看,发现现在是Nginx在使用80端口(801端口依然在使用,那是主配置文件里的东西,暂时不去管它):
然后回到真实主机上,在“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 |
保存之后通过浏览器访问这两个网址就可以发现配置成功了:
接下来删掉这两个测试目录:
1
|
~] # rm -frv /myweb/*
|
三、安装并配置wordpress和phpmyadmin
这两个软件都需要使用MySQL[MariaDB]和PHP,所以我们要安装这两个软件,具体的安装过程参考:
http://11142243.blog.51cto.com/11132243/1966271
首先将程序包上传到服务器中:
然后分别解压到各自对应的目录中:
~]# 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}
|
使用命令安装所需软件:
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;
}
} |
保存退出之后重新加载配置,即可看到两个虚拟主机配置成功:
可能会遇到的错误:
配置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
|