站内公告:

我们的虚拟社区正式开通了

Main Menu

最新帖子

#1
1. 修改php.ini配置文件:
  在PHP安装目录下找到php.ini文件,用文本编辑器打开。搜索并找到"memory_limit"这个参数,可以看到类似以下的配置:
   memory_limit = 128M
  将其修改为想要设定的内存大小,例如:
 
   memory_limit = 256M
 
  保存修改后的php.ini文件,并重启PHP服务,使修改生效。

2. 使用ini_set()函数:
  在PHP代码中可以使用ini_set()函数来设置内存大小,例如:
 
 
ini_set('memory_limit', '256M'); 
  这样会在当前脚本中将内存大小设定为256M。注意,这种方法只在当前脚本运行时生效,不会影响其他脚本或全局设置。

3. 通过.htaccess文件修改:
  如果你的服务器支持.htaccess文件,并且已启用了rewrite模块,可以在网站根目录下创建一个名为".htaccess"的文件,添加以下代码:
 
 
php_value memory_limit 256M 
  保存并上传该文件,然后重启PHP服务,修改将会生效。

4. 与服务器管理员或主机提供商联系:
  如果你无法直接修改配置文件或没有足够权限进行修改,你可以联系服务器管理员或主机提供商,请求他们帮助你修改PHP内存大小。他们可能会在服务器级别进行设置。

无论你选择哪种方法,修改PHP内存大小时要注意不能超过服务器或主机的允许范围,同时也要根据实际需要合理设置内存大小,以避免浪费资源或出现意外问题。同时,修改内存大小可能需要重启PHP服务或服务器才能生效。
#2
在Linux系统中,可以通过多种方法查看主机的序列号。以下是几种常见的方法:

1. 使用 dmidecode 命令
dmidecode 是一个用于获取DMI(Desktop Management Interface)信息的工具,它可以提供硬件的详细信息,包括序列号。

打开终端。
输入以下命令并按回车键执行:
sudo dmidecode -s system-serial-number
查看终端输出的序列号。
2. 使用 cat 命令查看文件
在某些Linux发行版中,主机的序列号可能存储在 /sys/class/dmi/id/product_serial 文件中。

打开终端。
输入以下命令并按回车键执行:
cat /sys/class/dmi/id/product_serial
查看终端输出的序列号。
3. 使用 lshw 命令
lshw 是一个硬件配置信息工具,它可以提供硬件的详细信息。

首先,确保已经安装了 lshw 工具。如果未安装,可以使用包管理器进行安装(例如,在基于Debian的系统上可以使用 sudo apt-get install lshw 命令安装)。
安装完成后,打开终端。
输入以下命令并按回车键执行:
sudo lshw -class system | grep serial
查看终端输出的序列号。
通过以上方法,你可以在Linux系统中方便地查看主机的序列号。每种方法都有其适用场景,可以根据实际情况选择合适的方法。
#3
Linux 系统 / DNAT SNAT MASQUERADE的区别
上次发布者 jvip_chen - 2024-12月-10 02:27 下午
DNAT、SNAT和MASQUERADE是网络地址转换(NAT)的三种主要技术,它们在Linux网络配置中有着不同的应用场景和功能。‌

DNAT(Destination Network Address Translation)
DNAT(目标网络地址转换)用于将外部网络的目标IP地址转换为内部网络的IP地址。其典型应用场景包括:

‌Web服务器‌:当外部用户访问一个配置在内部网络中的web服务器时,防火墙会将目标地址从其公网IP地址改为内网服务器的IP地址,从而实现外部用户对内网服务的访问。例如,命令iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.18.0.2:80会将所有目标端口为80的TCP请求转发到内网IP 172.18.0.2的80端口‌12。
SNAT(Source Network Address Translation)
SNAT(源网络地址转换)用于将内部网络的私有IP地址转换为公共IP地址,使得内部网络中的设备可以访问外部网络。其工作原理包括:

‌源地址转换‌:当内部设备向外部网络发送数据包时,SNAT会将数据包的源IP地址替换为公共IP地址,并将源端口号转换为随机端口号。这样,外部网络可以将响应数据包发送回公共IP地址和转换后的端口号,然后再通过SNAT将数据包转发到内部设备‌12。
‌命令示例‌:例如,命令iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 192.168.5.1会将10.8.0.0/24网段的所有数据包的源IP地址替换为192.168.5.1‌3。
MASQUERADE
MASQUERADE是一种特殊的SNAT技术,主要用于动态IP地址的环境。它会自动检测并替换出站数据包的源IP地址为当前接口的IP地址。其特点包括:

‌动态IP支持‌:MASQUERADE特别适用于动态获取IP地址的环境,如拨号连接或移动设备,因为它会自动检测并使用当前的公共IP地址进行转换‌12。
‌命令示例‌:例如,命令iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE会将10.8.0.0/24网段的所有出站数据包的源IP地址替换为接口eth0的IP地址‌3。
应用场景和区别
‌DNAT‌:主要用于外部用户访问内部服务,如web服务器。
‌SNAT‌:主要用于内部设备访问外部网络,实现私有IP到公共IP的转换。
‌MASQUERADE‌:适用于动态IP环境,自动检测并使用当前公共IP地址进行转换。
这些技术共同工作,确保内部网络的安全和外部访问的便利性,同时解决了IPv4地址不足的问题。
#4
VMware / Re: vmrun命令行的使用(VMWare虚拟机)
上次发布者 james19820515 - 2024-10月-07 05:54 下午
1.好玩意儿。
2.非必要不用命令行。
#5
Linux 系统 / Could not open a connection to...
上次发布者 jvip_chen - 2023-10月-31 11:39 上午
执行ssh-add时出现Could not open a connection to your authentication agent

在执行
ssh-add ~/.ssh/id_ras时发生此错,执行如下命令 
ssh-agent bash
然后再执行
ssh-add ~/.ssh/id_ras
即可。
#6
Linux 系统 / SSH自动登录config文件配置
上次发布者 jvip_chen - 2023-8月-28 06:53 上午
概述
之前说过可以使用 spawn 命令来自动登录服务器,但是仅仅是登录那么很方便,如果使用 scp 拷贝文件呢?是不是得使用最原始的 scp user@host:/xxx .,这样就不方便了。

配置服务端
将本机的 ~/.ssh/id_rsa.pub 文件配置到服务器的 ~/.ssh/authorized_keys 文件中。

使用 ssh-copy-id 进行上传,运行 ssh-copy-id xxx@0.0.0.0 会自动将公钥追加到 authorized_keys 文件中。

注意:.ssh 目录的权限和 authorized_keys 的权限分别是 700 和 600。

配置客户端
配置好服务端之后我们就可以使用 ssh user@host 直接登录服务器了,不需要输入密码,那么我们还得记住 user 和 host,还有更简单的方法吗?那当然啦。

配置 ~/.ssh/config 文件

直接显示我的配置内容

Host {name}
    HostName {host}
    User {user}
    IdentityFile ~/.ssh/id_rsa
Host {name}
    HostName {host}
    Port {port}
    User {user}
    IdentityFile ~/.ssh/id_rsa
注意空格和缩进

{name} 就是给服务器起一个别名,{port} 可以不写,默认22端口

配置完后,就可以使用 ssh {name} 直接登录服务器了,那么使用 scp 呢?直接使用 scp {name}:/xxx . 就可以了。
#7
代码管理-Git / gitlab备份与恢复
上次发布者 jvip_chen - 2023-8月-17 11:09 上午
前言
本文主要介绍gitlab安装完成之后,使用过程中的备份和恢复。安装教程可参考上方的Linux安装gitlab教程。备份两种方式:手动备份和定时备份

以下是本篇文章正文内容
一、更改配置文件
上文说到过gitlab的配置文件为/etc/gitlab下的gitalab.rb,把下列配置信息写入配置文件使其生效

vim /etc/gitlab/gitlab.rb
#修改如下:
gitlab_rails['manage_backup_path'] = true       
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"    //gitlab默认备份目录,如有需要可更改
gitlab_rails['backup_archive_permissions'] = 0644      //生成的备份文件权限
gitlab_rails['backup_keep_time'] = 604800              //默认备份保留天数为7天(这里是604800秒)
更改完成后重载配置文件

gitlab-ctl reconfigure
二、手动备份
可以手动执行如下命令进行手动备份,备份后文件如下:

gitlab-backup create
三、自动备份
编写备份脚本,结合crontab实施自动定时备份,比如每天2点备份一次

cd
cd bin/
vim gitlab_backup.sh

#!/bin/bash
/usr/bin/gitlab-rake gitlab:backup:create
然后加入到crontab中

0 2 * * * /bin/bash /root/bin/gitlab_backup.sh > /dev/null 2>&1

四、备份恢复
GItlab只能还原到与备份文件相同的gitlab版本。
假设在上面gitlab备份之前创建了test项目,然后不小心误删了test项目,现在就进行gitlab恢复操作:

1、停止相关数据连接服务

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
查看gitlab状态
gitlab-ctl status
2、通过之前的备份文件进行恢复(默认的是/var/opt/gitlab/backups)

Gitlab的恢复操作会先将当前所有的数据清空,然后再根据备份数据进行恢复

gitlab-backup restore force=yes
# 如果/var/opt/gitlab/backups/下有多个备份文件,可以执行下面命令指定恢复的目标
gitlab-backup restore force=yes BACKUP=1673231242_2023_01_09_15.5.4
最后再次启动Gitlab

gitlab-ctl start
恢复命令完成后,可以check检查一下恢复情况

gitlab-rake gitlab:check SANITIZE=true
然后稍等一会(如果启动gitlab后,访问出现500,这是因为redis等程序还没完全启动,等一会儿访问就ok了),再次登录Gitlab,就会发现之前误删除的test项目已经恢复了!

另外:Gitlab迁移与恢复一样,但是要求两个GitLab版本号一致。
#8
Linux Shell - 脚本中自动确认需要输入确认的命令
1、yum 命令
通过指定 -y 参数即可
yum -y  install xxx
2、其它命令
echo y | 执行的命令
#9
Vue开发 / 终极解决:Error: error:0308010C:dig...
上次发布者 jvip_chen - 2023-7月-17 04:09 下午
1、报错
启动vue项目,报错如下:
You cannot view this attachment.

2、报错原因
出现这个错误是因为 node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响.

在node.js V17以前一些可以正常运行的的应用程序,但是在 V17 版本可能会抛出这个异常。

3、解决方案
3.1版本降级,解决报错
尝试卸载Node.js 17+版本并重新安装Node.js 16+版本,然后再重新启动

这个方法,测试有效,但我推荐的是第二个办法。

3.2设置参数,解决报错
在执行运行项目命令之前,先运行这个命令:

Linux & Mac OS:
export NODE_OPTIONS=--openssl-legacy-provider
windows命令提示符:
set NODE_OPTIONS=--openssl-legacy-provider
这样就可以解决了,亲测有效。

唯一不足,是每次启动项目都要运行,所以,我们可以把它配置一下。也就是第三种方法。

3.3 修改配置文件,解决报错(推荐)
根据你的系统类型,选择一个上面的命令,如,我是Mac系统,我就用:
export NODE_OPTIONS=--openssl-legacy-provider
然后,找到项目的package.json文件,把自己对应的命令,加上&&,写到启动项目的配置里面(构建写不写都可以),即可。

例1:脚手架
"scripts": {
  "serve": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
  "build": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build"
},
例2:Vue-Element-Admin
"scripts": {
    "dev": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
//略...
  },
#10
Linux 系统 / appimage 错误dlopen(): error loa...
上次发布者 jvip_chen - 2023-7月-05 11:25 上午
运行appimage的时候,出现如下错误

dlopen(): error loading libfuse.so.2

AppImages require FUSE to run.
You might still be able to extract the contents of this AppImage
if you run it with the --appimage-extract option.
See https://github.com/AppImage/AppImageKit/wiki/FUSE
for more information

只要运行sudo apt install libfuse2就行