Linux下手动编译搭建lamp环境

大兄弟 2018年10月25日0   191

很久前就像手动编译搭建lamp环境了,今天使用自己的腾讯云学生机做了实验,实验环境是centos7.0

集了网上各个大佬的博客写了几个shell文件

Apache编译安装

#!/bin/bash
tar xf /root/src/httpd-2.4.37.tar.gz -C /root/src
tar xf /root/src/apr-1.6.5.tar.gz -C /root/src
tar xf /root/src/apr-util-1.6.1.tar.gz -C /root/src
mv /root/src/apr-1.6.5 /root/src/httpd-2.4.37/srclib/apr
mv /root/src/apr-util-1.6.1 /root/src/httpd-2.4.37/srclib/apr-util
cd /root/src/httpd-2.4.37
yum -y install gcc gcc-c++ make pcre-devel expat-devel perl libxml2 libxml2-devel 
# httpd配置
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
# httpd 编译安装
make && make install
# 将httpd服务添加到系统服务
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
# vi /etc/init.d/httpd
# 第三行开始加入以下行:
# chkconfig: 35 85 21
# description: Apache is a World Wide Web server

# 将httpd加入到SERVICE管理器
chkconfig --add httpd
# 重载系统系统管理器
systemctl daemon-reload
# vi /usr/local/httpd/conf/httpd.conf
# 编辑httpd主配置文件
# 修改以下内容:(下行去井号)
# ServerName www.aa.com

# 优化执行路径(执行程序文件的原路径不在PATH环境变量中,做个软链接使其可以执行)
ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/
# 检查语法错误
httpd -t
# 或apachectl -t
# 查看版本
httpd -v
# 启动服务
systemctl start httpd
# 开机自启 可以省略
systemctl enable httpd
# 查看httpd服务运行状态
netstat -anpt | grep 80

其中centos7.x和6.x的启动命令有所区别

#centos7 重启apache
apachectl restart
#centos6 重启apache
/etc/init.d/httpd restart 或者 service httpd restart

MYSQL编译安装

#!/bin/bash
tar xf /root/src/mysql-5.5.60.tar.gz  -C /root/src
grp=$(cat /etc/group | grep 'mysql');
user=$(cat /etc/passwd | grep 'mysql');
if [ !$grp ]; then
	groupadd mysql
fi
if [ !$user ]; then
	useradd -g mysql mysql
fi
echo -e "安装编译环境\n"
yum -y install gcc gcc-c++ make ncurses ncurses-devel bison cmake
echo -e "编译环境安装成功\n"
cd /root/src/mysql-5.5.60
echo -e "开始编译"
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_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=boost \
-DWITH_SYSTEMD=1
make
make install
chown -R mysql:mysql /usr/local/mysql/
echo -e "保存配置文件\n"
cd /root/src/mysql-5.5.60/support-files/
# 复制配置文件
cp my-medium.cnf /etc/my.cnf
# 添加服务
cp mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
# 添加系统服务
chkconfig --add mysqld
# 开机启动
chkconfig --level 35 mysqld on

chown mysql:mysql /etc/my.cnf
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18

# 添加环境变量
echo -e "设置环境变量\n"
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
# 把这两个路径添加到环境变量中,并放到profile文件中使之开机自运行,否则不生效
echo 'export PATH' >> /etc/profile
# 立即生效
echo -e "环境变量立即生效\n"
source /etc/profile

echo -e "初始化MySQL数据库\n"
cd /usr/local/mysql
# 执行初始化配置脚本,创建mysql自带的系统数据库
./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
service mysqld start
netstat -anpt | grep 3306
# 安装好的mysql,默认root帐户帐户为空,下面我们来修改密码输入命令:mysql -uroot 回车后,然后输入命令:SET PASSWORD = PASSWORD('123456');
echo -e "设置密码中\n"
mysqladmin -u root password 'root'
echo -e "密码设置成功:root,默认用户名:root"

php编译安装,我这里使用的是5.6的源码

#!/bin/bash
# php编译安装

tar xf /root/src/mirror -C /root/src
cd /root/src/php-5.6.38
# 安装编译所需软件
yum -y install libxml2 libxml2-devel \
openssl openssl-devel \
curl curl-devel \
libjpeg libjpeg-devel \
libpng libpng-devel \
zlib zlib-devel \
freetype freetype-devel

# 个性化配置及优化项目
./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
# 编译安装
make && make install
# 创建配置文件
cp php.ini-development /usr/local/php/lib/php.ini
echo -e "include conf/extra/httpd-php.conf" >> /usr/local/httpd/conf/httpd.conf
echo -e "DirectoryIndex index.php index.html\n" > /usr/local/httpd/conf/extra/httpd-php.conf
echo -e "AddType application/x-httpd-php .php\n" >> /usr/local/httpd/conf/extra/httpd-php.conf
echo -e "AddType application/x-httpd-php-source .phps\n" >> /usr/local/httpd/conf/extra/httpd-php.conf

sed -i "s/mysqli.default_socket =/mysqli.default_socket = \/usr\/local\/mysql\/mysql.sock/g" /usr/local/php/lib/php.ini
sed -i "s/\/usr\/local\/httpd\/htdocs/\/var\/www/g" /usr/local/httpd/conf/httpd.conf

if [ ! -d /var/www/ ]; then
	mkdir /var/www
fi
cd /root/
systemctl stop httpd
systemctl start httpd

注意最后的apache的重启,6.x使用的是service