首页 开发编程 正文

虚拟机怎么设置php

yum-yinstallgccpcre-developensslopenssl-devel(没有网络可在centos中找相关rpm)5、执行./configure命令:...

虚拟机怎么设置php,服务器怎么搭建?

你是要搭什么服务器?这里分享个linux的web服务器搭建,大概步骤就是下载服务器软件,安装-----启动服务器,修改配置文件-----修改相关路径-----定义服务器属性---测试,收工,

Nginx web服务器

1、下载nginx

命令:wget http://nginx.org/download/nginx-0.8.54.tar.gz

2、解压

命令:tar zxvf nginx-0.8.54.tar.gz

3、进入目录

命令:cd nginx-0.8.54

4、安装依赖包

命令:yum -y install gcc pcre-devel openssl openssl-devel (没有网络可在centos中找相关rpm)

5、执行 ./configure

命令:./configure

6、继续安装

命令:

make

make install

7、启动nginx服务

命令:/usr/local/nginx/sbin/nginx

8、重启nginx服务

命令:/usr/local/nginx/sbin/nginx -s reload

9、修改站点的配置文件

命令:vi /usr/local/nginx/conf/nginx.conf

10、多站点设置

⑴、在 /usr/local/nginx/conf/ 下创建 vhost 目录

命令:mkdir /usr/local/nginx/conf/vhost

⑵、在 /usr/local/nginx/conf/vhost 里创建一个名字为 linlik.conf 的文件,把站点配置文件写入(请查看最下面的站点内容)

命令:vi /usr/local/nginx/conf/vhost/linlik.conf

⑶、打开 /usr/local/nginx/conf/nginx.conf 文件,在相应位置加入 include 把以上2个文件包含进来

在页尾后括号上面加入一句:include vhost/*.conf; 然后保存退出并重启nginx服务

11、多站点的站点配置文档内容

如下:

server

{

listen 80;

#listen [::]:80;

server_name jiahaolin.com www.111cn.net;

index index.html index.htm index.php default.html default.htm default.php;

root /www/jiahaolin;

include emlog.conf;

#error_page 404 /404.html;

location ~ [^/]\.php(/|$)

{

# comment try_files $uri =404; to enable pathinfo

try_files $uri =404;

fastcgi_pass unix:/tmp/php-cgi.sock;

fastcgi_index index.php;

include fastcgi.conf;

#include pathinfo.conf;

}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

expires 30d;

}

location ~ .*\.(js|css)?$

{

expires 12h;

}

access_log /home/wwwlogs/jiahaolin.com.log access;

}

NGINX下如何自定义404页面

IIS和APACHE下自定义404页面的经验介绍文章已经非常多了,NGINX的目前还比较少,为了解决自家的问题特地对此作了深入的研究。研究结果表明,NGINX下配置自定义的404页面是可行的,而且很简单,只需如下几步:

1.创建自己的404.html页面

2.更改nginx.conf在http定义区域加入: fastcgi_intercept_errors on;

3.更改nginx.conf(或单独网站配置文件,例如在nginx -> sites-enabled下的站点配置文件 )

中在server 区域加入: error_page 404 /404.html 或者 error_page 404 =http://www.xxx.com/404.html

4.更改后重启nginx,,测试nginx.conf正确性: /opt/nginx/sbin/nginx –t

#502 等错误可以用同样的方法来配置。

error_page 500 502 503 504 /50x.html;

注意事项:

1.必须要添加:fastcgi_intercept_errors on; 如果这个选项没有设置,即使创建了404.html和配置了error_page也没有效果。fastcgi_intercept_errors 语法: fastcgi_intercept_errors on|off 默认: fastcgi_intercept_errors off 添加位置: http, server, location 默认情况下,nginx不支持自定义404错误页面,只有这个指令被设置为on,nginx才支持将404错误重定向。这里需要注意的是,并不是说设置了fastcgi_intercept_errors on,nginx就会将404错误重定向。在nginx中404错误重定向生效的前提是设置了fastcgi_intercept_errors on,并且正确的设置了error_page这个选项(包括语法和对应的404页面)

2.不要出于省事或者提高首页权重的目的将首页指定为404错误页面,也不要用其它方法跳转到首页。

3.自定义的404页面必须大于512字节,否则可能会出现IE默认的404页面。例如,假设自定义了404.html,大小只有11个字节(内容为:404错误)。

Nginx 配置安装以及一些常遇到的错误

nginx 编译安装 一、安装nginx时必须先安装相应的编译工具

yum -y install gcc gcc-c++ autoconf automake

yum -y install zlib zlib-devel openssl openssl-devel pcre-devel

建立nginx 组

groupadd -r nginx

useradd -s /sbin/nologin -g nginx -r nginx

id nginx

zlib:nginx提供gzip模块,需要zlib库支持

openssl:nginx提供ssl功能

pcre:支持地址重写rewrite功能

Nginx 官网下载地址: http://nginx.org/ 最新版 http://nginx.org/download/nginx-1.5.2.tar.gz

二、tar -zxvf nginx-1.2.8.tar.gz

三、cd nginx-1.2.8

配置

四、./configure \

--prefix=/usr \

--sbin-path=/usr/sbin/nginx \

--conf-path=/etc/nginx/nginx.conf \

--error-log-path=/var/log/nginx/error.log \

--pid-path=/var/run/nginx/nginx.pid \

--user=nginx \

--group=nginx \

--with-http_ssl_module \

--with-http_flv_module \

--with-http_gzip_static_module \

--http-log-path=/var/log/nginx/access.log \

--http-client-body-temp-path=/var/tmp/nginx/client \

--http-proxy-temp-path=/var/tmp/nginx/proxy \

--http-fastcgi-temp-path=/var/tmp/nginx/fcgi \

--with-http_stub_status_module

或者使用默认的 直接 ./configure

编译并且安装

五、make && make install

编译完成后 make install 进行安装 安转后就大功告成拉

小结:centos没有安装make编译器

解决:yum -y install gcc automake autoconf libtool make

重启动命令 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 更多参考 nginx --help

nginx 的配置以及常见小问题 如下:

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 错误解决

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

nginx: [emerg] still could not bind()

问题描述:地址已被使用。可能nginx服务卡死了,导致端口占用,出现此错误。

解决方法:首先用lsof:80看下80端口被什么程序占用。lsof返回结果如下:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

nginx 3274 root 6u IPv4 10664 0t0 TCP *:http (LISTEN)

nginx 3547 nginx 6u IPv4 10664 0t0 TCP *:http (LISTEN)

发现是nginx程序,所以我们把nginx服务k掉,重新启动服务。。命令如下:

kill -9 3274

kill -9 3547

或者 killall -9 nginx

从新载入配置文件启动 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

启动成功了但是发现一个错误信息

[warn]: 51200 worker_connections are more than open file resource limit: 51200

虽然不是致命的问题 不影响nginx运行 但是看起来很烦人 我们来解决一下

nginx.conf 配置问题

events {

use epoll;

worker_connections 51200; // 这里出的问题

}

问题原因是 Linux的最大文件数限制。修改Linux 文件数限制 ulimit -n 51200

[root@localhost ~]# ulimit -n

[root@localhost ~]#

接下来从新载入配置文件重启动Ok了....

nginx error_log 错误日志配置说明

nginx的error_log类型如下(从左到右:debug最详细 crit最少):

[ debug | info | notice | warn | error | crit ]

例如:error_log logs/nginx_error.log crit;

解释:日志文件存储在nginx安装目录下的 logs/nginx_error.log ,错误类型为 crit ,也就是记录最少错误信息;

注意error_log off并不能关闭日志记录功能,它将日志文件写入一个文件名为off的文件中,如果你想关闭错误日志记录功能,应使用以下配置:

error_log /dev/null crit;

把存储位置设置到Linux的黑洞中去

同样注意0.7.53版本,nginx在读取配置文件指定的错误日志路径前将使用编译的默认日志位置,如果运行nginx的用户对该位置没有写入权限,nginx将输出如下错误:

[alert]: could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied) log_not_found 语法:log_not_found on | off

默认值:on

使用字段:location

这个参数指定了是否记录客户端的请求出现404错误的日志,通常用于不存在的robots.txt和favicon.ico文件,例如: location = /robots.txt { log_not_found off; }

最后:所有nginx配置发生改变时,最好都使用如下命令测试配置是否错误后再使用 -s reload 重载

# /usr/local/nginx/sbin/nginx –t

说明:

1、# 代表root权限,不用输入

2、以上是nginx的默认安装路径,如果改变了要相应的修改哦,例如 wdcp 的 lanmp 一键安装包 则如需要用如下命令

# /www/wdlinux/nginx/sbin/nginx -s reload

输入后如果提示如下,则表示配置无误:

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

这时再使用重载命令让Nginx平滑的重新加载配置即可,而不会影响正常访问:

# /usr/local/nginx/sbin/nginx -s reload

用文本文档写的代码怎么运行?

要运行文本文档里的代码,需要根据代码的编程语言以及需要使用的开发工具包,将代码编译为可执行文件或应用程序。

例如,如果代码使用C++编程语言编写,那么可以使用Microsoft Visual Studio或者gcc编译器将代码编译为可执行文件,然后在电脑上运行它。

如果代码使用Java语言编写,那么可以使用Eclipse或Netbeans等开发工具编译代码,然后使用Java虚拟机运行它们。

Linux下PHP程序使用多线程?

引言

别的语言都在一窝蜂地搞编译,搞虚拟机,搞多线程,提高效率。我们整天敲 PHP 代码,除了 Nginx 调用 php-fpm 拉取 PHP 文件的解析外,对于多线程有多少了解?

请问,PHP 能不能使用多线程?如果能,怎么实现的?

本文就带你打开这个疑问。

学习时间

这个问题的答案是肯定的,PHP 可以使用多线程。我们借助于 pthreads 实现:

该项目提供了与基于Posix Threads的PHP兼容的多线程。

有啥亮点没?下面这些全是:

一个易于使用,快速学习的面向对象的PHP 7.2线程API执行所有预定义和用户声明的方法和函数,包括闭包。包括现成的同步无限的可能性...

需要一些扩展的基础的支持,PHP 7.2 及以上版本,ZTS Enabled ( Thread Safety ),Posix Threads Implementation。

还有一些注意事项:

pthreads是一个面向对象的API,它提供了PHP中多线程所需的所有工具。 PHP应用程序可以创建,读取,写入,执行并与线程,辅助对象和线程对象同步。 警告:pthreads扩展名不能在Web服务器环境中使用。 因此,PHP中的线程应仅保留给基于CLI的应用程序使用。

命令行应用脚本完全适用,这也与我们编写 Bash,Python等等类似。下面举一个例子:

然后执行一次:

再执行一次:

实际运用

上面的代码是个示例性质的应用,仅仅是为了展示多线程运行。下面来一段业务代码。

该类模拟一个url请求。因为网络问题,有可能失败,或者不确定返回时间,所以适合并行。接着我们使用该类进行多网络请求并发。为了减轻系统负荷,使用微秒延时。

$t = microtime(true);

$g = new AsyncWebRequest(sprintf("http://www.google.com/?q=%s", rand() * 10));

实例化之后,我们发起请求:

if ($g->start()) {

printf("Request took %f seconds to start ", microtime(true) $t);

while ( $g->isRunning() ) {

echo "."; usleep(100);

}

if ($g->join()) {

printf(" and %f seconds to finish receiving %d bytes\n", microtime(true) $t, strlen($g->data));

} else

printf(" and %f seconds to finish, request failed\n", microtime(true) $t);

}

其他方案

如果不用 pthreads 库提供的能力,该怎么写并行的多任务呢?其实 PHP 提供了一个 popen 函数,用于打开进程文件指针。

popen 返回一个和 fopen 所返回的相同的文件指针,只不过它是单向的(只能用于读或写)并且必须用 pclose 来关闭。此指针可以用于 fgets,fgetss 和 fwrite。 当模式为 'r',返回的文件指针等于命令的 STDOUT,当模式为 'w',返回的文件指针等于命令的 STDIN。

直接上代码:

for ($i=0; $i<10; $i++) { // 打开10个进程 for ($j=0; $j<10; $j++) { $pipe[$j] = popen('script2.php', 'w'); } // 等待完成 for ($j=0; $j<10; ++$j) { pclose($pipe[$j]); } }

大家看到了实现的方法与 pthreads 完全不同,这段代码仍然是阻塞运行,只不过同时打开10个进程,并行运行。

并行与多线程完全不同。不过,可视作一个简单的解决方案吧。

写在最后

经过上述两种实现方法,大家应该对于多线程,多进程,并行这些概念有一些认识了。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

Enterprise?

Red Hat Enterprise Linux 8的新功能和新特性介绍

1、内核和支持CPU架构

Red Hat Enterprise Linux 8.0基于Fedora 28和上游Linux内核4.18版本,为用户提供了跨混合云和数据中心部署的安全,稳定和一致的基础,以及支持所有级别工作负载所需的工具。

支持的CPU架构是:

1]、AMD和Intel 64位架构

2]、64位ARM架构

3]、IBM Power Systems,Little Endian

4]、IBM Z

2、内容分发

Red Hat Enterprise Linux 8有两种内容分发模式,只需要启用两个存储库。

1]、BaseOS存储库 BaseOS存储库以传统RPM包的形式提供底层核心OS内容,BaseOS组件的生命周期与之前的Red Hat Enterprise Linux版本中的内容相同。

2]、AppStream存储库 Application Stream存储库提供您可能希望在给定用户空间中运行的所有应用程序,具有特殊许可的其他软件可在Supplemental存储库中获得。

附:AppStream的解释

AppStream允许您在独立的生命周期中安装其他版本的软件,并使您的操作系统保持最新,同时拥有适合您的用例的正确版本的应用程序,请注意,不能同时将两个流安装到同一用户空间中。

应用程序流通常根据其分发的软件版本命名,例如mongodb:3.4或mongodb:3.6,但也可以使用“latest”,“stable”和“latest”等名称。

3、桌面环境

RHEL默认桌面环境是GNOME,GNOME项目由GNOME Foundation支持,RHEL 8中提供的Gnome版本是3.28版本,它可以自动下载Boxes中的操作系统,其他新功能包括:

1]、新的屏幕键盘

2]、新的GNOME Boxes功能

3]、扩展设备支持Thunderbolt 3接口的最显着集成

4]、GNOME软件,dconf编辑器和GNOME终端的改进

5]、GNOME软件实用程序,可用于安装和更新应用程序和gnome-shell扩展

6]、GNOME显示管理器(GDM)使用Wayland作为其默认显示服务器,而不是X.org服务器

附:Wayland显示服务器的特点

1]、更强大的安全模型

2]、改进了多显示器处理

3]、改进的用户界面(UI)缩放

4]、桌面可以直接控制窗口处理

4、软件管理

RHEL 8 YUM软件包管理器现在基于DNF技术,参考dnf命令_Linux dnf命令使用详解:新一代的RPM软件包管理器,它提供对模块化内容的支持,提高的性能以及与工具集成的精心设计的稳定API,RPM的版本是4.14.2,它在开始安装之前验证整个包的内容。

RHEL 8中提供的YUM版本是v4.0.4,基于DNF的YUM与RHEL 7上使用的先前YUM v3相比具有以下优势:

1]、提高性能

2]、支持模块化内容

3]、精心设计的稳定API,可与工具集成

5、Web服务器、Web工具、编译器、语言和数据库

红帽企业版Linux 8包括多个版本的数据库、语言、编译器和其他可供您使用的工具的应用程序,以下是Red Hat Enterprise Linux 8上可用的组件列表:

1]、Python:RHEL 8中的默认Python是Python 3.6版本

2]、数据库服务器:RHEL 8提供的数据库有:MariaDB 10.3、MySQL 8.0、PostgreSQL 9.6、PostgreSQL 10

3]、Redis:可用的redis版本是4.0

4]、Web服务器:httpd 2.4和Nginx 1.14

5]、OpenLDAP由369 LDAP Server取代

6]、Varnish Cache 6.0

7]、Git 2.17

8]、Maven 3.5

9]、Perl 5.26和5.24

10]、PHP 7.2和7.1

11]、Ruby 2.5

12]、Node.js 10和8

13]、Python 3.6和2.7

14]、Rust Toolset 1.26

15]、Scala 2.10

16]、Go Toolset 1.10

17]、GCC编译器8.1

18]、.NET Core 2.1

19]、Java 8和11

20]、Pacemaker集群资源管理器2.0.0,pcs配置系统完全支持Corosync 3,knet和node名称

21]、glibc库基于2.28版

注:要安装更多RHEL 8下的应用软件,请看Red Hat/RHEL系统技术专栏。

6、联网

以下是网络级别的新变化:

1]、RHEL 8与TCP网络堆栈版本4.16一起发布,提供更高的性能,更好的可扩展性和更高的稳定性

2]、网络堆栈升级到上游版本4.18

3]、Iptables已被nftablesframework取代为默认的网络数据包过滤工具

4]、nftables框架是iptablesip6tables、arptables和ebtables工具的指定继承者,这为IPv4和IPv6协议提供了单一框架

5]、firewalld守护程序现在使用nftables作为其默认后端

6]、支持IPVLAN虚拟网络驱动程序,支持多个容器的网络连接

7]、NetworkManager现在支持单根I/O虚拟化(SR-IOV)虚拟功能(VF),NetworkManager允许配置VF的某些属性,例如MAC地址、VLAN、允许的比特率

7、虚拟化

1]、Red Hat Enterprise Linux 8与qemu-kvm 2.12一起发布 支持Q35客户机类型,UEFI客户机启动支持,vCPU热插拔和热插拔,NUMA调优和客户I/O线程中的固定

2]、QEMU仿真器引入了沙盒功能,QEMU沙盒为QEMU可以执行的系统调用提供了可配置的限制,从而使虚拟机更加安全

3]、KVM虚拟化现在支持用户模式指令防护(UMIP)功能,该功能有助于防止用户空间应用程序访问系统范围的设置

4]、KVM虚拟化现在支持5级分页功能,这显着增加了主机和客户机系统可以使用的物理和虚拟地址空间

5]、NVIDIA vGPU现在与VNC控制台兼容

6]、在Red Hat支持的所有CPU架构上,KVM虚拟化支持Ceph存储

7]、Q35,RHEL 8 Virtualization支持更现代的基于PCI Express的机器类型,默认情况下,在RHEL 8中创建的所有虚拟机都设置为使用Q35 PC机器类型

8、网络管理– Cockpit

1]、RHEL 8自动安装了Cockpit,Cockpit所需的防火墙端口会自动打开

2]、Cockpit界面可用于将基于策略的解密(PBD)规则应用于受管系统上的磁盘

3]、对于在身份管理(IdM)域中注册的系统,Cockpit默认使用域的集中管理的IdM资源

4]、Cockpit菜单和页面可以在移动浏览器变体上导航

5]、可以从Cockpit Web界面创建和管理虚拟机

6]、现在可以将“虚拟机”页面添加到Cockpit界面,该界面使用户可以创建和管理基于libvirt的虚拟机

9、系统用户

RHEL 7中可用的usernfsnobody已经与usernobody合并到nobody用户和组对,其UID和GID为65534,这种更改减少了对任何人拥有但与NFS无关的文件的混淆。

10、安全

RHEL 8支持OpenSSL 1.1.1和TLS 1.3,这使您能够使用最新的加密保护标准保护客户的数据。

RHEL 8自带了系统范围的加密策略,可帮助您管理加密合规性,无需修改和调整特定应用程序。

OpenSSH已经改为版本7.8p1,不支持SSH版本1协议,Blowfish/CAST/RC4密码,hmac-ripemd160消息认证码。

安全方面请参考在RHEL 8/CentOS 8系统中禁用SELinux的方法。

10、Linux containers

RHEL 8通过基于开放标准的容器工具包为Linux容器提供企业支持:

1]、Buildah有助于构建OCI图像

2]、Skopeo用于在Docker注册表,Atomic注册表,私有注册表,本地目录和本地OCI布局目录上共享/查找容器映像

3]、Podman用于运行容器而无需守护进程

注:Buildah和Podman都是用于OCI图像和容器的命令行工具,下面附上Buildah与Podman的不同之处介绍。

Buildah的命令复制Dockerfile中的所有命令,实际上只是创建了Buildah容器,以允许将内容添加回容器映像。

Podman专注于帮助您维护和修改OCI images的所有命令和功能,例如拉动和标记,它还允许您创建,运行和维护从这些images创建的容器。

11、存储和文件系统

Stratis是RHEL 8的新本地存储管理器,它在存储池之上提供托管文件系统,并为用户提供附加功能,Stratis通过集成Linux的devicemapper子系统和XFS文件系统来提供ZFS/Btrfs风格的功能。

Stratis支持LUKSv2磁盘加密和网络绑定磁盘加密(NBDE),以实现更强大的数据安全性。

使用Stratis,您可以轻松执行存储任务,例如:

1]、维护文件系统

2]、管理快照和精简配置

3]、根据需要自动增大文件系统大小

Pools是从一个或多个存储设备创建的,而卷是从pool创建的,文件系统是在卷上创建的,因此调整卷的大小也会自动调整FS的大小,Stratis使用的默认文件系统是XFS。

其他值得注意的存储功能包括:

1]、XFS文件系统现在支持共享的写时复制数据扩展功能,这使两个或多个文件能够共享一组公共数据块,创建共享副本不会使用磁盘I/O,也不会占用额外的磁盘空间,共享公共块的文件就像常规文件一样

2]、在创建XFS文件系统时,默认情况下会启用共享的写时复制数据扩展区,从xfsprogs软件包版本4.17.0-2.el8开始

3]、在RHEL 8支持的所有体系结构上支持虚拟数据优化器(VDO)

4]、LUKS2现在是加密卷的默认格式,这取代了RHEL 7中分发的旧版LUKS(LUKS1)格式,如果遇到部分元数据损坏,LUKS2会为加密卷提供元数据自动恢复和冗余

电脑端有哪些特别好用的小工具?

推荐4个简单好用的小软件,日常生活都用的上。

Bandizip

一个压缩软件。类似于360压缩软件,大小只有5.14M,完全免费,简单好用。目前支持的文件有zip,7z,rar,alz,egg,tar等主流压缩文件。而且它还可以制作exe格式自解压文件、支持unicode字符和批量分割压缩文件。

FastStone Capture

一个截图的软件。通过它可以实现滚动截图,再也不用一张张截图啦!另外它还有录屏功能,软件只有3M哦!

键位设置:

软件功能齐全,可以缩放、旋转、减切、颜色调整,还可以从系统、浏览器或其他程序中导入图片、收藏夹等功能,稍加学习就可以灵活使用啦!

录屏功能:

唯一的缺点就是:这个好东西只能免费用30天。

Xnip

macOS上的滚动截图软件。只有6.4M,完全免费。而且它拥有齐全的标注功能,简单易用,你可以对截取的图片进行标注。

点击上面的滚动截图按钮,可以实现滚动截图,生成长截图。

在对窗口进行截取时,它可以和Mac自带的截图软件一样截取窗口的阴影,除此之外,在截取窗口截图时,按住Shift就可以组合截取多个窗口。

Potplayer

一个强大的播放软件,支持大量不同型号的3D眼镜,可以连接电视或电脑。它支持各种音频和视频格式,以及DVD、VCD和各种视频格式。而且加快播放速度的时候,不会失声哦收集、分类不易,如果觉得有用的话,点个赞,再来波关注哈哈~

收集、分类不易,如果觉得有用的话,点个赞,再来波关注哈哈~

本文转载自互联网,如有侵权,联系删除