分类目录归档:未分类

Ubuntu22.04安装PHP版本

摘:https://devpress.csdn.net/linux/62ee9179c6770329307f3ca0.html

安装多个 PHP 版本的最简单方法是使用来自 Debian 开发人员 Ondřej Surý 的 PPA。要添加此 PPA,请在终端中运行以下命令。如果要从 PPA 安装软件,则需要 software-properties-common 包。它会自动安装在 Ubuntu 桌面上,但可能会在您的 Ubuntu 服务器上丢失。

sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update

SURY 存储库包含 PHP 8.1、8.0、7.4、7.3、7.2、7.1、7.0 和 PHP 5.6。由于 PHP 的最新稳定版本是 8.0,但许多网站仍然需要 PHP 7。您可以在系统上安装任何所需的 PHP 版本。

安装PHP8.1

sudo apt-get install php8.1 php8.1-fpm
sudo apt-get install php8.1-mysql php8.1-mbstring php8.1-xml php8.1-gd php8.1-curl

安装 PHP 7.2:

现在您可以通过执行以下命令在 Ubuntu 上安装PHP7.2:

sudo apt-get install php7.2 php7.2-fpm
sudo apt-get install php7.2-mysql php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl

如果您在 Ubuntu 22.04 上安装了多个 PHP 版本,您可以选择将其中一个版本设为默认 PHP 版本。

要列出可用版本,请运行以下命令:

sudo update-alternatives --config php

第 5 步:卸载 PHP 版本

如果不再需要任何 PHP 版本,可以将其从系统中删除。这将释放磁盘空间以及系统安全性。

要卸载任何 PHP 版本,请运行以下命令:

sudo apt-get remove php5.6
sudo apt-get remove php5.6-*

CMake文件安装方式

install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.h DESTINATION include)
install(DIRECTORY Common OS_Common RTSPClient RTSPServer Sock Util  DESTINATION include PATTERN *.cpp EXCLUDE)
install(TARGETS ${PROJECT_NAME} DESTINATION lib RUNTIME DESTINATION bin)

Live555的代码编译及库文件安装位置

#!/bin/bash
path_current=`pwd`
path_script=$(cd "$(dirname "$0")"; pwd)

export CPLUS_INCLUDE_PATH=${path_script}/../openssl/unix/include:$CPLUS_INCLUDE_PATH
export C_INCLUDE_PATH=${path_script}/../openssl/unix/include:$C_INCLUDE_PATH
export LD_LIBRARY_PATH=${path_script}/../openssl/unix/lib:$LD_LIBRARY_PATH
export LIBRARY_PATH=${path_script}/../openssl/unix/lib:$LIBRARY_PATH

rm -rf ${path_script}/unix

rm -rf ${path_script}/build
mkdir ${path_script}/build && \
  cd ${path_script}/live555-2c92a57/ && \
  ./genMakefiles linux-no-openssl &&\
  make clean &&\
  make && \
  make install DESTDIR=${path_script}/unix &&\
  mv ${path_script}/unix/usr/local/* ${path_script}/unix/ && \
  rm -rf ${path_script}/unix/usr
  
  
核心点:
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/ssl/include
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/ssl/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ssl/lib
make install DESTDIR=${path_script}/unix &&\

比特大陆的双网口动静态IP配置

linaro@bm1684:~$ cat /etc/network/interfaces.d/eth0
auto eth0
iface eth0 inet dhcp
iface eth0 inet static
      address 192.168.4.168
      netmask 255.255.254.0

linaro@bm1684:~$ cat /etc/network/interfaces.d/eth1
auto eth1
iface eth1 inet static
      address 192.168.4.169
      netmask 255.255.254.0
      gateway 192.168.4.1 这个可能会干扰上网
      dns-nameservers 192.168.4.1

CLion2019.3.x远程调试

因为调试比特大陆的盒子,故玩一波远程调试。
1.在Toolchains新增一个工具链。

2.在Deployment找到上图上添加的RemoteHost的配置。

3.在CMake的选项,Toolchain的选项中,选择之前的Remotehost配置。

在构建选项中,选择se5的选项,至此完成远程调试的全部配置。

Ubuntu关闭休眠模式

查看休眠模式的情况。

systemctl status sleep.target
如果显示sleep的状态为loaded,表示休眠是处于开启状态。

systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
关闭休眠模式。

systemctl status sleep.target查看是否休眠

安装lightdm后,无法快捷键锁屏问题

因为向日葵必须是lightdm环境,故自安装lightdm后,发现无法快捷健锁屏,可有以两种方法解决。

1.切换回gdm3的桌面环境。

sudo dpkg-reconfigure gdm3

2.在系统中增加自定义快捷键。

Name: dm-tool lock
Command: dm-tool lock
ShortCut: Window+L

Qt连接远程数据库的优化方案

Qt内部提供的MySQL连接方案是内部插件QMYSQL的,如果在连接配置不当时长时间空闲时,会导致线程琐死,主要原因mysql_stmt_prepare这个函数阻塞了线程,导致一直不返回.
默认的情况下,以下参数都是0,我们需要设置一个时间,让其超时返回.
MYSQL_OPT_RECONNECT=1;
MYSQL_OPT_CONNECT_TIMEOUT=10;
MYSQL_OPT_READ_TIMEOUT=10;
MYSQL_OPT_WRITE_TIMEOUT=10
此外,我们还需要增加一个定时轮循的健康检查函数,避免长时间空闲而自动断开,从而导致访问超时重连的异常处理.
健康检查的SQL语句是: select 1 as result;这个SQL不涉及表操作,性能很高,能正确返回1即可.

db = QSqlDatabase::addDatabase(driver, connectionName);
        QString hostName = QKgSettings::value("Mysql/hostName", "127.0.0.1").toString();
        int port = QKgSettings::value("Mysql/port", 3306).toInt();
        QString userName = QKgSettings::value("Mysql/userName", "test").toString();
        QString password = QKgSettings::value("Mysql/password", "123").toString();
        QString database = QKgSettings::value("Mysql/database", "woall").toString();
        db.setConnectOptions("MYSQL_OPT_RECONNECT=1;MYSQL_OPT_CONNECT_TIMEOUT=10;MYSQL_OPT_READ_TIMEOUT=10;MYSQL_OPT_WRITE_TIMEOUT=10");
        db.setHostName(hostName);
        db.setPort(port);
        db.setUserName(userName);
        db.setPassword(password);
        db.setDatabaseName(database);
        if(!db.open()) {
            return db;
        }