配置虚拟机A、虚拟机B使用NAT模式联网
将虚拟机A、B网络模式选择为NAT(两台主机都设置)
虚拟机A自动获取入网参数(网卡名不要照抄)
[root@som ~]# nmcli connection modify eth0 ipv4.method auto connection.autoconnect yes
[root@som ~]# nmcli connection up eth0
[root@som ~]# ping www.baidu.com #测试验证
虚拟机B自动获取入网参数(网卡名不要照抄)
[root@pc207 ~]# nmcli connection modify ens33 ipv4.method auto \
> connection.autoconnect yes
[root@pc207 ~]# nmcli connection up ens33
[root@pc207 ~]# ping www.baidu.com #测试验证
-O
:表示将数据另存为制定路径虚拟机A操作
[root@som ~]# rm -rf /etc/yum.repos.d/*.repo #删除自带的repo文件
[root@som ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo \ https://mirrors.aliyun.com/repo/Centos-7.repo #下载阿里镜像源
虚拟机B操作
[root@pc207 ~]# rm -rf /etc/yum.repos.d/ *.repo #删除自带的repo文件
[root@pc207 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo \ https://mirrors.aliyun.com/repo/Centos-7.repo #下载阿里镜像源
yum clean all
:清空缓存yum repolist -v
:列出仓库状态yum list
:列出现有所有软件包yum -y install 软件名
:安装软件包yum remove 软件名
:卸载软件[root@som ~]# yum clean all #清空缓存
[root@som ~]# yum repolist -v #列出仓库状态
[root@som ~]# yum list #列出现有所有软件包
[root@som ~]# yum -y install nfs-utils #安装软件包
[root@som ~]# rpm -q nfs-utils #查看本地是否安装了nfs-utils软件
虚拟机A为服务端,构建NFS共享
安装软件包nfs-utils
[root@som ~]# yum -y install nfs-utils #安装软件包
[root@som ~]# rpm -q nfs-utils #查看是否安装
创建共享目录及完成共享配置
[root@som ~]# mkdir /test
[root@som ~]# echo haha > /test/1.txt
[root@som ~]# man exports #查看帮助,搜索example
[root@som ~]# vim /etc/exports
/test 192.168.192.0/24(ro) #不要照抄共享至自己的B主机所在网段,文件夹路径客户机地址(权限)
3.重启nfs-server服务
[root@som ~]# systemctl restart nfs-server #重新启动nfs-server服务
[root@som ~]# systemctl enable nfs-server #将nfs-server服务设置为开机自启动
虚拟机B作为客户端测试访问
1.查看服务端共享
[root@pc207 ~]# yum -y install nfs-utils #安装软件包
[root@pc207 ~]# rpm -q nfs-utils #查看是否安装
[root@pc207 ~]# showmount -e 192.168.192.100 #查看服务端共享的数据(IP地址不要照抄)
Export list for 192.168.192.100:
/test 192.168.192.0/24
2.进行手动挂载
[root@pc207 ~]# mkdir /mnt/nfsmnt
[root@pc207 ~]# mount 192.168.192.100:/test /mnt/nfsmnt
[root@pc207 ~]# df -h
3.开机自动挂载
_netdev
:声明网络设备,系统在网络服务配置完成后,再挂载本设备[root@pc207 ~]# vim /etc/fstab
...
192.168.192.100:/test /mnt/nfsmnt nfs defaults,_netdev 0 0
虚拟机A安装JDK(tomcat的运行环境)
[root@som ~]# yum -y install java-1.8.0-openjdk #安装java执行环境
[root@som ~]# mkdir /root/som
[root@som ~]# tar -xf /root/som.tar.gz -C /root/som #解压缩
[root@som ~]# cd /root/som
[root@som som]# tar -xf apache-tomcat-9.0.6.tar.gz #解压缩tomcat
[root@som som]# mv apache-tomcat-9.0.6 /usr/local/tomcat
[root@som som]# ls /usr/local/tomcat/
bin/ //主程序目录
lib/ //库文件目录
logs/ //日志目录
temp/ //临时目录
work/ //自动编译目录jsp代码转换servlet
conf/ //配置文件目录
webapps/ //页面目录
[root@som som]# /usr/local/tomcat/bin/startup.sh #通过脚本启动服务
[root@som som]# ss -antlp | grep java #过滤是否正常启动服务
tomcat启动之后,会启动三个端口,8005 8009 8080
提示:如果检查端口时,如果8005端口启动非常慢,默认tomcat启动需要从/dev/random读取大量的随机数据,默认该设备生成随机数据的速度很慢,可用使用下面的命令用urandom替换random(非必须操作)
[root@som ~]# mv /dev/random /dev/random.bak
[root@som ~]# ln -s /dev/urandom /dev/random #生成新的random
配置服务器虚拟主机
修改server.xml配置文件,创建虚拟主机
[root@som ~]# yum -y install java-1.8.0-openjdk-devel #提供jar命令
[root@som ~]# cd
[root@som ~]# jar -cf log.war /var/log/
[root@som ~]# cp log.war /usr/local/tomcat/webapps/
[root@som ~]# ls /usr/local/tomcat/webapps/ #有log目录
[root@som ~]# vim /usr/local/tomcat/conf/server.xml
……
<Host name="www.a.com" appBase="a"
unpackWARs="true" autoDeploy="true">
#自动解压war包,autoDeploy="true"自动部署java项目,如果有改动
Host>
<Host name="www.b.com" appBase="b"
unpackWARs="true" autoDeploy="true">
Host>
……
创建虚拟主机对应的页面根路径
[root@som ~]# mkdir -p /usr/local/tomcat/a/ROOT
[root@som ~]# mkdir -p /usr/local/tomcat/b/ROOT
[root@som ~]# echo "AAA" > /usr/local/tomcat/a/ROOT/index.html
[root@som ~]# echo "BBB" > /usr/local/tomcat/b/ROOT/index.html
重启Tomcat服务器
[root@som ~]# /usr/local/tomcat/bin/shutdown.sh
[root@som ~]# /usr/local/tomcat/bin/startup.sh
客户端设置host文件,并浏览测试页面进行测试,修改hosts域名解析
Windows: C:\Windows\System32\drivers\etc\hosts (需要以管理员身份打开记事本)
追加写入
192.168.8.100 www.a.com www.b.com
改www.b.com网站的首页目录为base
使用docBase参数可以修改默认网站首页路径,docBase默认某个路径下面的ROOT是首页目录
[root@som ~]# vim /usr/local/tomcat/conf/server.xml
… …
<Host name="www.b.com" appBase="b"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="base" />
Host>
… …
[root@som ~]# mkdir /usr/local/tomcat/b/base
[root@som ~]# echo BASE > /usr/local/tomcat/b/base/index.html
重新启动tomcat
[root@som ~]# /usr/local/tomcat/bin/shutdown.sh
[root@som ~]# /usr/local/tomcat/bin/startup.sh
测试查看页面是否正确
当用户访问http://www.b.com:8080/test打开/myself/目录下的页面,实现地址重写
编写自定义页面
[root@som ~]# mkdir /myself
[root@som ~]# echo "myself" > /myself/index.html
修改配置文件实现页面跳转
[root@som ~]# vim /usr/local/tomcat/conf/server.xml
<Host name="www.b.com" appBase="b"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="base" />
<Context path="/test" docBase="/myself/" />
Host>
重启服务
[root@som ~]# /usr/local/tomcat/bin/shutdown.sh
[root@som ~]# /usr/local/tomcat/bin/startup.sh
浏览器访问、测试,出现的是自定义的页面
[root@som ~]# yum -y install gcc make pcre-devel openssl-devel
[root@som ~]# cd som
[root@som som]# tar -xf nginx-1.16.1.tar.gz
[root@som som]# cd nginx-1.16.1
[root@som nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module
[root@som nginx-1.16.1]# make
[root@som nginx-1.16.1]# make install
[root@som ~]# ls /usr/local/nginx/
conf sbin html logs
conf
:专门用于存放NGINX配置文件sbin
:专门用于存放程序文件html
:专门用于存放网页文件logs
:专门用于存放日志[root@som ~]# /usr/local/nginx/sbin/nginx #启动服务
[root@som ~]# /usr/local/nginx/sbin/nginx -s reload #重新加载配置
[root@som ~]# /usr/local/nginx/sbin/nginx -s stop #停止服务
[root@som ~]# /usr/local/nginx/sbin/nginx -V #查看NGINX版本信息
[root@som ~]# /usr/local/nginx/sbin/nginx #启动服务
[root@som nginx-1.16.1]# cd ..
[root@som som]# tar -xf nginx-1.17.6.tar.gz
[root@som som]# cd nginx-1.17.6
[root@som nginx-1.17.6]# ./configure --with-http_ssl_module #支持加密功能
[root@som nginx-1.17.6]# make #编译
[root@som nginx-1.17.6]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
[root@som nginx-1.17.6]# cp objs/nginx /usr/local/nginx/sbin/
[root@som nginx-1.17.6]# make upgrade #升级或者手动重启Nginx服务
[root@som ~]# /usr/local/nginx/sbin/nginx -V #查看NGINX版本信息
基于域名的虚拟主机
配置基于域名的虚拟主机,实现以下目标:
实现两个基于域名的虚拟主机,域名分别为som.tedu.cn和web2.tedu.cn
修改Nginx服务配置,添加相关虚拟主机配置如下
[root@som ~]# vim /usr/local/nginx/conf/nginx.conf``
.. ..
server {
listen 80; #端口
server_name som.tedu.cn; #域名
location / {
root web; #指定网站根路径
index index.html index.htm;
}
….
}
… …
server {
listen 80; #端口
server_name web2.tedu.cn; #域名
location / {
root html; #指定网站根路径
index index.html index.htm;
}
}
创建网站根目录及对应首页文件
[root@som nginx-1.17.6]# mkdir /usr/local/nginx/web
[root@som nginx-1.17.6]# echo "web" > /usr/local/nginx/web/index.html
重新加载配置
[root@som nginx-1.17.6]# /usr/local/nginx/sbin/nginx -s reload
修改Windows主机的hosts文件
Windows以管理员身份打开记事本
修改客户端IP和域名对应关系,IP地址不要照抄,以自己服务端的IP地址为准
...
192.168.8.100 som.tedu.cn web2.tedu.cn
用Windows的浏览器访问som.tedu.cn web2.tedu.cn
L
: Linux操作系统N
:NGINX服务器M
:Mariadb、MySQL数据库P
:php、python、perl语言所写的代码安装软件,部署nginx环境,在这之前的环境已经准备过nginx,这里不再安装
安装MariaDB,安装php解释器和php-fpmfastcgi接口,php连接数据库的扩展包
mariadb-server
:提供数据库服务mairadb
:提供数据管理命令mariadb-devel
:数据库的扩展功能包php
:php解释器php-fpm
:管理php进程,快速网关通信接口,用于管理和处理PHP FastCGI进程的程序php-mysql
:php连接数据库的扩展功能包[root@som ~]# yum -y install mariadb mariadb-server mariadb-devel
[root@som ~]# yum -y install php php-mysql php-fpm
启动MySQL服务,设置开机自启
[root@som ~]# systemctl restart mariadb
[root@som ~]# systemctl enable mariadb
启动PHP-FPM服务,设置开机自启
[root@som ~]# systemctl restart php-fpm
[root@som ~]# systemctl enable php-fpm
[root@som ~]# ss -utnlp | grep :80
[root@som ~]# ss -utnlp | grep :3306
[root@som ~]# ss -utnlp | grep :9000
修改Nginx配置文件并启动服务
[root@som ~]# vim /usr/local/nginx/conf/nginx.conf
server {
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000; #将请求转发给本机9000端口,PHP解释器
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi.conf; #加载其他配置文件
}
[root@som ~]# /usr/local/nginx/sbin/nginx -s reload
创建PHP页面,测试LNMP架构能否解析PHP页面
创建PHP测试页面1:
[root@som ~]# vim /usr/local/nginx/html/test.php
<?php
$i=33;
echo $i;
?>
测试访问http://som.tedu.cn/test.php,成功
创建PHP测试页面,连接并查询MariaDB数据库
[root@som ~]# cp /root/som/php_scripts/mysql.php /usr/local/nginx/html/
[root@som ~]# vim /usr/local/nginx/html/mysql.php
<?php
$mysqli = new mysqli('localhost','root','','mysql');
//注意:root为mysql数据库的账户名称,密码需要修改为实际mysql密码,无密码则留空即可
//localhost是数据库的域名或IP,mysql是数据库的名称
if (mysqli_connect_errno()){
die('Unable to connect!'). mysqli_connect_error();
}
$sql = "select * from user";
$result = $mysqli->query($sql);
while($row = $result->fetch_array()){
printf("Host:%s",$row[0]);
printf("");
printf("Name:%s",$row[1]);
printf("");
}
?>
测试访问http://som.tedu.cn/mysql.php
准备数据库,配置数据库账户与权限
为网站提前创建一个数据库、添加账户并设置该账户有数据库访问权限。
[root@som ~]# mysql
MariaDB [(none)]> create database wordpress character set utf8mb4;
MariaDB [(none)]> grant all on wordpress.* to wordpress@'localhost' identified by 'wordpress';
MariaDB [(none)]> grant all on wordpress.* to wordpress@'192.168.8.100' identified by 'wordpress';
MariaDB [(none)]> grant all on wordpress.* to wordpress@'%' identified by 'wordpress';
MariaDB [(none)]> flush privileges; #刷新权限
MariaDB [(none)]> exit
上线PHP动态网站代码
[root@som ~]# unzip /root/som/wordpress.zip
[root@som ~]# cd wordpress/
[root@som wordpress]# tar -xf wordpress-5.0.3-zh_CN.tar.gz
[root@som wordpress]# cp -r wordpress/* /usr/local/nginx/html/
[root@som wordpress]# chown -R apache:apache /usr/local/nginx/html/
#提示:动态网站运行过程中,php脚本需要对网站目录有读写权限,而php-fpm默认启动用户为apache。
初始化网站配置(访问som.tedu.cn),发现显示的是nginx的默认首页,需要修改配置文件,更改首页
[root@som wordpress]# vim /usr/local/nginx/conf/nginx.conf
…
location / {
root html;
index index.php index.html index.htm;
…
[root@som wordpress]# /usr/local/nginx/sbin/nginx -s reload
再次访问som.tedu.cn,正常,第一次访问服务器会自动进入config配置页面
开发人员在写代码的时候并不知道未来数据库服务器的IP、端口、数据库名称、账户等信息,该配置页面主要的作用就是动态配置数据库信息,根据前面步骤配置的数据库信息填空即可,效果如下
点击提交即可完成数据库的初始化工作,php动态脚本会自动在wordpress数据库中创建若干数据表,后期网站的数据都会写入对并的数据表中
第一次使用Wordpress需要给你的网站设置基本信息,如网站标题、网站管理员账户与密码等信息,配置完成后点击安装wordpress即可
网站后台管理
访问192.168.2.100服务器,进入并熟悉后台管理界面(浏览器访问som.tedu.cn)
通常情况下,开发人员会开发一个后台管理界面,当代码上线后,普通用户就可以管理和配置网站页面(需要使用网站的超级管理员身份才可以进入后台界面)
访问首页后点击登陆菜单,输入账户和密码进入后台管理界面。
输入管理员用户名和密码。登陆后台管理界面。