Centos8 系統Lnmp服務器環境搭建
Centos8 系統Lnmp服務器環境搭建
服務器環境 Centos8
[root@centos8 ~]# uname -a
Linux centos8 4.18.0-348.el8.x86_64 #1 SMP Tue Oct 19 15:14:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux# 更新軟件包列表
root@debian:~# dnf update
安裝信息
- PHP 版本8.2.27
https://www.php.net/distributions/php-8.2.27.tar.gz
- Nginx 版本 1.26.0
https://nginx.org/download/nginx-1.26.0.tar.gz
- Mariadb 版本 10.6.21
https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.6.21/source/mariadb-10.6.21.tar.gz
或
https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.6.21/bintar-linux-systemd-x86_64/mariadb-10.6.21-linux-systemd-x86_64.tar.gz
操作步驟
- 下載安裝包
# Mariadb下載wget -c https://mirrors.thzhost.com/mariadb/mariadb-10.6.21/bintar-linux-systemd-x86_64/mariadb-10.6.21-linux-systemd-x86_64.tar.gzwget -c https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.6.21/source/mariadb-10.6.21.tar.gz# PHP下載wget -c https://www.php.net/distributions/php-8.2.27.tar.gz# Nginx下載wget -c https://nginx.org/download/nginx-1.26.0.tar.gz
下面是AI列出的各个扩展和库文件的作用解析,通常这些库和开发包是用来编译 PHP 的不同功能模块或扩展的。
- gcc 和 gcc-c++
作用: GCC 是 GNU 编译器集合的缩写,是 Linux 下的主要编译器之一。gcc 用于编译 C 程序,gcc-c++ 用于编译 C++ 程序。在编译 PHP 或其他程序时,这两个工具是必不可少的。 - make
作用: make 是一个自动化构建工具,通常用于编译源代码时,自动根据依赖关系生成目标文件。在 PHP 编译过程中,make 会根据源代码的变化自动选择哪些文件需要重新编译。 - autoconf
作用: autoconf 用于自动生成配置脚本。在编译 PHP 或其他程序时,autoconf 会根据系统环境自动生成配置脚本,以便能够适配不同的系统。 - bzip2-devel
作用: 提供 bzip2 压缩工具的开发库。它允许 PHP 使用 bzip2 格式压缩和解压缩文件。 - libxml2-devel
作用: libxml2 是一个流行的 XML 解析库,libxml2-devel 提供开发所需的头文件和库文件。PHP 中的 XML 扩展依赖于这个库,用于处理 XML 数据。 - libpng-devel
作用: libpng 是一个用于操作 PNG 格式图像的库。libpng-devel 提供了开发用的头文件,PHP 的 GD 扩展和图像处理功能可能依赖此库来处理 PNG 图片。 - libjpeg-devel
作用: libjpeg 是一个处理 JPEG 图像的库,libjpeg-devel 提供了开发用的头文件。PHP 的 GD 扩展会用到这个库来处理 JPEG 格式的图像。 - libXpm-devel
作用: libXpm 是一个 X Pixmap 图像格式库,libXpm-devel 提供了开发用的头文件。PHP 的 GD 扩展也可能使用此库来处理 XPM 图像格式。 - libicu-devel
作用: libicu 是国际化和本地化的库,支持多种语言的字符编码转换和日期时间格式化。libicu-devel 提供开发所需的头文件。PHP 的 intl 扩展使用这个库来处理国际化问题,例如时区转换、数字格式化等。 - libmcrypt-devel
作用: libmcrypt 是一个提供加密算法的库。libmcrypt-devel 提供了开发所需的头文件。它通常被用来加密和解密数据,但需要注意,libmcrypt 已被许多现代库所取代,如 OpenSSL。 - libxslt-devel
作用: libxslt 是 XSLT(可扩展样式表语言转换)处理的库,libxslt-devel 提供开发所需的头文件。PHP 的 XSLT 扩展依赖此库,用于转换 XML 文档。 - re2c
作用: re2c 是一个快速的 C 语言正则表达式引擎,主要用于生成高效的正则表达式匹配代码。它被用于 PHP 的某些模块(如 mbstring)的编译。 - libzip-devel
作用: libzip 是用于处理 ZIP 文件格式的库,libzip-devel 提供了开发用的头文件。PHP 的 zip 扩展依赖此库来压缩和解压 ZIP 格式文件。 - curl-devel
作用: libcurl 是一个支持多种协议(如 HTTP、FTP 等)的数据传输库,curl-devel 提供了开发所需的头文件。PHP 的 curl 扩展依赖此库,允许 PHP 使用各种协议进行数据传输,尤其是 HTTP 请求。 - libssl-devel
作用: libssl 是 OpenSSL 加密库,提供加密算法、SSL/TLS 协议的实现。libssl-devel 提供开发所需的头文件,PHP 使用 OpenSSL 库来支持安全协议(如 HTTPS),以及加密和解密操作。 - libpng-devel (重复)
作用: 已经解释过,这个包提供支持 PNG 图像格式的库。重复出现,应该只是偶然。
总结
这些库和开发包都是在编译 PHP 时,启用各种功能或扩展所必须的。例如:
图像处理功能:libpng-devel、libjpeg-devel、libXpm-devel、libgd。
网络和加密功能:libcurl-devel、libssl-devel、libmcrypt-devel。
国际化和字符编码:libicu-devel、re2c。
文件处理功能:libzip-devel、bzip2-devel。
这些库的安装和配置能确保你在 PHP 环境中使用到各种扩展和功能。
# 安裝擴展
dnf groupinstall "Development Tools" # 安装开发工具集
dnf install -y gcc gcc-c++ make autoconf bzip2-devel libxml2-devel libpng-devel libjpeg-devel libXpm-devel libicu-devel libmcrypt-devel libxslt-devel re2c libzip-devel curl-devel libjpeg-devel libpng-devel libXpm-devel libxml2-devel libicu-devel libssl-devel libpng-devel libmcrypt-devel libcurl-devel libxslt-devel libjpeg-devel libpng-devel libzip-devel
這些安裝包大多數是開發過程中常用的工具和庫,特別是用於構建和編譯 PHP、網絡應用、數據庫、加密、圖像處理等多種功能的應用程序
dnf install epel-release和dnf update以便安装一些不在默认仓库中的包:
- 编译软件前先用户/用户组和工程目录构建(可以根据自己项目需求创建)
# 創建www用戶組 和www用戶(取消登錄權限)
groupadd www
useradd -s /sbin/nologin -M -g www www
# 創建web工程目錄和設定相關目錄權限
mkdir -p /home/wwwroot/default
chown -R www:www /home/wwwroot
mkdir -p /home/wwwlogs
chown -R www:www /home/wwwlogs
- 先安裝PHP
# 解壓php安裝包
tar -zxvf php-8.2.18.tar.gz
# 進入php安裝目錄
cd php-8.2.18
# 構建工程
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/conf.d --enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --with-jpeg --with-freetype --with-zlib --enable-xml --disable-rpath --enable-bcmath --with-curl --enable-mbregex --enable-mbstring --enable-gd --with-openssl --with-mhash --enable-sockets --with-zip --enable-opcache --with-webp --disable-fileinfo# 指定執行編譯,指定操作方式-并發執行,提高執行效率
make -j $(nproc)
# 安裝
make install
這些是用於構建和安裝 PHP 的 ./configure 命令參數。每個參數控制 PHP 的某些特性或擴展功能。以下是這些參數的解釋:
-
構建php工程參數説明
- –prefix=/usr/local/php
指定 PHP 的安裝目錄。PHP 將被安裝到 /usr/local/php 目錄中。 - –with-config-file-path=/usr/local/php/etc
設定 PHP 配置文件(php.ini)的存放路徑。此處將配置文件存放於 /usr/local/php/etc 目錄。 - –with-config-file-scan-dir=/usr/local/php/conf.d
設定 PHP 用來載入額外配置的目錄。這個參數指定 PHP 在啟動時會從 /usr/local/php/conf.d 目錄載入其他 .ini 配置文件。 - –enable-fpm
啟用 PHP 的 FastCGI Process Manager (FPM)。這使得 PHP 可以作為 FastCGI 進程池來處理 HTTP 請求,通常用於 Web 伺服器,如 Nginx 和 Apache。 - –with-fpm-user=www
設定 FPM 進程運行的用戶。這裡設為 www 用戶,這是常見的 Web 伺服器用戶。 - –with-fpm-group=www
設定 FPM 進程運行的用戶組。這裡設為 www 組。 - –enable-mysqlnd
啟用 MySQL Native Driver (mysqlnd),這是一個 PHP 用來與 MySQL 進行通信的高效擴展,取代了原有的 MySQL 客戶端庫。 - –with-mysqli=mysqlnd
使用 mysqlnd 驅動來支持 MySQL 的 mysqli 擴展。這使得 PHP 可以更高效地與 MySQL 數據庫互動。 - –with-pdo-mysql=mysqlnd
使用 mysqlnd 驅動來支持 MySQL 的 PDO(PHP Data Objects)擴展。PDO 提供了一個統一的方式來訪問不同類型的數據庫。 - –with-pear
啟用 PEAR(PHP Extension and Application Repository),這是一個 PHP 擴展和應用程序庫,允許安裝 PHP 類庫和工具。 - –with-jpeg
啟用 JPEG 圖像處理支持。PHP 將能夠處理 JPEG 格式的圖像,通常與 GD 擴展一起使用。 - –with-freetype
啟用 FreeType 字體支持。這使得 PHP 能夠處理使用 FreeType 字體庫的圖像操作。 - –with-zlib
啟用 zlib 支持,用於處理壓縮文件,像是 .gz 格式的文件。它也是很多 Web 應用程序中常見的壓縮庫。 - –enable-xml
啟用 XML 支持。這使得 PHP 能夠處理 XML 文件和數據,並支持各種 XML 相關的函數和擴展。 - –disable-rpath
禁用 rpath,這通常是與動態鏈接庫相關的一個設置。這可以防止在系統中安裝 PHP 時不必要地設置庫的搜尋路徑。 - –enable-bcmath
啟用 BCMath 擴展,這是一個用於高精度數學計算的庫。它支持大數字運算,對於需要處理非常大數字的應用很有用。 - –with-curl
啟用 cURL 支持。cURL 是一個強大的命令行工具和庫,支持多種協議(如 HTTP、FTP、SMTP 等),使得 PHP 可以發送 HTTP 請求並與遠程伺服器交互。 - –enable-mbregex
啟用多字節字符正則表達式(mbregex)支持,這對於處理包含非 ASCII 字符(如中文、日文等)的字符串非常有用。 - –enable-mbstring
啟用多字節字符串擴展(mbstring),這是處理多字節字符編碼(如 UTF-8、EUC-JP 等)的常用工具。 - –enable-gd
啟用 GD 圖像處理庫。GD 是一個用來處理圖像的庫,支持創建、修改圖像文件,支持多種格式,如 JPEG、PNG、GIF 等。 - –with-openssl
啟用 OpenSSL 擴展,這是支持 SSL 和 TLS 加密的庫,使得 PHP 可以進行加密操作和安全的網絡通信。 - –with-mhash
啟用 MHASH 擴展,這是用於加密和哈希計算的庫,支持多種哈希算法。 - –enable-sockets
啟用 Socket 擴展,這使得 PHP 可以進行低級的網絡通信,並支持 TCP/IP 協議、UDP 等。 - –with-zip
啟用對 ZIP 文件的支持,使 PHP 能夠創建、讀取和修改 .zip 壓縮文件。 - –enable-opcache
啟用 OPCache。OPCache 是 PHP 的一個字節碼緩存機制,能夠提高 PHP 腳本的執行效率,減少解析和編譯的時間。 - –with-webp
啟用 WebP 圖像格式支持。WebP 是一種新型的圖片格式,具有更好的壓縮性能。 - –disable-fileinfo
禁用 Fileinfo 擴展。Fileinfo 擴展通常用於檢測文件類型,禁用此擴展可減少 PHP 的啟動時間和占用的內存。
總結:
這些參數的組合設置了 PHP 安裝的各種功能和擴展,包括數據庫支持、圖像處理、加密、網絡通信等功能。根據你的需求,可以選擇啟用或禁用某些擴展來構建一個適合你的環境的 PHP
- –prefix=/usr/local/php
-
配置
php-fpm.conf
/usr/local/php/etc/php-fpm.conf ,對應目錄中沒有該配置文件的,需要手動創建
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice[www]
listen = /tmp/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 40
pm.start_servers = 20
pm.min_spare_servers = 20
pm.max_spare_servers = 40
pm.max_requests = 1024
pm.process_idle_timeout = 10s
request_terminate_timeout = 1000
request_slowlog_timeout = 0
slowlog = var/log/slow.log
- 配置php服務
nano /etc/systemd/system/php-fpm.service
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target[Service]
Type=simple
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=false[Install]
WantedBy=multi-user.target
- 配置環境變量
nano /etc/profile
PATH=$PATH:/usr/local/php/bin:/usr/local/mariadb/bin
export PATH
执行 命令 source /etc/profile 使配置生效
执行完可通过echo $PATH 查看
- 安裝Nginx
# 解壓php安裝包
tar -zxvf nginx-1.26.0.tar.gz
# 進入php安裝目錄
cd nginx-1.26.0
# 構建工程
./configure \
--prefix=/usr/local/nginx \
--user=www \
--group=www \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--error-log-path=/usr/local/nginx/error.log \
--http-log-path=/usr/local/nginx/access.log \
--pid-path=/usr/local/nginx/nginx.pid \
--lock-path=/usr/local/nginx/nginx.lock \
--http-client-body-temp-path=/usr/local/nginx/client_temp \
--http-proxy-temp-path=/usr/local/nginx/proxy_temp \
--http-fastcgi-temp-path=/usr/local/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp \
--http-scgi-temp-path=/usr/local/nginx/scgi_temp \
--with-file-aio \
--with-threads \
--with-http_addition_module \
--with-http_auth_request_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_mp4_module \
--with-http_random_index_module \
--with-http_realip_module \
--with-http_secure_link_module \
--with-http_slice_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_v2_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--with-stream_realip_module \
--with-stream_ssl_module \
--with-stream_ssl_preread_module# 指定執行編譯,指定操作方式-并發執行,提高執行效率
make -j $(nproc)# 安裝
make install
- 配置nginx服務信息
nano /etc/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=false[Install]
WantedBy=multi-user.target
- nginx.conf配置文件
注意修改nginx.conf 前,先備份一下nginx.conf。cp /usr/local/nginx/nginx.conf /usr/local/nginx/nginx.conf.default
注意: 如果nginx.conf 沒有enable-php.conf文件,創建一個enable-php.conf作爲php-fpm的通用配置文件,内容配置如下
enable-php.conf 文件通用配置
location ~ [^/]\.php(/|$){try_files $uri =404;fastcgi_pass unix:/tmp/php-cgi.sock;fastcgi_index index.php;include fastcgi.conf;}
nginx.conf文件配置
user www www;worker_processes auto;
worker_cpu_affinity auto;#error_log /home/wwwlogs/nginx_error.log crit;#pid /usr/local/nginx/logs/nginx.pid;#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;events{use epoll;worker_connections 51200;multi_accept off;accept_mutex off;}http{include mime.types;default_type application/octet-stream;server_names_hash_bucket_size 128;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 50m;sendfile on;sendfile_max_chunk 512k;tcp_nopush on;keepalive_timeout 60;tcp_nodelay on;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 256k;gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.1;gzip_comp_level 2;gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;gzip_vary on;gzip_proxied expired no-cache no-store private auth;gzip_disable "MSIE [1-6]\.";#limit_conn_zone $binary_remote_addr zone=perip:10m;##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.server_tokens off;access_log off;server{listen 80 default_server reuseport;#listen [::]:80 default_server ipv6only=on;server_name _;index index.html index.htm index.php;root /home/wwwroot/default; # 把網站根目錄放置在/home/wwwroot目錄下面#location /hkpma {# auth_basic "HTTP Basic Authentication";# auth_basic_user_file /home/default.htpasswd;#}#error_page 404 /404.html;# Deny access to PHP files in specific directory#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }include enable-php.conf; # 需要在 nginx.conf同級目錄下創建一個enable-php.conf 配置文件location /nginx_status{stub_status on;access_log off;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;}location ~ .*\.(js|css)?${expires 12h;}location ~ /.well-known {allow all;}location ~ /\.{deny all;}access_log /home/wwwlogs/access.log;}
include vhost/*.conf; # 可以創建一個vhost目錄,用來放置多站點的server配置文件
}
- 安裝Mariadb
安裝前準備相關目錄
# 創建mariadb分組和用戶
groupadd mariadb
useradd -s /sbin/nologin -M -g mariadb mariadbmkdir -p /home/mariadb
chown -R mariadb:mariadb /home/mariadb
# 加壓 mariadb-10.6.21-linux-systemd-x86_64.tar.gz 並進入加壓后的mariadb 目錄
tar -zxvf mariadb-10.6.21.tar.gz
cd mariadb-10.6.21
執行安裝Mariadb
# 構建工程
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \
-DMYSQL_DATADIR=/home/mariadb \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DMYSQL_UNIX_ADDR=/tmp/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci#編譯
make -j $(nproc)#安裝
make install#複製附件到指定目錄
cp /usr/local/mariadb/support-files/mysql.server /etc/init.d/mariadb
chmod 755 /etc/init.d/mariadb
- 初始化數據庫
注意:執行下面命令是,需要確保
/etc/my.cnf的文件存在。本操作教程指定安裝數據庫目錄放置在/home/mariadb目錄下
# 修改/usr/local/mariadb 用戶組為mariadb
# 執行初始化命令
/usr/local/mariadb/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mariadb --datadir=/home/mariadb --user=mariadb
如果缺少
/etc/my.cnf,拷貝創建一份my.cnf文件
[client]
#password = your_password
port = 3306
socket = /tmp/mariadb.sock[mysqld]
character-set-server=utf8mb4
sql-mode=NO_ENGINE_SUBSTITUTIO
port = 3306
socket = /tmp/mariadb.sock
user = mariadb
basedir = /usr/local/mariadb
datadir = /home/mariadb
log_error = /home/mariadb/mariadb.err
pid-file = /home/mariadb/mariadb.pid
skip-external-locking
key_buffer_size = 128M
max_allowed_packet = 256M
table_open_cache = 4096
sort_buffer_size = 16M
net_buffer_length = 8K
read_buffer_size = 32M
read_rnd_buffer_size = 16M
myisam_sort_buffer_size = 128M
thread_cache_size = 64
query_cache_type = 0
tmp_table_size = 64Mexplicit_defaults_for_timestamp = true
#skip-networking
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535log-bin=mysql-bin
binlog_format=mixed
server-id = 1
expire_logs_days = 10default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_buffer_pool_instances =8
innodb_data_home_dir = /home/mariadb
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /home/mariadb
innodb_buffer_pool_size = 8G
innodb_log_file_size = 2G
innodb_log_buffer_size = 64
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 60
back_log = 128
[mysqldump]
quick
max_allowed_packet = 16M[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 2M
read_buffer = 2M
write_buffer = 2M[mysqlhotcopy]
interactive-timeout
- 配置Mariadb服務
nano /etc/systemd/system/mariadb.service
[Unit]
Description=MariaDB Server
After=network.target syslog.target[Service]
Type=forkingExecStart=/etc/init.d/mariadb start
ExecStop=/etc/init.d/mariadb stop
ExecReload=/etc/init.d/mariadb reloadRestart=no
PrivateTmp=false[Install]
WantedBy=multi-user.target
安裝完mariadb數據后,需要執行mariadb-secure-installation 刪除mariadb一下默認行爲
mariadb-secure-installation
mariadb-secure-installation是MariaDB的一个脚本,用于执行安全性相关的操作和设置。它会引导用户完成一系列的步骤,以确保MariaDB数据库服务器的安全性。这些步骤通常包括:
设置root密码:您将被要求设置root用户的密码。这是MariaDB的超级用户账户,具有最高权限。
删除匿名用户:这个步骤将删除具有空用户名的匿名用户账户。这些账户通常是安全风险,因为它们允许未经身份验证的用户访问数据库。
禁用远程root登录:禁用root用户通过远程连接登录MariaDB。这样可以减少潜在的安全风险。
删除测试数据库:删除默认情况下安装的测试数据库。这些数据库可能包含一些示例数据,可能会成为潜在的安全漏洞。
重新加载权限表:重新加载权限表,以确保新的权限设置立即生效。
这些步骤可以提高MariaDB服务器的安全性,并减少潜在的安全风险。执行mariadb-secure-installation命令后,按照提示逐步完成这些步骤即可。
以下是執行mariadb-secure-installation過程
root@debian:~/mariadb-10.6.21# mariadb-secure-installationNOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDBSERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
# 初始化安裝,root密碼爲空,可以直接按回車鍵
Enter current password for root (enter for none):
OK, successfully used password, moving on...Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.You already have your root account protected, so you can safely answer 'n'.
# 可以直接按"n"
Switch to unix_socket authentication [Y/n] n... skipping.You already have your root account protected, so you can safely answer 'n'.
# 是否設置root賬號密碼,按Y,輸入自己的密碼 如aa@123456........
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..... Success!By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
# 默認有個匿名用戶賬號,需要刪除
Remove anonymous users? [Y/n] Y... Success!Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
# 是否禁止root賬號遠程登錄,按Y禁止,按n不禁止
Disallow root login remotely? [Y/n] n... skipping.By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
# 默認有個test數據庫,需要刪除
Remove test database and access to it? [Y/n] Y- Dropping test database...... Success!- Removing privileges on test database...... Success!Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
# 確定保存相關配置嗎 確認Y保存
Reload privilege tables now? [Y/n] Y... Success!
# 完成所有配置
Cleaning up...All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.Thanks for using MariaDB!
-安裝mariadb擴展mroonga
apt install -y libgroonga-dev
apt install -y groonga-normalizer-mysql
https://packages.groonga.org/source/mroonga/mroonga-latest.tar.gz
./configure \--with-mysql-source=/root/mariadb-10.6.17 \--with-mysql-config=/usr/local/mariadb/bin/mysql_config \--with-default-tokenizer=TokenBigramSplitSymbolAlphaDigitmake -j $(nproc)make install
phpmyadmin 無法登錄數據庫
PHPmyadmin hy000 2002
phpmyadmin提示mysqli_
real_connect(): (HYO00/2
002): No such file or dire
ctory错误的解决办法
phpmyadmin上传到网站目录后提示解决phpmyadmin mysqli_real_connect():
(HYO00/2002): No such file or directory的错误,解决方法把phpmyadmin目录中的配置文件
config.sample.inc.php改成config.inc.php打开编辑config.inc.php
找到:
c f g [ ′ S e r v e r s ′ ] [ cfg['Servers'][ cfg[′Servers′][i][‘host’] = ‘localhost’;改成:
c f g [ ′ S e r v e r s ′ ] [ cfg['Servers'][ cfg[′Servers′][i]['host] = ‘127.0.0.1’;
再次刷新页面就不会出现mysqli_real_connect():(HYO00/2002): No such file or directory的错误提示了。
- 服務器管理
# php 服務
systemctl status php-fpm
systemctl enable php-fpm
systemctl start php-fpm
systemctl reload php-fpm
systemctl stop php-fpm
# nginx 服務
systemctl status nginx
systemctl enable nginx
systemctl start nginx
systemctl reload nginx
systemctl stop nginx
# mariadb 服務
systemctl status mariadb
systemctl enable mariadb
systemctl start mariadb
systemctl reload mariadb
systemctl stop mariadb 相关文章:
Centos8 系統Lnmp服務器環境搭建
Centos8 系統Lnmp服務器環境搭建 服務器環境 Centos8 [rootcentos8 ~]# uname -a Linux centos8 4.18.0-348.el8.x86_64 #1 SMP Tue Oct 19 15:14:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux# 更新軟件包列表 rootdebian:~# dnf update安裝信息 PHP 版本8.2.27 https://ww…...
产教融合|暴雨技术专家执裁江苏省职业院校技能大赛
3月28-30日,由江苏省教育厅、省发改委、省工信厅等15家单位主办的2025年江苏省职业院校技能大赛网络系统管理赛项如期举办。此次赛事吸引了全省52支参赛队伍、156名选手踊跃参与,参赛人数再创新高。 暴雨信息技术专家李明宇作为此赛项的往届省赛冠军&am…...
BUUCTF-web刷题篇(6)
15.PHP 知识点: ①__wakeup()//将在反序列化之后立即调用(当反序列化时变量个数与实际不符是会绕过)我们可以通过一个cve来绕过:CVE-2016-7124。将Object中表示数量的字段改成比实际字段大的值即可绕过wakeup函数。条件:PHP5<…...
AIP-203 域行为文档
编号203原文链接AIP-203: Field behavior documentation状态批准创建日期2018-07-17更新日期2018-07-17 在定义protocol buffer中的域时,按惯例要向用户解释域行为的某些方面(例如域是必需的还是可选的)。此外,让其他工具理解域行…...
在 Cloud Run 上使用 Gemini API 构建聊天应用
李升伟 编译 (🎨 封面由 Gemini 中的 Imagen 3 生成!) 欢迎来到我的谷歌AI工具构建系列博客!本文将带您创建一个由Gemini驱动并托管在Cloud Run上的简易聊天应用。如果您正在探索大语言模型或希望将AI集成到网页应用中,那么您来…...
周总结aa
上周学习了Java中有关字符串的内容,与其有关的类和方法 学习了static表示静态的相关方法和类的使用。 学习了继承(extends) 多态(有继承关系,有父类引用指向子类对象) 有关包的知识,final关键字的使用,及有…...
31天Python入门——第17天:初识面向对象
你好,我是安然无虞。 文章目录 面向对象编程1. 什么是面向对象2. 类(class)3. 类的实例关于self 4. 对象的初始化5. __str__6. 类之间的关系继承关系组合关系 7. 补充练习 面向对象编程 1. 什么是面向对象 面向对象编程是一种编程思想,它将现实世界的概念和关系映…...
计算机视觉准备八股中
一边记录一边看,这段实习跑路之前运行完3DGAN,弄完润了,现在开始记忆八股 1.CLIP模型的主要创新点: 图像和文本两种不同模态数据之间的深度融合、对比学习、自监督学习 2.等效步长是每一步操作步长的乘积 3.卷积层计算输入输出…...
【C语言】文件操作(2)
一、文件的随机读写 在前面我们学习了文件的顺序读写的函数,那么当我们要读取某个指定位置的内容的时候,是否只能顺序的读取到这个内容?还有在对文件进行输入的时候,需要对指定的位置进行写入,那么此时应该怎么办呢&a…...
CCCC天梯赛L1-094 剪切粘贴
题目链接: 字符串函数: 1、截取字符串: //起始位置为3,结束位置为5string s "aabcdefg";//下标从0开始 [从开始位置,结束位置]string sub s.substr(3,3);//输出cde, 有返回值string//并且原字符串不改变, s"aab…...
C语言:多线程
多线程概述 定义 多线程是指在一个程序中可以同时运行多个不同的执行路径(线程),这些线程可以并发或并行执行。并发是指多个线程在宏观上同时执行,但在微观上可能是交替执行的;并行则是指多个线程真正地同时执行&…...
livekit ICE连接失败的一些总结
在使用livekit做的项目过程中碰到了一些ICE连接失败的问题, 一个时在同网段的局域网下 ,livekti服务和客户端不能联通,后来发现是服务端是多网卡,通过网络抓包才知道服务端在stun binding的时候使用了错误的网卡,在co…...
Python神经网络1000个案例算法汇总
【2025最新版】Python神经网络优化1000个案例算法汇总(长期更新版) 本文聚焦神经网络、优化算法,神经网络改进,优化算法改进,优化算法优化神经网络权重、超参数等,现在只需订阅即可拥有,简直是人工智能初学者的天堂。…...
某地81栋危房自动化监测试点项目
1. 项目简介 房屋进入老龄化阶段后,结构安全风险越来越大。近10年来,每年都会产生房屋倒塌人员伤亡的重大安全事故。调研分析显示,老旧房屋结构安全风险管理的有效路径为,通过“人防技防”的组合模式,对房屋安全风险进…...
远程装个Jupyter-AI协作笔记本,Jupyter容器镜像版本怎么选?安装部署教程
通过Docker下载Jupyter镜像部署,输入jupyter会发现 有几个版本,不知道怎么选?这几个版本有什么差别? 常见版本有: jupyter/base-notebookjupyter/minimal-notebookjupyter/scipy-notebookjupyter/datascience-notebo…...
python文件的基本操作和文件读写
目录 文件的基本操作 文件读写 文件的基本操作 Python 中对文件的基本操作主要包括打开文件、读取文件、写入文件和关闭文件等操作。下面是一个简单的示例: 打开文件: file open(example.txt, r) # 使用 open() 函数打开一个名为 example.txt 的文…...
山东大学软件学院项目创新实训开发日志(4)之中医知识问答数据存储、功能结构、用户界面初步设计
目录 数据库设计: 功能设计: 用户界面: 数据库设计: --对话表 (1个对话包含多条消息) CREATE TABLE conversations ( conv_id VARCHAR(36) PRIMARY KEY, -- 对话ID user_id VARCHAR(36) NOT NULL, -- 所属用户 title VARCHAR(100), -- 对话…...
20.思科交换机二层链路聚合的详细配置命令解析
思科交换机二层链路聚合的详细配置命令解析 一、PAgP协议的配置SW1的配置SW2的配置二、LACP标准协议三、配置聚合组的带宽和速率四、确保所有接口的双工模式和速率一致五、故障排除和监控在Cisco设备上配置链路聚合(也称为端口通道或EtherChannel)可以增强网络连接的带宽和可…...
【FreeRtos】随手记录想法和DeepSeek的交流
纯记录个人RTOS学习过程和DeepSeek的交流,或记录一些学习过程中奇怪的想法(也会喂给deepseek哈哈) 2025/3/31 1. prvCreateTask在干啥? Question prvTaskCreate这个函数做了什么:分配内存,首先会判断栈…...
【多线程】单例模式和阻塞队列
目录 一.单例模式 1. 饿汉模式 2. 懒汉模式 二.阻塞队列 1. 阻塞队列的概念 2. BlockingQueue接口 3.生产者-消费者模型 4.模拟生产者-消费者模型 一.单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,其核心思想是确保…...
Qt5.14.2+Cmake使用mingw64位编译opencv4.5成功图文教程
一、下载安装相关编译环境软件 1.1 Python3.8:安装路径:C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32 安装包:python3.8.exe 1.2 QT5.14.2:安装路径:C:\Qt\Qt5.14.2 1.3 opencv4.5:解压路径D:\o…...
Transformer习题
(1) 自注意力机制的特点: 并行计算:可同时处理序列中所有位置的关联,避免RNN的时序依赖问题。长距离依赖建模:直接捕捉序列中任意两个元素的关系,不受距离限制。动态权重分配:通过查询(Query&a…...
Mamba4D阅读
CVPR 2025 创新 基于transformer的4D主干由于其二次复杂度而通常存在较大的计算成本,特别是对于长视频序列。 开发了帧内空间Mamba模块,建立时空相关性。 GPU占用和速度很有优势。 代码还没发。 Pipeline 输入点云序列,根据超参数构建点管…...
uWebSockets开发入门
一、常用C++ WebSocket开源库 一些常用的 C++ WebSocket 开源库,它们支持 WebSocket 协议的实现,适用于客户端或服务器端开发。 1. Boost.Beast (推荐) 特点:基于 Boost.Asio 的高性能库,支持 HTTP/WebSocket,属于 Boost 官方库的一部分,稳定且跨平台。 适用场景:需要高…...
x265不同preset级别控制的编码参数与编码性能影响
目录 x265中preset 实验preset效果 写在最后 x265中preset 定义:preset是x265中用于平衡编码速度与压缩效率的核心参数。通过预定义的多组编码参数组合,用户无需手动调整复杂选项即可快速选择合适的编码模式。preset控制的参数(具体参数含义解析可参考专栏中相关博客)pr…...
Qt图形化界面为何总被“冷落“?
在Qt开发者的IDE中,Qt Designer总像一个被遗忘的角落——即便它有着直观的拖拽式界面设计功能。通过分析GitHub上超过5000个Qt项目发现,仅有17%的项目使用.ui文件构建界面。这个数据背后,隐藏着开发者群体对GUI构建方式的集体选择。我们不禁要…...
手工排查后门木马的常用姿势
声明!本文章所有的工具分享仅仅只是供大家学习交流为主,切勿用于非法用途,如有任何触犯法律的行为,均与本人及团队无关!!! 1. 检查异常文件 (1)查找最近修改的文件 # 查…...
算法导论(动态规划)——简单多状态
算法思路(17.16) 状态表示: 在处理线性动态规划问题时,我们可以通过“经验 题目要求”来定义状态表示。通常有两种选择: 以某个位置为结尾的情况;以某个位置为起点的情况。 本题中,我们选择更常…...
Linux 部署 rocketmq centos7
mq部署方案 1、rocketmq 顺序消费记录 一个master ,一个 brocker ,多个group ,多个topic,采用集群消费模式。 注意 一个group 对应一个 topic。 生产者 和 消费者 可以有多个,但是 主题和分组 都是一对一的。这样保证…...
LeetCode 438. 找到字符串中所有字母的异位词
438. 找到字符串中所有字母的异位词 题目描述 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 输入输出示例及数据范围 思路 这道题的思路其实很简单,就是一个滑动窗口的裸题&a…...
