宝塔下 php的cli 版本怎么切换,非网站的php版本
rm -rf /usr/bin/php
ln -s /www/server/php/82/bin/php /usr/bin/
rm -rf /usr/bin/php
ln -s /www/server/php/82/bin/php /usr/bin/
server
{
listen 80;
# 您的域名
server_name cms.demo.mallray.com;
# 索引文档,建议将 index.html 放在第一个
index index.html
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md|package.json|package-lock.json|\.env) {
return 404;
}
# HTTP反向代理相关配置开始 >>>
location / {
# 端口为3000,自定义后请注意修改
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_connect_timeout 30s;
proxy_read_timeout 86400s;
proxy_send_timeout 30s;
proxy_redirect off;
}
# HTTP反向代理相关配置结束 <<<
# 有可能会存在的默认规则-【请删除它们】,否则很多资源会404 - START
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
# 有可能会存在的默认规则-【请删除它们】,否则很多资源会404 - END
}
Node
项目,并添加 Node
项目web-nuxt
根目录start
3000
SSL
证书等1、下载安装包
https://studygolang.com/dl/golang/go1.22.0.linux-amd64.tar.gz
2、解压安装包
tar -zxvf go1.16.2.linux-amd64.tar.gz -C /usr/local/
3、设置环境变量
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
4、刷新配置文件使配置生效
source /etc/profile
5、校验是否安装成功 查看 golang 的安装版本
go version
6、出现以下信息 表示安装完成
go version go1.22.0 linux/amd64
将 vue 与 golang 开发的项目部署上线的注意事宜。
1、整理本机的项目端口路径。
2、用 BT 新建一个项目网站点。
3、配置好数据库与 Redis 等。
4、最主要的是 Nignx 的配置,如下:
server
{
listen 80;
server_name go.studio.com;
index index.html index.htm default.php default.htm default.html;
root /www/wwwroot/go.studio.com/public;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-00.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/go.studio.com.conf;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
#禁止在证书验证目录放入敏感文件
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
return 403;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
location /api {
proxy_pass http://127.0.0.1:9985;
proxy_set_header Host 127.0.0.1:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
proxy_set_header X-Host $host:$server_port;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 30s;
proxy_read_timeout 86400s;
proxy_send_timeout 30s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 开启 gzip 功能
gzip on;
gzip_min_length 10k;
gzip_comp_level 9;
gzip_types text/plain text/css application/javascript application/x-javascript text/javascript application/xml;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
access_log /www/wwwlogs/go.studio.com.log;
error_log /www/wwwlogs/go.studio.com.error.log;
# 显式的根路径配置
location / {
try_files $uri $uri/ /manage/index.html;
# 这里可以添加其他指令或配置
}
}
服务器的截图:
//0表示8进制 644表示权限 os.FileMode(0777).String()进行打印
//- rwx rwx rwx -表示普通文件
//r表示可读
//w表示可写
//x表示可执行
//第1位:文件属性,一般常用的是"-”表示是普通文件;"d"表示是一个目录,
-:代表这是一个普通文件(regular),其中其他文件类型还包括了
d:目录文件(directory)
1:链接文件(link)
b:块设备文件(block)
c:字符设备文件(character)
s:套接字文件(socket)
p:管道文件(pipe)
//第2~4位:文件所有者的权限rwx(可读/可写/可执行)。
//第5~7位:文件所属用户组的权限rwx(可读/可写/可执行)。
//第8~10位:其他人的权限rwx(可读/可写/可执行)。
//在golang中,可以使用os.FileMode(perm).String()来查看权限标识
//os.FileMode(0777).String()
//返回-rwxrwxrwx
//os.FileMode(0666).String()
//返回-rw-rw-rw
//os.FileMode(0644).String()
//返回-rw-r--r-
//0777表示:创建了一个普通文件,所有人拥有所有的读、写、执行权限
//0666表示:创建了一个普通文件,所有人拥有对该文件的读、写权限,但是都不可执行
//0644表示:创建了一个普通文件,文件所有者对该文件有读写权限,用户组和其他人只有读权限,都没有执行权限
通常提示为:无法启动此程序,因为计算机中丢失VCRUNTIME140.dll,尝试重新安装此程序以解决此问题
方案合集。
如下图所示:
网上有许多种解决办法,但最安全有效的办法就是安装微软的C++程序集。
链接: https://pan.baidu.com/s/1RObq8NIB40YXZRhCmz4iaA
提取码: fmyv
最后,就安装完成,问题解决。
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?s=/$1 last;
}
}
location ~ /\.ht {
deny all;
}
http {
limit_conn_zone $binary_remote_addr zone=conn_zone:10m;
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;
# 其他配置
}
server {
listen 80;
server_name example.com;
# 限制单个客户端 IP 最大连接数为 2
limit_conn conn_zone 2;
# 限制单个客户端 IP 1s 内最多发起 1 个请求
limit_req zone=req_zone burst=5;
# 计算客户端 IP 累计请求流量,限制累计请求流量为 1GB
set $limit_rate 128k;
limit_rate_after 500M;
limit_rate 1m;
# 其他处理逻辑
}
#统计其他端口时:netstat -pnt | grep :xx | wc -l
netstat -pnt | grep :443 | wc -l
#服务器被恶意高频访问时可以用到
netstat -ant |awk '/:443/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}' |sort -rn|head -n20
#如统计文件api_error.log中error关键词出现的次数
grep -o 'error' /www/payment/runtime/logs/api_error.log | wc -l
#可以监听整个文件,也可根据关键词监听
cd /www/payment/runtime/logs/
tail -f xxx.log #监听整个文件
tail -f xxx.log | grep 'xxx' #根据关键词监听
#以下是本人开发中常用到的
一、du命令
du命令是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。
du -h filepath 直接得出人好识别的文件大小
du -h ljl.txt
或者
du -ah 当前目录下所有文件的大小
二、ls命令
ls命令用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。
ls -l filepath 第五列为文件字节数
ls -l ljl.txt
ls -h filepath h表示human, 加-h参数得到人好读的文件大小
ls -lh ljl.txt
#使用这个是为了查看异常登录地址
yum -y install whois
whois 119.53.224.203
df -h
ln -s [源文件或目录] [目标文件或目录]
例如:创建软链时,先进入根目录的bin目录下
cd /bin
从/bin这个路径创建软链nginx 引入/usr/local/nginx/sbin/nginx
ln -s /usr/local/nginx/sbin/nginx nginx
创建软链之后 重载nginx
就可以从 /usr/local/nginx/sbin/nginx -s reload 简化为 nginx -s reload
netstat -ant | grep 9000
#server模块中添加以下内容,修改完后,记得重启nginx
add_header Access-Control-Allow-Headers '*';
add_header Access-Control-Allow-Origin '*';
add_header Access-Control-Allow-Credentials 'true';
add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS';
#跨域参数解释
#Access-Control-Allow-Origin:服务器默认是不被允许跨域的。给Nginx服务器配置Access-Control-Allow-Origin *后,表示服务器可以接受所有的请求源(Origin),即接受所有跨域的请求。
#Access-Control-Allow-Methods:允许通过的方法,可以防止Content-Type is not allowed by Access-Control-Allow-Headers in preflight response的错误信息
#Access-Control-Allow-Credentials true 表示允许跨域请求携带 cookie
#Access-Control-Allow-Headers:为了防止出现Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response的错误信息。这个错误表示当前请求Content-Type的值不被支持。其实是我们发起了”application/json”的类型请求导致的
server {
listen 443 ssl;#监听443端口
#server_name 购买域名后解析到该服务器上,如果没有域名,也可以给此项目单独开端口
server_name api.applet.xxx.com;
root /xxx/xxxx/xxxx;#root 项目地址
index index.php index.html index.htm;#项目入口文件
#存放证书的地址.pem和.key文件
ssl_certificate /usr/local/nginx/conf/vhost/cert/xxx.pem;
ssl_certificate_key /usr/local/nginx/conf/vhost/cert/xxx.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
if (!-e $request_filename){
rewrite ^/(.*) /index.php last;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
error_log /var/log/nginx/api_applet.log error;
}
#这里讲到的是CentOS7,CentOS7的防火墙和CentOS6不一样了, CentOS 6 系列中的 iptables 相关命令不能用了,Centos7中使用firewalld代替了原来的iptables。
#停止firewall
systemctl stop firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service
#添加8022端口
firewall-cmd --zone=public --add-port=8022/tcp --permanent
#多个端口:
firewall-cmd --zone=public --add-port=80-90/tcp --permanent
#命令含义:
--zone #作用域
--add-port=8022/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
#centos7查看防火墙所有信息
firewall-cmd --list-all
#centos7查看防火墙开放的端口信息
firewall-cmd --list-ports
#删除8022端口
firewall-cmd --zone=public --remove-port=8022/tcp --permanent
#重启防火墙
firewall-cmd --reload
常用命令介绍:
firewall-cmd --state ##查看防火墙状态,是否是running
firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
栈和堆是计算机内存中存储数据的两种方式。
栈是一种数据结构, 采用先进后出 (LIFO) 的方式存储数据。栈的操作只允许在栈顶插入和删除元素,因此栈的访问速度较快。栈本身分配在内存的高地址空间,向低地址扩展,而具体的数据值则按照定义的方式存储在栈帧中。
堆是另一种内存数据存储方式,它在程序运行时动态分配内存,用于存储程序运行期间的数据。堆的内存分配是在程序运行时进行的,并且随着程序执行的进展而不断地增加或减少。由于堆的动态特性,访问堆中的变量速度比访问栈中的变量要慢。
在C#中,所有值类型的变量都存储在栈中,而所有引用类型的变量在栈中只存放引用,而对象则在堆中分配空间。换句话说,引用类型的变量存储的是指向堆中对象的指针。
输入流(读):从文件读到内存的流向。
输出流(写):从内存写入文件的方向。