搭建LNMP网站平台并部署Web应用

本章主要介绍:

  • 安装Nginx
  • 安装MySQL
  • 安装PHP
  • 在LNMP平台中部署 Web 应用

        构建LNMP网站平台就像构建LAMP平台一样,构建LNMP平台也需要Linux服务器,MySQL数据库,PHP解析环境,区别主要在Nginx 与 PHP的协作配置上,下面开始介绍LNMP平台的构建方法

1.0安装Nginx

        Nginx最稳定的版本为1.12.0,其安装其文件可以从官网 http://www.nginx.org 下载。下面以新版1.22.1为例,介绍Nginx的安装

1.编译安装Nginx

1)安装支持软件

Nginx 的配置以运行需要 pcre , zlib 等软件包的支持,因此应预先安装这些软件的开发包(devel)以便提供相应的库和头文件,确保Nginx的安装顺利完成,具体安装命令如下所示。

[root@node01 ~]# yum -y install pcre-devel zlib-devel
2)创建运行用户,组

        Nginx 服务程序默认以 nobody 身份运行,金阿姨为其创建专门的用户账户,以便更准确的控制其访问权限,增加灵活性,降低安全风险,例如,创建一个名为nginx 的用户,不建立宿主文件夹,也禁止登录到Shell环境

[root@node01 ~]# useradd -M -s /sbin/nologin nginx
3)拉取nginx软件包
wget http://nginx.org/download/nginx-1.22.1.tar.gz
4)编译安装 Nginx
[root@node01 ~]# tar zxvf nginx-1.22.1.tar.gz 
[root@node01 ~]# cd nginx-1.22.1/
[root@node01 nginx-1.22.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[root@node01 nginx-1.22.1]# make
[root@node01 nginx-1.22.1]# make install
5)为了使 Nignx 服务器的运行更加方便,可以为主程序nginx 创建链接文件,以便管理员直接执行 nginx 命令就可以调用Nginx 的主程序
[root@node01 nginx-1.22.1]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@node01 nginx-1.22.1]# ls -l /usr/local/sbin/nginx 
lrwxrwxrwx. 1 root root 27 1月   8 09:21 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx
[root@node01 nginx-1.22.1]# 
6)修改中文字符
 35     server {
 36         listen       80;
 37         server_name  localhost;
 38 
 39         charset utf-8;    //38行改为utf-8
 40 
 41         #access_log  logs/host.access.log  main;
 42 
 43         location / {
 44             root   html;
 45             index  index.html index.htm;
 46         }
 47 
 48         #error_page  404              /404.html;
 49 
 50         # redirect server error pages to the static page /50x.html
 51         #
 52         error_page   500 502 503 504  /50x.html;
 53         location = /50x.html {
 54             root   html;
 55         }

2.Nginx的运行控制

1)检测配置文件

        与Apache 的主程序 httpd 类似,Nginx 的主程序也提供了 -t 选项用来对配置文件进行检测,以便找出不当或错误的配置,配置文件 nginx.conf 默认位于安装目录下的 conf/子目录中。若要检查位于其他位置的配置文件 可以使用 -c 选项来指定路径

[root@node01 ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@node01 ~]# 
2)启动,停止 nginx

        直接运行 nginx 命令即可以启动 Nginx 服务器,这种方式将使用默认的配置文件,若要改用其他配置文件,需要添加 "-c" 配置文件路径,需要注意的是,若服务器中已经装有httpd等其他Web 服务软件,应采取修改端口,停用或卸载等措施避免端口冲突。

[root@node01 ~]# nginx

        通过检查 Nginx 程序的监听状态,或者在浏览器中访问此 Web 服务 (默认页面将显示 “Welcometo nginx”)可以确认 Nginx 服务是否正常运行。下面示例中提到的是 elinks 是Linux 系统中常用的文本浏览器。

[root@node01 ~]# netstat -anpt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      12133/nginx: master 
[root@node01 ~]# yum -y install elinks
[root@node01 ~]# elinks http://192.168.182.104

        主程序 Nginx 支持标准的进程号,通过 Kill 或 killall 命令发送HUP信号表示重载配置,OUT 信号表示退出进程,kill 信号表示杀死进程,例如,若使用killall 命令,重载配置,停止服务的操作分别如下所示(通过 "-s" 选项指定信号种类)最小化安装的Centos 系统默认没有安装killall命令,需要先通过yum安装

[root@node01 ~]# yum -y install psmisc    //安装 killall命令
[root@node01 ~]# killall -s HUP nginx    //选项 -s HUP 等同于 -1
[root@node01 ~]# killall -s QUIT nginx    //选项 -s QUIT 等同于 -3

        当 Nginx 进程运行时,PID号默认存放在 logs/目录下的nginx.pid 文件中,因此若改用kill命令也可以根据nginx.pid文件中的PID号来进行控制。

3)使用Nginx服务脚本

        为了使Nginx服务的启动,停止,重载等操作更改方便,可以编写Nginx服务脚本,并使用 chkconfig 和 systemctl 工具来进行管理,也更加符合 CentOS 系统的管理习惯

[root@node01 ~]# vim /etc/init.d/nginx
[root@node01 ~]# cat /etc/init.d/nginx 
#!/bin/bash
# chkconfig: - 99 20
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
        start)
          $PROG
        ;;
        stop)
          kill -s QUIT $(cat $PIDF)
        ;;
        restart)
          $0 stop
          $0 start
        ;;
        reload)
          kill -s HUP $(cat $PIDF)
        ;;
        *)
          echo "Usage: $0 {start|stop|restart|reload}"
        exit 1
esac
exit 0
[root@node01 ~]# 
[root@node01 ~]# chmod +x /etc/init.d/nginx 
[root@node01 ~]# chkconfig --add nginx
[root@node01 ~]# systemctl status nginx
● nginx.service - (null)
   Loaded: loaded (/etc/rc.d/init.d/nginx; bad; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:systemd-sysv-generator(8)
[root@node01 ~]# 

        这样,就可以通过systemctl 命令控制 Nginx 脚本来启动,停止,重启,重载Nginx 服务器了,方法时在执行添加相应的 start , stop , restart , reload 参数。

1.2.安装MySQL数据库

1.安装MySQL 数据库 

        为了与 Nginx,PHP 环境保持一致,仍选择采用源代码编译的方式安装 MySQL组件。以5.6.36版本为例,安装过程如下

1)编译安装MySQl
[root@node01 ~]# yum -y install ncurses-devel
[root@node01 ~]# tar zxvf cmake-2.8.6.tar.gz
[root@node01 ~]# cd cmake-2.8.6/
[root@node01 cmake-2.8.6]# ./configure 
[root@node01 cmake-2.8.6]# gmake
[root@node01 cmake-2.8.6]# gmake install
[root@node01 cmake-2.8.6]# cd 
[root@node01 ~]# tar zxvf mysql-5.6.36.tar.gz 
[root@node01 mysql-5.6.36]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc
[root@node01 mysql-5.6.36]# make && make install
2)优化调整
[root@node01 mysql-5.6.36]# cp support-files/my-default.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y
[root@node01 mysql-5.6.36]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@node01 mysql-5.6.36]# chmod +x /etc/rc.d/init.d/mysqld 
[root@node01 mysql-5.6.36]# chkconfig --add mysqld
[root@node01 mysql-5.6.36]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@node01 mysql-5.6.36]# . /etc/profile
3)初始化数据库
[root@node01 mysql-5.6.36]# groupadd mysql
[root@node01 mysql-5.6.36]# useradd -M -s /sbin/nologin mysql -g mysql
[root@node01 mysql-5.6.36]# chown -R mysql:mysql /usr/local/mysql
[root@node01 mysql-5.6.36]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
4)启动 MySQL 服务
[root@node01 mysql-5.6.36]# systemctl start mysql
[root@node01 mysql-5.6.36]# mysqladmin -u root password 'pwd123'

1.3.安装PHP解析环境

1.安装PHP 

        较新的版本(如5.5)的PHP 已经自带FPM (FastCGI Process Manager,FastCGI进程管理器)模块,用来对 PHP 解析实例进行管理,优化解析效率。单服务器的LNMP 架构通常使用这种方式,因此在配置PHP编译选项时应添加 "--enable-fpm" 以启动此模块

        源码包 php-5.5.38 为例,具体安装过程如下。为了提高PHP解析效率,建议将相应版本的 ZendGuardLoader也装上

1)编译安装PHP
[root@node01 ~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel
[root@node01 ~]# tar zxvf php-5.5.38.tar.gz
[root@node01 ~]# cd php-5.5.38/
[root@node01 php-5.5.38]# 
[root@node01 php-5.5.38]# ./configure --prefix=/usr/local/php5 \
> --with-gd \
> --with-zlib \
> --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config \
> --with-config-file-path=/usr/local/php5 \
> --enable-mbstring \
> --enable-fpm \
> --with-jpeg-dir=/usr/lib

[root@node01 php-5.5.38]# make && make install

2)安装后的调整
[root@node01 php-5.5.38]# cp php.ini-development /usr/local/php5/php.ini
[root@node01 php-5.5.38]# ln -s /usr/local/php5/bin/* /usr/local/bin/
[root@node01 php-5.5.38]# ln -s /usr/local/php5//sbin/* /usr/local/sbin/
3)安装 ZendGuardLoader
[root@node01 ~]# tar zxvf zend-loader-php5.5-linux-x86_64_update1.tar.gz 
zend-loader-php5.5-linux-x86_64/
zend-loader-php5.5-linux-x86_64/ZendGuardLoader.so
zend-loader-php5.5-linux-x86_64/opcache.so
zend-loader-php5.5-linux-x86_64/README.txt
[root@node01 ~]# 
[root@node01 ~]# cd zend-loader-php5.5-linux-x86_64/
[root@node01 zend-loader-php5.5-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php/
[root@node01 zend-loader-php5.5-linux-x86_64]# cd
[root@node01 ~]# vim /usr/local/php5/php.ini 
##增加如下内容
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1

2.配置Nginx支持PHP环境

        若要让 Nginx 能够解析 php 网页,有两种方法可以选择:其一,充当中介,将访问PHP 页面的Web请求转交给其他服务器(LAMP)去处理:其二,通过使用PHP的FPM 模块来调用本机的PHP环境。

1)启用 php-fpm 进程

        如果选用 FPM 方式,则需要先启动 php-fpm 进程,以便监听 PHP 解析请求。参考范围建立 php-fpm.conf 配置文件,并求改其中的 PID 文件,运行用户,服务数(进行数量)等相关设置,然后启动 php-fpm 程序即可(默认监听本机的9000端口)。

[root@node01 ~]# cd /usr/local/php5/etc/
[root@node01 etc]# cp php-fpm.conf.default php-fpm.conf
[root@node01 etc]# useradd -M -s /sbin/nologin php
[root@node01 etc]# vim php-fpm.conf
pid = run/php-fpm.pid      //25行确认pid文件位置 并取消注释
 user = php    //149行修改运行用户
 group = php    //150行修改运行组
pm.start_servers = 20    //235行修改启动时开启的进程数
pm.min_spare_servers = 5    //240行修改最少空闲进程数
pm.max_spare_servers = 35    //245
pm.max_children = 50    //230行最多空闲进程数

[root@node01 etc]# /usr/local/sbin/php-fpm 
[root@node01 etc]# netstat -anpt | grep php-fpm
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      16802/php-fpm: mast 
[root@node01 etc]# 

        在 php-fpm.conf 文件中,pid 配置行指出了PID 信息的存放位置,对于的实际路径为 /usr/local/php5/var/run/php-fpm.pid 根据上述信息,可以修改Nginx 服务脚本,以便启动/停止Nginx 服务器时将 php-fpm 进程也自动启动/停止。

[root@node01 etc]# vim /etc/init.d/nginx 
[root@node01 etc]# cat /etc/init.d/nginx 
#!/bin/bash
# chkconfig: - 99 20
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
PROG_FPM="/usr/local/sbin/php-fpm.pid"
PIDF_FPM="/usr/local/php5/var/run/php-fpm-pid"
case "$1" in
        start)
          $PROG
          $PROG_FPM    //添加内容
        ;;
        stop)
          kill -s QUIT $(cat $PIDF)    //根据PID终止Nginx进程
	      kill -s QUIT $(cat $PIDF_FPM)    //根据PID终止 php-fpm进程
        ;;
        restart)
          $0 stop
          $0 start
        ;;
        reload)
          kill -s HUP $(cat $PIDF)    
	      kill -s HUP $(cat $PIDF_FPM)    //增加内容
        ;;
        *)
          echo "Usage: $0 {start|stop|restart|reload}"
        exit 1
esac
exit 0
[root@node01 etc]# 

        因此,一旦启动或关闭 Nginx 服务,php-fpm 程序也会随之启动或关闭,不需要额外再启动或关闭 php-fpm

2)配置Nginx 支持PHP解析

        无论是将PHP页面交给LAMP服务器去解析,还是调用本机的 php-fpm 进程进行解析,都需要再“server { }” 中添加 location 设置,以便指定访问 .php 网页时采取何种操作。

1)   对于第一种方法(转交给其他Web服务器处理)使用的配置语句如下所示,例如交给IP地址为192.168.182.101 的 LAMP 服务器处理,从而实现由Nginx 负责静态页面,LAMP 负责动态页面的分离效果。

###在配置文件花括号server { } 内添加如下内容 

  location ~ \.php$ {
          proxy_pass    http://192.168.182.102:80;

        }
2)对于第二种方法(调用本机的 php-fpm进程) 使用的配置语句如下所示,在 conf/目录下的 fastcgi.conf 文件中已经包含必须的宏配置,可以通过 include 语句添加进来
##在server{ } 内添加如下内容    
   location ~ \.php$ {
            root           /var/www/test;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fastcgi_params;
        }
3)        上述方法中,选用任意一种都可以,本章的案例中建议选用第二种,完成修改以后,重新加载Nginx 服务即可生效
[root@node01 ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@node01 ~]# systemctl restart nginx
3)php页面访问测试

        以调用 php-fpm 解析为例,可以在PHP文档根目录下创建一个测试网页,用测试PHP语句能否正常解析,以及能否链接Mysql数据库

[root@node01 bdqn]# cat /var/www/bdqn/test.php 
<?php
$link=mysqli_connect('localhost','root','pwd123');
if ($link) echo "<h1>恭喜你连接成功</h1>";
mysqli_close($link);
?>
[root@node01 bdqn]# 

        访问测试页,如 http://192.168.182.104/test.php 若能看到连接成功的提示信息 如图 则表示PHP解析及数据库连接均正常;否则应根据页面提示,日志消息等进行检查,排除相应的故障。 

2.0 在LNMP平台中部署Web应用

        LNMP平台与LAMP平台时非常相似的,区别主要在于所用 Web 服务软件不同,而这与使用PHP 开放的 Web 应用程序并无太大关系,因此PHP 应用的部署方法也是类似的,下面将以“Discuz” 论坛社区为例 介绍在LNMP 平台中的部署过程

1.下载并部署程序代码

        Discuzi社区论坛,是一个采用php与Mysql等多种数据库构建的 性能优异,功能全面且安全稳定的社区论坛(BBS)软件,其官方网站为 http://www.discuz.net/

        将下载的 Discuzi 源码文件解压,找到其中的 upload/ 文件夹并将其放置到 LNMP 服务器的网站根目录,然后适当调整权限(若此处不调整,也可以参考安装页面的提示再调整)以允许 nginx , php-fpm 程序拥有必要的写入权限

[root@node01 ~]# yum -y install unzip
[root@node01 ~]# unzip Discuz_X3.3_SC_UTF8.zip 
[root@node01 ~]# mv upload/ /var/www/bdqn/bbs
[root@node01 ~]# chown -R php:php /var/www/bdqn/bbs/

2.创建数据库

        Discuzi 论坛中的帖子,板块等信息需要保持在数据库中,所以要针对 Discuzi 创建数据库。为了简单Web应用程序对数据库的风险,建议设置专用的数据库及授权用户,而不要直接使用 root 用户,例如,可以新建bbs 库,授权用户为runbbs,具体操作如下

[root@node01 ~]# mysql -u root -p    //root用户登录数据库
Enter password:     //输入root数据库的密码
mysql> create database bbs;    //创建数据库
Query OK, 1 row affected (0.00 sec)

mysql> GRANT all ON bbs.* TO runbbs@localhost IDENTIFIED BY 'bbs@yh123';    //创建用户指定到bbs数据库并授权
Query OK, 0 rows affected (0.00 sec)

mysql> 

3.安装 Web 应用

        访问 http://192.168.182.104/bbs/install/index.php 将会打开 Discuzi 的安装程序,根据页面提示,只需三步即可轻松完成安装 如图 前面步骤只需要按下一步即可然后来到这个页面

        确保系统环境,目录权限,缓存可写性等检测通过,否则安装将无法继续,在第三步配置安装数据库的步骤中,除了应正确配置数据库连接外,还应该设置好管理账号,密码等基本信息,如图 安装以后,删除 install 目录,以降低安全风险 

4.访问 Web 应用系统

        完成安装以后,通过访问 http://192.168.182.104/bbs/forum.php 可以看到 Discuz!社区论坛站点首页 再如图访问 http://192.168.182.104/bbs/admin.php 并以管理账号登录后 可以进入管理后台

管理员账号登录首页

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/315047.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于SPI的插件式开发实现方案之@AutoService+ServiceLoader介绍及Dolphinscheduler中的实际应用

1.插件化开发概述 插件化开发模式正在很多编程语言或技术框架中得以广泛的应用实践&#xff0c;比如大家熟悉的jenkins&#xff0c;docker可视化管理平台rancher&#xff0c;以及日常编码使用的编辑器idea&#xff0c;vscode等。 实现服务模块之间解耦的方式有很多&#xff0…

代码随想录二刷 |二叉树 | 二叉搜索树的最小绝对差

代码随想录二刷 &#xff5c;二叉树 &#xff5c; 二叉搜索树的最小绝对差 题目描述解题思路 & 代码实现递归法迭代法 题目描述 530.二叉搜索树的最小绝对差 给你一棵所有节点为非负值的二叉搜索树&#xff0c;请你计算树中任意两节点的差的绝对值的最小值。 示例&#…

10款热门的企业报表工具软件,看看哪款最适合?

1. Microsoft Office Excel&#xff1a;这款软件一般比较简单&#xff0c;适合处理小量数据&#xff0c;常被用来制作报表。 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 2. VeryReport&#xff1a;这是一款由纯Java编写的报表软件&#xff0c;兼具数…

[易语言]使用易语言部署工业级人脸检测模型

【框架地址】 https://github.com/ShiqiYu/libfacedetection 【算法介绍】 Libfacedetection是一个开源的计算机视觉库&#xff0c;主要用于实时的人脸检测。它利用深度学习技术&#xff0c;特别是卷积神经网络&#xff08;CNN&#xff09;&#xff0c;实现了高精度的脸部定位…

知识库系统搭建不用愁,有这些工具就够了

对于企业来说&#xff0c;知识库不仅是存储和管理知识的出色工具&#xff0c;更是建立有效知识共享和团队合作的有力助手。好的知识库工具可以实现知识的分类、检索和分享&#xff0c;提升工程效率&#xff0c;降低内部沟通成本。对于追求效率的你&#xff0c;下面介绍的三款知…

每天刷两道题——第十四天

1.1矩阵置零 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用原地算法。 输入&#xff1a;matrix [[0,1,2,0],[3,4,5,2],[1,3,1,5]] 输出&#xff1a;[[0,0,0,0],[0,4,5,0],[0,3,1,0]] 原地算法&#xff08;…

Jetson_yolov8_解决模型导出.engine遇到的问题、使用gpu版本的torch和torchvision、INT8 FP16量化加快推理

1、前情提要 英伟达Jetson搭建Yolov8环境过程中遇到的各种报错解决&#xff08;涉及numpy、scipy、torchvision等&#xff09;以及直观体验使用Yolov8目标检测的过程&#xff08;CLI命令行操作、无需代码&#xff09;-CSDN博客和YOLOv8_测试yolov8n.pt&#xff0c;yolov8m.pt训…

Java十大经典算法—KMP

字符串匹配问题&#xff1a; 1.暴力匹配 public class ViolenceMatch {public static void main(String[] args) {String str1 "硅硅谷 尚硅谷你尚硅 尚硅谷你尚硅谷你尚硅你好";String str2 "尚硅谷你尚硅你好";int index violenceMatch(str1, str2);S…

十二、QProgressBar的简单使用与样式优化(Qt5 GUI系列)

目录 一、设计需求 二、实现代码 三、代码解析 四、总结 五、扩展(自定义QProgressBar样式) 一、设计需求 在很多应用程序中&#xff0c;在执行费时操作时都会展示一个进度条来展示操作进行的进度。常见的场景&#xff0c;如&#xff1a;拷贝操作、安装操作以及卸载操作。…

JAVA安卓无线点餐系统源码

JAVA安卓无线点餐系统源码 本项目是带后台管理和客户端和SQL server数据库的完整项目&#xff0c;后台用SSH框架

【方法】PDF文件如何设置密码?

PDF文件可以通过浏览器打开查看&#xff0c;但如果想要设置密码保护&#xff0c;就需要用到相关的软件&#xff0c;下面分享两种常用的软件。 1. PDF编辑器 PDF编辑器除了可以编辑修改PDF文件&#xff0c;还可以用来设置密码。 以小编使用的PDF编辑器为例&#xff0c;通过PD…

“具身智能”浪潮中,达闼机器人的商业化“奇点”已然到来?

当前&#xff0c;人形机器人产业正在快速发展&#xff0c;而2023年必将会是载入史册的一年。 具体来看&#xff0c;2023年&#xff0c;AI技术大爆发&#xff0c;可在语言、视觉、运动控制、降低研发成本等多方面赋能人形机器人产业发展。与此同时&#xff0c;特斯拉、波士顿动…

基础面试题整理1

1.面向对象的特点 继承&#xff08;复用性&#xff09;、封装&#xff08;复用性&#xff09;、多态&#xff08;可移植性、灵活性&#xff09; 2.ArrayList与LinkedList区别 ArrayList和LinkedList都是实现了List接口 ArrayList底层是动态数组 LinkedList底层是链表&#…

Windows开机后,Docker失败:Commoncauses include access rights issues

这种错误看似已经跟你说很清楚了&#xff0c;但是看国外docker社区也提到这个问题&#xff0c;一大堆回答解决了别人的问题&#xff0c;但未必解决你的。我写自己的方案&#xff0c;可能也未必适合你&#xff0c;如果要说Root Cause根源就是windows的虚拟化功能开启的问题。 An…

基于SSM的驾校预约管理系统

基于SSM的驾校预约管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 详情 管理员界面 摘要 随着社会的不断发展&#xff0c;驾驶技能的需求逐渐增…

老师的课堂行为包括什么内容

课堂行为对于学生的学习体验和成长至关重要。我在课堂上的一举一动&#xff0c;不仅影响着学生的学习效果&#xff0c;还关系着学生的心理健康和人格发展。那么&#xff0c;老师的课堂行为究竟包括哪些内容呢&#xff1f;接下来&#xff0c;我将以知乎老师的口吻&#xff0c;为…

【软件测试】路径覆盖

题目要求&#xff1a; a) 流程图如下&#xff1a; b) Consider test cases ti (n 3) and t2 ( n 5). Although these tour the same prime paths in printPrime(), they dont necessarily find the same faults. Design a simple fault that t2 would be more lik…

UE4运用C++和框架开发坦克大战教程笔记(十四)(第43~45集)

UE4运用C和框架开发坦克大战教程笔记&#xff08;十四&#xff09;&#xff08;第43~45集&#xff09; 43. 单个加载 UObject 功能获取资源 URL 链接实现异步加载单个 UObject 类型资源 44. 批量加载 UObject 功能测试加载单个 UObject 资源批量加载多个同类的 UObject 资源 45…

Win10系统读不出U盘的四种解决方法

有用户特别喜欢用U盘来保存重要的内容&#xff0c;但有用户反映自己的Win10电脑读取不了U盘&#xff0c;这样用户就不能将Win10电脑上的内容传输到U盘了。下面小编带来四种简单有效的解决方法&#xff0c;解决后Win10电脑上的U盘就能被正常识别&#xff0c;从而恢复对U盘的使用…

【Linux笔记】进程等待与程序替换

一、进程的终止 1、进程退出码 在讲解进程的终止之前&#xff0c;先要普及一下进程的退出码概念。 我们父进程之所以要创建子进程&#xff0c;就是为了让子进程运行不一样的任务&#xff0c;那么对于子进程执行的这个任务执行完毕后的结果是否正确或者是否出差错&#xff0c…