当前位置: 首页 > news >正文

项目部署——LAMP、LNMP和LTMJ

前情提要

问:如何通过nginx的反向代理,代理多台虚拟主机(一台apache服务器上的虚拟主机)?

1.在nginx的配置文件中,将基于域名的访问改为基于端口的访问(nginx.conf)

upstream daili{server www1.xxhf.com;    #默认80端口server www2.xxhf.com:90;    #改为90端口server 192.168.77.79;}server {location / {proxy_pass http://daili;}}

2.在nginx服务器的hosts文件中配置域名解析(/etc/hosts)

192.168.77.78 www1.xxhf.com
192.168.77.78 www2.xxhf.com

3.修改apache主配置文件,监听90端口

Listen 80
Listen 90

4.如果用rpm包安装apache服务,则没有子配置文件,需要到/usr/share/doc/httpd-core/httpd-vhost.conf中复制模版到/etc/httpd/conf.d目录下

总结:反向代理的upstream可通过dns解析域名获得ip,但因为解析时机要比调用时机更早,因为真正调用时只能获取到相同的apache服务器ip,按顺序找到第一台虚拟主机。

一、静态和动态资源

静态资源   .html  .htm

  • 使用静态网页开发技术发布的资源
  • 如:文本、音视频、HTML、CSS、JS等
  • 标记语言、直接映射

动态资源  .php .java

  • 使用动态网页开发技术发布的资源
  • 如:jsp/servlet、php等
  • 编程语言、有逻辑

1.服务器处理html文件

  • web服务器去网页根目录找到index.html文件,随后将内容返回给浏览器去解析

2.服务器处理php文件

  • web服务器将动态的php页面转成静态,即输出代码运行结果,将结果返回给浏览器

3.LAMP关系

  • LAMP:Linux + Apache + MySQL + PHP
  • Linux:系统,提供环境支持
  • Apache:网站服务,部署网站、处理网页请求 
  • MySQL:数据库,网站数据的持久化存储
  • PHP:编程语言,网站动态资源的解析

4.A与P的关联方法

  • mod_php:修改apache配置文件,使其识别*.php文件,进而加载php模块解析动态页面
  • php_fpm:启动php-fpm进程,交给代理fastcgi,将http服务器和脚本解析器分离;当http服务器每次遇到动态请求时,直接交付给fastcgi进程去执行,然后把结果返回给浏览器

注:apache和php使用rpm包安装,会自动配置关联——php_fpm进程

二、Apache+PHP组合

服务器:77.79

1.rpm包安装httpd和php

[root@localhost ~]# dnf -y install httpd
[root@localhost ~]# dnf -y install php

2.自动配置关联

3.直接部署页面,浏览器访问

[root@localhost ~]# vi /var/www/html/test.php
<?phpecho "hello world";
?>

三、Nginx+PHP组合

服务器:77.77

1.rpm包安装nginx和php

[root@localhost ~]# dnf -y install php nginx

2.修改php配置文件参数

注:nginx无法处理php脚本,需要安装php解释器调用脚本,但直接安装的php解释器默认用户是apache服务,需要改成nginx

[root@localhost ~]# vi /etc/php-fpm.d/www.confuser = nginx
group = nginx

3.启动php-fpm进程,重载服务

systemctl start php-fpm
vi /usr/share/nginx/html/test.php
<?phpecho "hello world";
?>
/sbin/nginx -s reload

4.采用其他方式载入动态资源

注:关闭77.77的php进程,通过反向代理,将动态请求移交给后端已经配置好php解释器的apache(77.79)服务器去处理

(1)修改nginx.conf配置文件,同时修改apache服务页面,以免混淆

[root@localhost ~]# systemctl stop php-fpm    #关闭php进程
[root@localhost ~]# vi /etc/nginx/nginx.conflocation ~ \.php {proxy_pass 192.168.77.79;    #将php文件请求移交给apache服务}

注:虽然关闭了php进程,但依旧有两个文件影响了反向代理的跳转,需要手动删掉

rm -rf /etc/nginx/conf.d/php.conf
rm -rf /etc/nginx/default.d/php.conf

(2)重启nginx,测试

 ​​​​​​​​​​​​​​​​​​​四、PHP调用MySql

注:php调用mysql的中间工具——php-mysqli、php-pdo

1.安装mariadb数据库

[root@localhost ~]# dnf -y install mariadb mariadb-server php-mysqli php-pdo

2.启动数据库,端口号3306

#开启服务
[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# ss -anpt | grep :3306
LISTEN 0      80                 *:3306            *:*    users:(("mariadbd",pid=3089,fd=17))                                                                    #执行mysql
[root@localhost ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.22-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.#创建用户
MariaDB [(none)]> create user lisi @'%'identified by'123';
Query OK, 0 rows affected (0.002 sec)
#授权
MariaDB [(none)]> grant all on *.* to lisi@'%';
Query OK, 0 rows affected (0.001 sec)
#退出
MariaDB [(none)]> exit
Bye
#客户端连接mysql服务器
[root@localhost ~]# mysql -h192.168.77.79 -p3306 -ulisi -p123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.5.22-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
#创建一个库
MariaDB [(none)]> create database db1;
Query OK, 1 row affected (0.001 sec)
#查看mysql有哪些数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| db1                |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.001 sec)

3.部署wordpress项目

注:LAMP环境已经搭建好,wordpress项目也是通过php编写的项目,可以直接导入web服务网页根目录(77.79),添加权限后启动

[root@localhost html]# pwd
/var/www/html
[root@localhost html]# ll
total 12
-rw-r--r-- 1 root   root     20 Sep 15 16:30 index.html
-rw-r--r-- 1 root   root     60 Sep 15 21:50 test.php
drwxr-xr-x 5 apache apache 4096 Sep 16 09:08 wordpress
[root@localhost html]# 

也可以使用nginx(77.77)反向代理去访问apache服务器(77.79)的wordpress项目,只需在nginx.conf配置文件中设置即可

        location /wordpress {proxy_pass http://192.168.77.79;}

五、Tomcat+java组合

服务器:77.77(恢复快照后的纯净版)

补充知识:

  • tomcat是web应用服务器,可以处理http请求和只处理动态java代码

注:因为tomcat是有java代码编写,因此安装tomcat前需要先安装java环境

1.源码包安装

在网页端下载jdk——java开发工具包,将其导入linux并解压

[root@localhost ltmj-r9]# ls
apache-tomcat-9.0.48.tar.gz  jdk-11.0.11_linux-x64_bin.tar.gz  mariadb-10.6.17.tar.gz  mypress.war  mysql-connector-java-5.1.24.jar
[root@localhost ltmj-r9]# tar -zxf jdk-11.0.11_linux-x64_bin.tar.gz 
[root@localhost ltmj-r9]# ls
apache-tomcat-9.0.48.tar.gz  jdk-11.0.11_linux-x64_bin.tar.gz  mypress.war
jdk-11.0.11                  mariadb-10.6.17.tar.gz            mysql-connector-java-5.1.24.jar
[root@localhost ltmj-r9]# cp -a jdk-11.0.11 /usr/local/jdk11
#安装jdk指定版本、覆盖系统默认安装的

2.配置环境变量

注:默认安装的jdk在/usr/bin下

vi /etc/profile
export JAVA_HOME=/usr/local/jdk11
PATH=$PATH:$JAVA_HOME/bin
#这里之所以分出JAVA_HOME是因为有的java项目会去找这个变量
[root@localhost ltmj-r9]# source /etc/profile    #让配置文件生效

3.测试环境,查看版本

#配置好环境变量之后,才能使用java命令
[root@localhost ~]# java -version
java version "11.0.11" 2021-04-20 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.11+9-LTS-194)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.11+9-LTS-194, mixed mode)
#说明jkd环境已经安装完毕

4.创建java文件,测试效果

vim HelloWorld.javapublic class HelloWorld{
public static void main(String[] args) {
System.out.println("hello world~");
}
}

效果

#编译,生成.class文件
[root@localhost ~]# javac HelloWorld.java 
[root@localhost ~]# ls
anaconda-ks.cfg  cat.sh  HelloWorld.class  HelloWorld.java  ltmj-r9  ltmj-r9.tar.gz
#执行
[root@localhost ~]# java HelloWorld
hello world~

5.源码包安装Tomcat

[root@localhost ltmj-r9]# tar -zxf apache-tomcat-9.0.48.tar.gz 
[root@localhost ltmj-r9]# ls
apache-tomcat-9.0.48         jdk-11.0.11                       mariadb-10.6.17.tar.gz  mysql-connector-java-5.1.24.jar
apache-tomcat-9.0.48.tar.gz  jdk-11.0.11_linux-x64_bin.tar.gz  mypress.war
[root@localhost ltmj-r9]# cp -a apache-tomcat-9.0.48 /usr/local/tomcat9

启动服务

/usr/local/tomcat9/bin/catalina.sh start
/usr/local/tomcat9/bin/catalina.sh stop
或:
/usr/local/tomcat9/bin/startup.sh
/usr/local/tomcat9/bin/shutdown.sh

6.测试Tomcat服务器

基本参数

  • 默认端口:8080
  • 配置文件:安装目录/conf/server.xml
  • 网页根目录:安装目录/webapps
  • 默认网页文件:安装目录/webapps/ROOT/index.jsp
  • 日志文件:安装目录/logs
[root@localhost ~]# /usr/local/tomcat9/bin/catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/local/jdk11
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@localhost ~]# ss -anpt | grep :8080
LISTEN 0      100                     *:8080            *:*    users:(("java",pid=1844,fd=43))     

访问页面:

http://ServerIP:8080

六、Tomcat部署项目(LTMJ)

rpm包安装(77.78)——纯净版

1.安装tomcat和数据库mariadb

[root@localhost ~]# dnf -y install tomcat mariadb mariadb-server[root@localhost ~]# systemctl start tomcat
[root@localhost ~]# ss -anpt | grep :8080
LISTEN 0      100                     *:8080            *:*     users:(("java",pid=14256,fd=46)) 

补充知识:

  • rpm包参数
  • 端口:8080
  • 配置文件:/usr/share/tomcat/conf/server.xml
  • 日志:/usr/share/tomcat/logs
  • 网页根目录:/usr/share/tomcat/webapps
  • 依赖库:/usr/share/tomcat/lib
  • 默认网页文件/usr/share/tomcat/webapps/ROOT/index.jsp

2.启动数据库,创建用户

[root@localhost conf]# systemctl start mariadb
[root@localhost conf]# mysqlWelcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.22-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]>  create user lisi @'%'identified by'123';
Query OK, 0 rows affected (0.001 sec)MariaDB [(none)]> grant all on *.* to lisi@'%';
Query OK, 0 rows affected (0.002 sec)MariaDB [(none)]> create database xiangmu;
Query OK, 1 row affected (0.001 sec)MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| xiangmu            |
+--------------------+
4 rows in set (0.001 sec)

3.创建默认网页文件

注:当前网页根目录下没有页面,需要手动创建ROOT目录和index.jsp网页文件

[root@localhost webapps]# mkdir ROOT
[root@localhost webapps]# echo "hello world" >> ROOT/index.jsp

4.部署一个mypress项目

注:该mypress项目已经做好,只需要下载包到webapps目录下即可自动解包和部署

[root@localhost webapps]# ls
mypress  mypress.war  ROOT

直接访问页面:192.168.77.78:8080/mypress

但是输入数据后登录却发现请求失败,是因为缺少了一个依赖,导致java无法连接数据库

下载依赖到lib库当中,这里我将包放在了77.77服务器上,可以直接拿过来

[root@localhost webapps]# cd ..
[root@localhost tomcat]# cd lib/
[root@localhost lib]# scp 192.168.77.77:/root/ltmj-r9/mysql-connector-java-5.1.24.jar .

再次重启tomcat,点击提交,就可以正常跳转登录界面

5.通过nginx代理访问服务

(1)使用rmp包安装nginx(77.79)

[root@localhost ~]# dnf -y install nginx

(2)修改配置文件,添加代理

        location /mypress {proxy_pass http://192.168.77.78:8080;} 

(3)重启服务,通过网页登录测试:192.168.77.79/mypress

七、相关配置修改

1.Tomcat源码包修改端口

(1)直接修改server.xml配置文件

    <Connector port="80" protocol="HTTP/1.1"

(2)重启tomcat服务,测试

[root@localhost tomcat9]# ./bin/catalina.sh stop
[root@localhost tomcat9]# ./bin/catalina.sh start

2.Tomcat-RPM包修改端口

注:rpm修改端口时,无法将端口修改至1024以下,因为启动进程的用户是普通用户tomcat,需要修改成root用户才可以正常修改至80端口

(1)查看当前进程,发先用户是tomcat

(2)修改配置文件,重启进程,再查看进程

#注释掉服务中的tomcat用户
[root@localhost ~]# vi /usr/lib/systemd/system/tomcat.service 
#User=tomcat[root@localhost ~]# systemctl restart tomcat

(3)修改端口号为80,重启服务测试(这里的页面是我自己添加的默认网页文件)

[root@localhost tomcat]# vi conf/server.xml 

3.使用域名访问Tomcat

(1)修改配置文件server.conf

      <Host name="tomcat.xxhf.com"  appBase="webapps"unpackWARs="true" autoDeploy="true">

(2)添加到主机的hosts文件当中

(3)浏览器访问

但很快就发现,使用ip无法正常访问

(4)再次修改配置文件

<Engine name="Catalina" defaultHost="tomcat.xxhf.com">

(5)浏览器测试

注:这次域名和ip都可以正常访问


文章转载自:

http://FbeGtsiY.rhchr.cn
http://ctq3MtLt.rhchr.cn
http://0cr3uLOx.rhchr.cn
http://2lWXyXzV.rhchr.cn
http://4xbIOeSQ.rhchr.cn
http://p73IWe8c.rhchr.cn
http://qAKT4JoY.rhchr.cn
http://HMG33gpa.rhchr.cn
http://74Ks6T2g.rhchr.cn
http://te2BVDsJ.rhchr.cn
http://Cz76y3Ny.rhchr.cn
http://Y0IVaCr3.rhchr.cn
http://70OwFn00.rhchr.cn
http://5sgwnMi9.rhchr.cn
http://sEb0KBpu.rhchr.cn
http://ibQHbF2v.rhchr.cn
http://FUCX2mv4.rhchr.cn
http://m1OEu05n.rhchr.cn
http://8wQB4DA6.rhchr.cn
http://kbZBzPhP.rhchr.cn
http://4zWV5nRi.rhchr.cn
http://DcV5NzHt.rhchr.cn
http://0qvdKQK7.rhchr.cn
http://EgIldkLF.rhchr.cn
http://ahhEe1fw.rhchr.cn
http://gcaVoQWP.rhchr.cn
http://KGHSmaoN.rhchr.cn
http://uAXjWUYK.rhchr.cn
http://cYLicjdG.rhchr.cn
http://PmvJ2WAz.rhchr.cn
http://www.dtcms.com/a/386997.html

相关文章:

  • 支付宝免押租赁平台源码
  • 不建议在 Docker 中跑 MySQL
  • PPT中将图片裁剪为爱心等形状
  • YOLO 模型前向推理全流程(以 YOLOv8 为例)
  • 【Redis】--集群
  • TRUNCATE还是DELETE?MySQL高效清空表的选择策略与实战指南
  • 【AI】AI评测入门(四):Evaluator Prompt拆解
  • Redis以`后台`方式启动方法
  • 【每日算法】找出字符串中第一个匹配项的下标 LeetCode
  • 【12】新国都 ——新国都 嵌入式 第一轮一面,技术面,校招,面试问答记录
  • 线程池-面试
  • 设计模式学习笔记(一)
  • 贪心算法应用:旅行商问题最近邻算法(TSP Nearest Neighbor)
  • 高系分七:软件工程
  • spark hive presto doris 对substr函数的差异
  • webpack5
  • M:Dijkstra算法求最短路径
  • C++11 atomic
  • 工作中真正常用的 git 操作
  • 【Java】P5 Java流程控制——分支结构详解
  • 下载 | Win10 2021官方精简版,预装应用极少!(9月更新、Win 10 IoT LTSC 2021版、适合老电脑安装)
  • 【面试场景题】交易流水表高qps写入会有锁等待或死锁问题吗
  • 嵌入式系统arm高级系统调试技能-24./proc/slabinfo 文件解读与内存异常分析
  • 关于单片机编程的循环以及全局变量应用的思考
  • C++string类详解
  • 卷积神经网络搭建实战(一)-----torch库中的MNIST手写数字数据集(简明版)
  • 2025 Android 知识体系总结(含面试要点,持续补充,更新中...)
  • elementui中表单先上传但不请求接口,点击按钮后在请求接口的方式上传文件,及校验
  • el-input自动填充与设置input背景色无效
  • java设计模式-工厂模式(文件上传)