Linux装配—15.LAMP源码安装
安装过程
- 1.安装依赖
- 2.安装mysql
- 3.安装apache
- 4.安装php
安装依赖
- 包组
| Development Tools
| Desktop
| Desktop Platform
| Desktop Platform Development
[root@wg ~]# yum -y groupinstall "Development Tools"
[root@wg ~]# yum install -y epel-release // oniguruma正则表达式库,需要epel下载
[root@wg ~]# yum -y install pcre-devel openssl-devel expat-devel libxml2-devel \
> sqlite-devel libcurl-devel ncurses-devel libaio-devel
> oniguruma-devel cmake screen
安装MySQL
[root@wg opt]# wget http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-boost-5.7.35.tar.gz
[root@wg opt]# tar -xvf mysql-5.7.35.tar.gz
[root@wg local]# mkdir -p /data/mysql/3306/{data,log,tmp,mysqld}
[root@wg local]# mkdir /etc/mysql.conf
[root@wg local]# useradd -r -s /sbin/nologin lamp
[root@wg local]# chown -R lamp:lamp /data/mysql/
[root@wg local]# chmod -R 755 /data/mysql/
[root@wg mysql-5.7.35]# screen -S mysql5.7 // 最好4G以上内存执行,我这里开了虚拟端口
[root@wg mysql-5.7.35]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DEXTRA_CHARSETS=all \
> -DDEFAULT_CHARSET=utf8mb4 \
> -DDEFAULT_COLLATION=utf8mb4_general_ci \
> -DSYSCONFDIR=/data/mysql/3306/data \
> -DSYSTEMD_PID_DIR=/data/mysql/3306/mysqld \
> -DMYSQL_UNIX_ADDR=/data/mysql/3306/tmp/mysql.sock \
> -DSYSCONFDIR=/etc/mysql.conf \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DWITH_MYISAM_STORAGE_ENGINE=1 \
> -DWITH_FEDERATED_STORAGE_ENGINE=1 \
> -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
> -DWITH_PARTITION_STORAGE_ENGINE=1 \
> -DENABLED_LOCAL_INFILE=ON \
> -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
> -DWITH_BOOST=boost -DWITH_SYSTEMD=1 \
> -DSYSTEMD_SERVICE_NAME=mysqld.service \
> -DCOMPILATION_COMMENT='MySQLWg'
# -DENABLE_DOWNLOADS=1 不带boost包增加
[root@wg mysql-5.7.35]# C-a-d // ctrl+a+d退出当前会话
[root@wg mysql-5.7.35]# screen -ls
There are screens on:
39135.mysql5.7 (Detached)
[root@wg mysql-5.7.35]# screen -r 39135 // 回到编译界面
-- Generating done
-- Build files have been written to: /opt/mysql-5.7.35
[root@wg mysql-5.7.35]# make -j2
[root@wg mysql-5.7.35]# make install
[root@wg mysql-5.7.35]# exit
exit
[screen is terminating]
[root@wg mysql-5.7.35]# screen -ls
No Sockets found in /var/run/screen/S-root. // 没有虚拟端,不理会
[root@wg mysql-5.7.35]# screen -S 39135 -X quit // 如有虚拟端,删除;
[root@wg local]# chown -R lamp:lamp mysql/
[root@wg local]# chmod -R 755 mysql/
[root@wg local]# vi /etc/mysql.conf/my.cnf
------------------------
[client]
port=3306
socket=/data/mysql/3306/tmp/mysql.sock
[mysqld]
port=3306
socket=/data/mysql/3306/tmp/mysql.sock
user=lamp
basedir=/usr/local/mysql
datadir=/data/mysql/3306/data
pid-file=/data/mysql/3306/mysqld/mysqld.pid
log_error=/data/mysql/3306/log/mysqld.log
slow_query_log=1 // 开启慢查询 on/off
long_query_time=1 // 慢查询时间
slow_query_log_file=/data/mysql/3306/log/mysql-slow.log // 慢查询文件位置
skip-external-locking // 跳过外部锁定
key_buffer_size=32M
max_allowed_packet=1024M
table_open_cache=128
sort_buffer_size=768K
net_buffer_length=8K
read_buffer_size=768K
read_rnd_buffer_size=512K
myisam_sort_buffer_size=8M
thread_cache_size=16
query_cache_size=16M
tmp_table_size=32M
performance_schema_max_table_instances=1000
explicit_defaults_for_timestamp=true
#skip-networking
max_connections=500
max_connect_errors=100
open_files_limit=65535
log_bin=mysql-bin
binlog_format=mixed
server_id=232
expire_logs_days=10
early-plugin-load=""
default_storage_engine=InnoDB
innodb_file_per_table=1
innodb_buffer_pool_size=128M
innodb_log_file_size=32M
innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=1
innodb_lock_wait_timeout=50
[mysqldump]
quick
max_allowed_packet=16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size=32M
sort_buffer_size=768K
read_buffer=2M
write_buffer=2M
--------------------
[root@wg local]# reboot
[root@wg ~]# /usr/local/mysql/bin/mysqld --initialize --user=lamp --datadir=/data/mysql/3306/data
[root@wg ~]# grep "temporary password" /data/mysql/3306/log/mysqld.log
20... password is generated for root@localhost: =yaa,UXW?7R)
[root@wg ~]# vi /usr/lib/systemd/system/mysqld.service
-----------
[Unit]
Description=MySQL Server // 服务描述或名称
Documentation=man:mysqld(8) // 帮助文档,下同
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target // 启动顺序,在network之后
After=syslog.target
[Install]
WantedBy=multi-user.target // 开机启动功能
[Service]
User=lamp // 用户
Group=lamp // 用户组
Type=forking // ExecStart产生子进程成为服务的主进程。启动完后父进程退出。
PIDFile=/data/mysql/3306/mysqld/mysqld.pid // pid文件
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
PermissionsStartOnly=true
# Needed to create system tables
ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd
# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/data/mysql/3306/mysqld/mysqld.pid $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=/etc/mysql.conf/my.cnf
# Sets open_files_limit
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
----------------------
[root@wg ~]# systemctl daemon-reload
[root@wg ~]# systemctl start mysqld
[root@wg ~]# systemctl enable mysqld
[root@wg ~]# echo 'export PATH=$PATH:/usr/local/mysql/bin/' > /etc/profile.d/mysql.sh
[root@wg ~]# source /etc/profile.d/mysql.sh
[root@wg ~]# grep 'temporary password' /data/mysql/3306/log/mysqld.log
2021....password is generated for root@localhost: 3adC1f<)pe#x
[root@wg ~]# mysql -uroot -p'3adC1f<)pe#x'
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '12345';
mysql> exit
[root@wg ~]# mysql -uroot -p12345
mysql> grant all privileges on *.* to 'root'@'%' identified by '12345' with grant option;
mysql> flush privileges;
mysql> exit
[root@wg ~]# ln -sv /usr/local/mysql/include/ /usr/include/mysql
[root@wg ~]# echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql57.conf
[root@wg ~]# ldconfig
[root@wg ~]# vi /etc/man_db.conf // 跟6的文件不一样了
| MANDATORY_MANPATH /usr/local/mysql/man
--------------下边是tar完整步骤,先放着-------------------
[root@wg opt]# tar xvf 5.7.35-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@wg local]# ln -sv mysql-5.7.35-linux-glibc2.12-x86_64/ mysql
[root@wg local]# mkdir -p /data/mysql/3306/{data,log,tmp,mysqld}
[root@wg local]# useradd -r -s /sbin/nologin lamp
[root@wg local]# chown -R lamp:lamp mysql/ /data/mysql/
[root@wg local]# chmod -R 755 mysql/ /data/mysql/
[root@wg local]# mkdir /etc/mysql.conf
[root@wg local]# vi /etc/mysql.conf/my.cnf
| [mysqld]
| symbolic-links=0
| datadir=/data/mysql/3306/data
| socket=/data/mysql/3306/tmp/mysql.sock
| log-error=/data/mysql/3306/log/mysqld.log
| pid-file=/data/mysql/3306/mysqld/mysqld.pid
|
| [client]
| socket=/data/mysql/3306/tmp/mysql.sock
|
| # 复制后,别忘了用:set list清理下特殊标记
[root@wg local]# reboot
[root@wg ~]# /usr/local/mysql/bin/mysqld --initialize --user=lamp --datadir=/data/mysql/3306/data
[root@wg ~]# grep "temporary password" /data/mysql/3306/log/mysqld.log
20... password is generated for root@localhost: =yaa,UXW?7R)
[root@wg ~]# vi /usr/lib/systemd/system/mysqld.service
| [Unit]
| Description=MySQL Server // 服务描述或名称
| Documentation=man:mysqld(8) // 帮助文档,下同
| Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
| After=network.target // 启动顺序,在network之后
| After=syslog.target
|
| [Install]
| WantedBy=multi-user.target // 开机启动功能
|
| [Service]
| User=lamp // 用户
| Group=lamp // 用户组
| Type=forking // ExecStart产生子进程成为服务的主进程。启动完后父进程退出。
| PIDFile=/data/mysql/3306/mysqld/mysqld.pid // pid文件
| # Disable service start and stop timeout logic of systemd for mysqld service.
| TimeoutSec=0
| # Execute pre and post scripts as root
| PermissionsStartOnly=true
| # Needed to create system tables
| ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd
| # Start main service
| ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/data/mysql/3306/mysqld/mysqld.pid $MYSQLD_OPTS
| # Use this to switch malloc implementation
| EnvironmentFile=-/etc/sysconfig/mysql
| # Sets open_files_limit
| LimitNOFILE = 5000
| Restart=on-failure
| RestartPreventExitStatus=1
| PrivateTmp=false
[root@wg ~]# systemctl daemon-reload
[root@wg ~]# systemctl start mysqld
[root@wg ~]# systemctl enable mysqld
[root@wg ~]# echo 'export PATH=$PATH:/usr/local/mysql/bin/' > /etc/profile.d/mysql.sh
[root@wg ~]# source /etc/profile.d/mysql.sh
[root@wg ~]# grep 'temporary password' /data/mysql/3306/log/mysqld.log
2021....password is generated for root@localhost: 3adC1f<)pe#x
[root@wg ~]# mysql -uroot -p'3adC1f<)pe#x'
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '12345';
mysql> exit
[root@wg ~]# mysql -uroot -p12345
mysql> grant all privileges on *.* to 'root'@'%' identified by '12345' with grant option;
mysql> flush privileges;
mysql> exit
[root@wg ~]# ln -sv /usr/local/mysql/include/ /usr/include/mysql
[root@wg ~]# echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql57.conf
[root@wg ~]# ldconfig
[root@wg ~]# vi /etc/man_db.conf
| MANDATORY_MANPATH /usr/local/mysql/man
--- 配置指令详参 ---
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql // 安装路径
-DMYSQL_DATADIR=/usr/local/mysql/data/ // 数据路径
-DSYSCONFDIR=/etc/mysql.conf // 配置文件路径
-DMYSQL_UNIX_ADDR=/data/mysql/3306/tmp/mysql.sock // sock文件路径
-DSYSTEMD_PID_DIR=/data/mysql/3306/mysqld // pid文件路径
-DWITH_INNOBASE_STORAGE_ENGINE=1 // 安装innodb引擎
-DWITH_MYISAM_STORAGE_ENGINE=1 // 安装myisam存储引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
-DENABLED_LOCAL_INFILE=1 // 允许使用 load data 命令导入本地数据
-DEXTRA_CHARSETS=all // 安装所有字符集
-DDEFAULT_CHARSET=utf8mb4 // 默认utf8
-DDEFAULT_COLLATION=utf8mb4_general_ci
-DWITH_DEBUG=0 // 关闭debug
-DWITH_EMBEDDED_SERVER=1 // 生成一个libmysqld.a(.so)的库 这个库集成了mysql服务与客户端apt
-DDOWNLOAD_BOOST=1 // 允许boost
-DENABLE_DOWNLOADS=1 // 自动下载boost
-DWITH_BOOST=/usr/local/boost // boost路径
-DCOMPILATION_COMMENT='MySQLWg'
-DWITH_SYSTEMD=1 // 启用支持systemd
-DSYSTEMD_SERVICE_NAME=mysqld.service // 上条打开状态,命名systemd管理的mysql的unit的名字
- EXAMPLE是不执行任何操作的引擎。它存在的目的是作为MySQL源代码中的一个示例,演示如何编写新的存储引擎,默认关闭。
| -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
- DWITH_SYSTEMD:是否启用 systemd 支持文件的安装。默认情况下,此选项被禁用。
| 启用后,会安装 systemd 支持文件,而不会安装 mysqld_safe 和 System V 初始化脚本等脚本。
| 在 systemd 不可用的平台上,启用 WITH_SYSTEMD 会导致CMake出错
安装Apache
[root@wg opt]# tar xvf httpd-2.4.52.tar
[root@wg opt]# tar xvf apr-util-1.6.1.tar
[root@wg opt]# tar xvf apr-1.7.0.tar
[root@wg opt]# cp -r apr-1.7.0 httpd-2.4.52/srclib/apr
[root@wg opt]# cp -r apr-util-1.6.1 httpd-2.4.52/srclib/apr-util
[root@wg httpd-2.4.52]# ./configure --prefix=/usr/local/apache24 \
> --sysconfdir=/usr/local/apache24/conf \
> --enable-so --enable-rewrite --with-pcre \
> --enable-modules=all --with-mpm=event \
> --enable-mpms-shared=all --with-zlib \
> --with-apr=/opt/httpd-2.4.52/srclib/apr \
> --with-apr-util=/opt/httpd-2.4.52/srclib/apr-util \
> --with-included-apr
[root@wg httpd-2.4.52]# make && make install
[root@wg bin]# /usr/local/apache24/bin/apachectl start
AH00558: httpd: Could not reliably determine ...
[root@wg bin]# vi /usr/local/apache24/conf/httpd.conf
| ServerName localhost:80
[root@wg bin]# /usr/local/apache24/bin/apachectl start
httpd (pid 56264) already running
[root@wg bin]# systemctl status httpd
Unit httpd.service could not be found.
[root@wg bin]# vi /usr/lib/systemd/system/httpd.service
| [Unit]
| Description=Start httpd
|
| [Service]
| Type=simple
| EnvironmentFile=/usr/local/apache24/conf/httpd.conf
| ExecStart=/usr/local/apache24/bin/httpd -k start -DFOREGROUND
| ExecReload=/usr/local/apache24/bin/httpd -k graceful
| ExecStop=/bin/kill -WINCH ${MAINPID}
|
| [Install]
| WantedBy=multi-user.target
[root@wg ~]# systemctl daemon-reload
[root@wg ~]# systemctl restart httpd
[root@wg ~]# vi /etc/profile.d/http.sh
| export PATH=$PATH:/usr/local/apache24/bin
[root@wg profile.d]# source /etc/profile
[root@wg profile.d]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/apache24/bin
[root@wg profile.d]# apachectl stop
[root@wg profile.d]# apachectl start
[root@wg ~]# ln -sv /usr/local/apache24/include /usr/include/httpd
"/usr/include/httpd" -> "/usr/local/apache24/include"
[root@wg ~]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
[root@wg ~]# echo "/usr/local/apache24/lib" >> /etc/ld.so.conf.d/http_lib.conf
# http.conf是主配置文件,给库配置文件命名为http_lib.conf
[root@wg ~]# ldconfig
[root@wg ~]# ldconfig -v
/usr/local/apache24/lib:
libaprutil-1.so.0 -> libaprutil-1.so.0.6.1
libapr-1.so.0 -> libapr-1.so.0.7.0
[root@wg etc]# vi man_db.conf // centos6是man.config
| MANDATORY_MANPATH /usr/local/apache24/man
--- 配置指令详参 ---
--prefix=/usr/local/apache // 指定安装目录
--enable-mpms-shared=all --with-mpm=event // 开启动态MPM切换
--with-apr=/usr/local/apr // 指定依赖包apr安装路径
--enable-so // 打开so模块,so模块用来提供 dso 支持的apache核心模块
--enable-remoteip // 支持基于客户端IP做访问控制
--enable-proxy --enable-proxy-fcgi --enable-proxy-uwsgi // 启用代理支持php,python网站
--enable-deflate=shared // 开启压缩
--enable-expires=shared // 开启客户端缓存
--enable-rewrite=shared // 开启URL重写
--enable-cache --enable-file-cahce // 开启服务器缓存
--enable-mem-cache --enable-disk-cache
--enable-static-support // 支持静态连接
--enable-static-ab // 使用静态连接编译 ab - apache http 服务器性能测试工具
--disable-userdir // 禁用用户主目录提供页面访问
--enable-nonportable-atomics // 对新式CPU支持,支持原子的比较交换(compare-and-swap,CAS)操作指令
--disable-ipv6 // 禁用IPV6
--with-sendfile // 开启sendfile 0 复制机制
安装PHP
[root@wg opt]# tar xvf php-7.4.27.tar.gz
[root@wg php-7.4.27]# ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc \
> --with-config-file-scan-dir=/usr/local/php7/etc/php.d --enable-mysqlnd --with-mysqli \
> --with-pdo-mysql --enable-fpm --with-fpm-user=lamp --with-fpm-group=lamp --without-pear \
> --with-iconv --with-zlib --enable-xml --enable-shmop --enable-sysvsem --enable-ftp \
> --enable-mbregex --enable-mbstring --with-openssl --with-curl --enable-opcache \
> --enable-pcntl --enable-sockets --enable-soap --with-gettext --enable-session \
> --with-apxs2=/usr/local/apache24/bin/apxs
[root@wg php-7.4.27]# make && make install
[root@wg php-7.4.27]# ls /usr/local/apache24/modules/
httpd.exp mod_cgid.so mod_log_debug.so mod_request.so
libphp7.so mod_cgi.so mod_log_forensic.so mod_rewrite.so
...
[root@wg php-7.4.27]# vi /usr/local/apache24/conf/httpd.conf
--------
...
LoadModule alias_module modules/mod_alias.so
#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php7_module modules/libphp7.so
...
User lamp // 手工变更
Group lamp // 手工变更
--------
[root@wg ~]# cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
[root@wg etc]# egrep -v "^;|^$" php-fpm.conf
[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log
daemonize = yes
include=/usr/local/php7/etc/php-fpm.d/*.conf
[root@wg etc]# cp php-fpm.d/www.conf.default php-fpm.d/www.conf
[root@wg php-fpm.d]# egrep -v "^;|^$" www.conf
[www]
user = lamp
group = lamp
listen = 127.0.0.1:9000
listen.backlog = 511
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500
[root@wg ~]# /usr/local/php7/sbin/php-fpm -t
[root@wg ~]# cp /opt/php-7.4.27/sapi/fpm/php-fpm.service /usr/lib/systemd/system/
[root@wg ~]# vi /usr/lib/systemd/system/php-fpm.service
| ProtectSystem=false
| # sapi/fpm/init.d.php-fpm是centos6的启动脚本
[root@wg ~]# systemctl daemon-reload
[root@wg ~]# systemctl start php-fpm.service
[root@wg ~]# lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 35177 root 4u IPv6 233314 0t0 TCP *:http (LISTEN)
httpd 35180 lamp 4u IPv6 233314 0t0 TCP *:http (LISTEN)
httpd 35181 lamp 4u IPv6 233314 0t0 TCP *:http (LISTEN)
httpd 35182 lamp 4u IPv6 233314 0t0 TCP *:http (LISTEN)
[root@wg ~]# lsof -i :9000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
php-fpm 32077 root 6u IPv4 226842 0t0 TCP localhost:cslistener (LISTEN)
php-fpm 32078 lamp 8u IPv4 226842 0t0 TCP localhost:cslistener (LISTEN)
php-fpm 32079 lamp 8u IPv4 226842 0t0 TCP localhost:cslistener (LISTEN)
[root@wg ~]# lsof -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 2373 lamp 24u IPv6 36853 0t0 TCP *:mysql (LISTEN)
--- 配置指令详参 ---
--prefix=/usr/local/php7 // 安装路径
--with-config-file-path=/usr/local/php/etc // 配置文件路径
--with-mysql=mysqlnd // mysql支持及客户端设置
--enable-embedded-mysqli
--with-config-file-scan-dir=/usr/local/php7/etc/php.d
--with-mysql-sock
--enable-pdo // 开启php pdo(php数据对象的缩写—PHP Data Object)
--with-pdo-mysql=mysqlnd
--with-iconv-dir=/usr/bin/iconv // 指定转码工具,各种字符集间的转换
--enable-fpm // 支持php-fpm,允许以服务的方式启动PHP
--with-fpm-user=lamp
--with-fpm-group=lamp
--with-pcre-regex // 支持pcre正则表达式
--with-zlib // 支持压缩
--with-bz2
--with-zlib-dir
--enable-zip
--enable-calendar // 支持日历
--disable-phar // PHAR("Php ARchive")是PHP里类似JAR的打包文件;PHP5.3及以上,Phar后缀文件默认开启支持。
--with-curl // 支持curl
--enable-dba // 开启dba函数支持
--with-libxml-dir // 支持xml文件库对xml读取和查询
--enable-ftp // 支持ftp
--with-gd --with-jpeg-dir --with-png-dir // 支持图片
--with-freetype-dir // 支持字库
--enable-gd-jis-conv // 支持gd库
--with-mhash --enable-mbstring // 支持加密
--enable-opcache=yes // 开启opcache
--enable-pcntl // 开启PHP进程控制支持,默认关闭
--enable-xml // 允许xml文件
--disable-rpath // 关闭额外的运行库文件
--enable-shmop // 开启Shmop 是一个易用的允许php读、写、创建和删除unix共享内存段的函数集
--enable-sockets // 打开sockets支持
--enable-bcmath // 增加bcmath扩展的支持,这是一个支持大数据计算的扩展
--with-snmp // 支持snmp
--disable-ipv6 // 关闭IPV6支持
--with-gettext // 打开gnu的gettext支持、编码库用到
--disable-debug // 关闭调试模式
--with-apxs2=/usr/local/apache24/bin/apxs // 支持以模块方式运行
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律