源码编译安装LAMP(HTTP服务,MYSQL ,PHP)

news2024/9/28 3:25:14

一、安装Apache

可在生产环境使

下载在

下面两个插件是httpd2.4以后的版本所需要
tar xf apr-1.6.2.tar.gz
tar xf apr-util-1.6.0.tar.gz

虽然xf通常足够,但使用与压缩算法对应的选项可以提供更好的控制。

tar xjf httpd-2.4.29.tar.bz2
mv apr-1.6.2 httpd-2.4.29/srclib/apr
mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util


#解释
yum -y install \
gcc \							#C语言的编译器
gcc-c++ \						#C++的编译器
make \							#源代码编译器(源代码转换成二进制文件)
pcre \							#pcre是一个Perl函数库,包括perl 兼容的正则表达式库
pcre-devel \                    #perl的接口开发包
expat-devel \                   #用于支持网站解析HTML、XML文件
perl                            #perl语言编译器



----------------------------------------------------------------------------------------

yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl

接着

cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \		#指定 httpd 服务程序的安装路径
--enable-so \					#启用动态加载核心模块支持,使 httpd 具备进一步扩展功能的能力
--enable-rewrite \				#启用网页地址重写功能,用于网站优化、防盗链及目录迁移维护
--enable-charset-lite \			#启动字符集支持,以便支持使用各种字符集编码的页面
--enable-cgi					#启用CGI(通用网关接口)脚本程序支持,便于网站的外部扩展应用访问能力



----------------------------------------------------------------------------------------
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi

编译

make -j 6 && make install

-j开几用几个线程,如果在虚拟机可以开设置多一些内存和线程

优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别
ln -s /usr/local/httpd/conf/httpd.conf   /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/


#加入系统服务管理有两种方式

方法一:
便于service管理 

将链接apachectl 复制到系统启动目录下并命名为httpd

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

到此,其实已经可以使用service httpd start等命令,但在linux服务列表还没有注册

使用chkconfig来注册apache服务,并其可以在linux的服务列表中看到(chkconfig –list)

vim /etc/init.d/httpd
在init.d的httpd链接文件中第2行添加如下注释,并wq保存退出 

# chkconfig: 35 85 21  //35级别自动运行  第85个启动 第21个关闭
# description: Apache is a World Wide Web server

保存

将httpd配置自启并加入linux服务监控

chkconfig --add httpd

启动服务

service httpd start

1.1、一些问题

解决AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using local

/etc/httpd.conf

改成

ServerName localhost:80

二、安装MYSQL

安装mysql服务内存必须4G以上
 

yum -y install \
gcc \
gcc-c++ \
ncurses \				#字符终端下图形互动功能的动态库
ncurses-devel \			#ncurses开发包
bison \					#语法分析器
cmake					#mysql需要用cmake编译安装

-------------------------------------------------------------------------------------------

yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake

创建程序用户管理

useradd -s /sbin/nologin mysql

tar zxvf mysql-5.7.17.tar.gz -C /opt
tar zxvf boost_1_59_0.tar.gz -C /usr/local/
mv /usr/local/boost_1_59_0 /usr/local/boost

切换

cd /opt/mysql-5.7.17/
 

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \		#指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \                             #指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \            #指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8  \                       #指定默认使用的字符集编码,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci \			#指定默认使用的字符集校对规则
-DWITH_EXTRA_CHARSETS=all \						#指定支持其他字符集编码
-DWITH_INNOBASE_STORAGE_ENGINE=1 \              #安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \               #安装ARCHIVE存储引擎 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \             #安装BLACKHOLE存储引擎 
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \            #安装FEDERATED存储引擎 
-DMYSQL_DATADIR=/usr/local/mysql/data \         #指定数据库文件的存储路径
-DWITH_BOOST=/usr/local/boost \          #指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost
-DWITH_SYSTEMD=1								#生成便于systemctl管理的文件


存储引擎选项:
MYISAM,MERGE,MEMORY和cSv引擎是默认编译到服务器中,并不需要明确地安装。静态编译一个存储引擎到服务器,使用-DWITH engine STORAGE ENGINE= 1
可用的存储引擎值有:ARCHIVE,BLACKHOLE,EXAMPLE,FBDERATBDB(InnoDB),PARTTTON(partitioning support),和PERFSCHEMA(Performance schema),IMNOBAS
--------------------------------------------------------------------------------------------------------------------------------------------
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1

make -j 8&& make install
 

注意

部署mysql报错基本都是内存不足造成 
可以试下  echo 1 > /proc/sys/vm/drop_caches   #清除缓存  

如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧

创建普通用户管理mysql

useradd -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/


更改管理主/组

chown mysql:mysql /etc/my.cnf

修改配置文件
vim /etc/my.cnf                                #删除原配置项,再重新添加下面内容


[client]									#客户端设置
port = 3306
socket=/usr/local/mysql/mysql.sock			

[mysqld]									#服务全局设置
user = mysql       							#设置管理用户
basedir=/usr/local/mysql					#指定数据库的安装目录
datadir=/usr/local/mysql/data				#指定数据库文件的存储路径
port = 3306									#指定端口
character-set-server=utf8					#设置服务器字符集编码格式为utf8
pid-file = /usr/local/mysql/mysqld.pid		#指定pid 进程文件路径
socket=/usr/local/mysql/mysql.sock			#指定数据库连接文件
bind-address = 0.0.0.0						#设置监听地址,0.0.0.0代表允许所有,如允许多个IP需空格隔开
skip-name-resolve							#禁用DNS解析
max_connections=2048						#设置mysql的最大连接数
default-storage-engine=INNODB				#指定默认存储引擎
max_allowed_packet=16M						#设置数据库接收的数据包大小的最大值
server-id = 1								#指定服务ID号


-----------------------------------------------------------------------------------------

[client]									
port = 3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock	

[mysql]									
port = 3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock
auto-rehash

[mysqld]
user = mysql 
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306	
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

一些系统变量的解释

系统变量描述
NO_ENGINE_SUBSTITUTION如果需要的存储引擎被禁用或未编译,则抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常。
STRICT_TRANS_TABLES在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制。
NO_AUTO_CREATE_USER禁止GRANT创建密码为空的用户。
NO_AUTO_VALUE_ON_ZEROMySQL中的自增长列默认从1开始。设置此选项后,如果尝试插入值为0的数据,将不会报错(但行为取决于其他设置和MySQL版本,因为直接插入0通常不用于自增列)。注意,这里的描述与常规理解稍有出入,因为通常自增列不会直接允许插入0值。
NO_ZERO_IN_DATE不允许日期和月份字段的值为零(例如,'2023-00-01'是不允许的)。
NO_ZERO_DATEMySQL数据库不允许插入零日期('0000-00-00'),插入时会抛出错误而不是警告。
ERROR_FOR_DIVISION_BY_ZERO在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下,MySQL返回NULL。
PIPES_AS_CONCAT将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似
ANSI_QUOTES启用ANSI_QUOTES后,双引号(")不能用来引用字符串,因为它被解释为识别符(即,表名、列名等),这与SQL标准中的行为一致。

设置环境变量,申明/宣告mysql命令便于系统识别

echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile

初始化数据库

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \				#生成初始化密码为空
--user=mysql \                      #指定管理用户
--basedir=/usr/local/mysql \        #指定数据库的安装目录
--datadir=/usr/local/mysql/data		#指定数据库文件的存储路径



------------------------------------------------------------------------------------
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

systemctl daemon-reload         #刷新识别     
systemctl start mysqld.service  #开启服务
systemctl enable mysqld         #开机自启动
netstat -anpt | grep 3306       #查看端口


给root账号设置密码
mysqladmin -u root -p password "123456" 
————》直接回车,不要重复设置密码了

三、安装PHP

四、安装论坛

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

How to run OpenAI Gym .render() over a server

题意:怎样在服务器上运行 OpenAI Gym 的 .render() 方法 问题背景: I am running a python 2.7 script on a p2.xlarge AWS server through Jupyter (Ubuntu 14.04). I would like to be able to render my simulations. 通过 Jupyter(在 U…

鸿蒙Navigator跳转不生效的问题

新增配置文件: 注意:该文件要在moudle中配置引用,非则跳转无法生效:

[Meachines] [Easy] Sunday Finger网络用户枚举+Wget文件覆盖权限提升

信息收集 IP AddressOpening Ports10.10.10.76TCP:79, 111, 515, 6787, 22022 $ nmap -p- 10.10.10.76 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 79/tcp open finger? | fingerprint-strings: | GenericLines: | No one logged on | GetReque…

黑马Java零基础视频教程精华部分_14_正则表达式

系列文章目录 文章目录 系列文章目录一、先爽一下正则表达式不使用正则的情况下使用正则的情况下 二、正则表达式的作用三、正则表达式具体表达1、规则2、字符类示例3、预定义字符示例首先学习转义字符 示例练习 四、基本练习1、快捷方法:2、验证手机号3、验证座机电…

JavaEE 第4节 线程安全问题

小贴士: 本节题目所述的主题其实非常的庞大,如果要细讲起来,一篇博客远远不够,本篇博客只会每个方面的内容做一个简要描述,详细的内容在后续同专栏博客中都会涉及到的,如果有需要可以一步到本专栏的其他博客…

Flows.network

Flows.network是什么 Flows.network 是一个 Severless 平台,用 Rust 和 Wasm 构建 LLM Agent 和机器人。flows.network 平台允许开发者将像 ChatGPT 和 Claude 的大模型连接到不同的 SaaS 提供商。由于模型已经具备与 OpenAI 兼容的 API,我们可以像在 O…

Photoneo PhoXi 3D Scanner XS

静态场景快照式3D扫描仪 PhoXi 系列是Photoneo公司专为静态场景高分辨率和高精度扫描工业场景应用设计生产的3D扫描仪,PhoXi 3D Scanner XS 型号专为精确地输出而设计,主要应用于印刷电路板、小部件的检测等。 产品特点 红色激光扫描,所见即…

商家转账到零钱现金营销场景申请一次通过攻略

商家转账到零钱现金营销场景是微信支付商家申请最多的场景之一,微信支付平台对申请材料的要求较多从而导致商家很容易被驳回,根据我们上万次成功申请的经验,申请该功能时商家要确保一次过审,需要遵循以下详细步骤和注意事项&#…

AR眼镜:重型机械维修保养新利器

重型机械作为工业与建设领域的重要支柱,其稳定运行直接影响效率与成本。然而在偏远地区,面临复杂故障和高昂维修成本,传统维修方式常显得力不从心。如今,安宝特的AR远程协助解决方案结合Vuzix AR眼镜,正悄然改变这一现…

人工智能系统测试中,A/B测试的流程、技术方法与策略

模型的迭代和优化是推动人工智能技术进步的核心动力。如何准确地评估模型更新前后的性能提升,是人工智能测试中的一个难点。A/B测试,作为一项科学且客观的测试方法,在此过程中发挥着至关重要的作用。本文我们继续为大家介绍人工智能系统测试方…

数据中台之数据开发,数据开发概述与数据计算能力的类型

目录 一、数据开发概述 二、数据计算能力的类型 2.1 概述 2.2 批计算 2.2.1 概述 2.2.2 批计算模型 2.2.2.1 传统数据处理方案的问题 2.2.2.2 MapReduce模型 2.2.2.3 Spark框架 2.3 流计算 2.4 批流一体 2.5 在线查询 2.6 即席分析 一、数据开发概述 数据开发是数…

做空日经指数的策略与时机

一、市场背景分析 在全球股市的剧烈波动中,日本股市的表现尤为引人关注。日经225指数在经历一轮暴跌后,又出现了大幅反弹,这种剧烈的波动为投资者提供了做空日经指数的机会。近期,日本股市受到日元汇率波动、日本央行货币政策以及…

文章复现 创新点 代码改进跑通 深度学习

文章复现 创新点 代码改进跑通 深度学习 SCI代码复现 文章复现 数据处理、数据分析、算法、数据结构data structure、机器学习machine learning、深度学习deep learning。创新改进,算法提升 python环境配置 ,深度学习代码调试 、代码复现,py…

WebStorm格式化JSON,将一行很长的JSON展开

webstorm json格式化插件将一行很长的json展开 在WebStorm中,要展开很长的JSON行,可以使用内置的JSON格式化功能。 打开WebStorm,并打开包含JSON的文件。 选择JSON文件中的任意部分。 按下快捷键 CtrlAltL (Windows/Linux) 或 CmdAltL (Ma…

用4点结构标定3点结构的顺序

在行列可自由变换的条件下,平面上的4点结构只有16个 (A,B)---6*30*2---(0,1)(1,0) 让A分别是4a1,2,…,16,让B全是0。当收敛误差为7e-4,收敛199次取迭代次数平均值,得到 迭代次数 搜索难度 1 …

免费开源的高科技行业ERP解决方案

引言 协助高科技企业信息化转型升级,通过开源智造Odoo标准模块与拓展模块,实现精细化、数字化与智能化的管控,将线性供应链转变为智能供应网络,形成整合与集成化的管理系统,提高对市场的响应速度。 业务挑战 项目管控难…

PDF文档处理技巧:如何旋转 PDF 文档

你有没有遇到过一个PDF文档,有些页面是侧向的,而其他页面却显示正确?这可能会令人沮丧,尤其是在信息至关重要的情况下。好消息是,您可以通过旋转受影响的页面轻松解决此问题。本指南将重点介绍如何使用奇客PDF 旋转 PD…

进程无响应任务管理器关不掉解决办法

第一步:打开任务管理器——>详细信息 第二步:打开运行窗口 第三步:输入taskkillPID(PID在图一的位置上看)

c语言小知识点小计

c语言小知识点小计 1、运算符的优先级 运算符的优先级是和指针解引用*的优先级相同的,但在代码运行中执行顺序是从后往前的。因此下面代码 int a[10] {1,2,3,4}; int* arr a; printf("%d",*arr);//访问的值是2 //注意:printf("%d&qu…

​私有化地图离线部署详细方案

我们在《私有化地图离线部署整体解决方案》一文中,分享了不包含硬件的私有化部署整体解决方案。 现在,再为你分享一下从硬件配置、系统选型、系统部署到地图数据加载、导出和更新管理等一整套详细方案。 地图服务器与存储设备 全球私有地图离线部署对…