虚拟机怎么设置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天。
XnipmacOS上的滚动截图软件。只有6.4M,完全免费。而且它拥有齐全的标注功能,简单易用,你可以对截取的图片进行标注。
点击上面的滚动截图按钮,可以实现滚动截图,生成长截图。
在对窗口进行截取时,它可以和Mac自带的截图软件一样截取窗口的阴影,除此之外,在截取窗口截图时,按住Shift就可以组合截取多个窗口。
Potplayer一个强大的播放软件,支持大量不同型号的3D眼镜,可以连接电视或电脑。它支持各种音频和视频格式,以及DVD、VCD和各种视频格式。而且加快播放速度的时候,不会失声哦收集、分类不易,如果觉得有用的话,点个赞,再来波关注哈哈~
收集、分类不易,如果觉得有用的话,点个赞,再来波关注哈哈~