码迷,mamicode.com
首页 > 其他好文 > 详细

LAMP编译安装

时间:2015-09-27 06:34:49      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:版本号   mysql   依赖性   程序   清理   

 

 

在开始安装前先准备好安装包(红色文件部分,版本号随意)

技术分享

一、用root用户连接上主机

二、禁用SELinux

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g‘ /etc/selinux/config    
#在 /etc/selinux/config 文件里把SELINUX=enforcing替换为SELINUX=disabled,重启生效    
setenforce 0    
#临时把SElinux关闭,不需要重启

三、安装前准备

这里博主建议用新安装的系统来编译安装LAMP,不然因为一些残留文件/服务之类的东西会发生奇怪的事。

虽然建议用新安装的系统,但是还是使用下面的命令清理掉一些东西,并且更新下通过yum安装的程序。

rpm -e --nodeps httpd    
rpm -e --nodeps mysql    
rpm -e --nodeps php    
#用rpm卸载以上3个包,-e表示卸载,--nodeps表示忽略检查依赖性    
yum -y remove httpd    
yum -y remove mysql    
yum -y remove php    
#用yum卸载以上3个包,-y表示有问题是全部选yes    
yum -y update    
#更新所有使用yum安装的包    
yum -y install wget autoconf automake bison bzip2 bzip2-devel curl curl-devel cmake cpp crontabs diffutils elinks e2fsprogs-devel expat-devel file flex freetype-devel gcc gcc-c++ gd glibc-devel glib2-devel gettext-devel gmp-devel icu kernel-devel libaio libtool-libs libjpeg-devel libpng-devel libxslt libxslt-devel libxml2 libxml2-devel libidn-devel libcap-devel libtool-ltdl-devel libc-client-devel libicu libicu-devel lynx make mlocate ncurses-devel openldap openldap-devel openssl openssl-devel patch pam-devel pcre pcre-devel perl-DBD-MySQL readline readline-devel sendmail unzip vim vim-minimal zip zlib-devel    
#安装必须的环境

下载、编译、语法工具,浏览器等:wget autoconf automake bison curl cmake cpp crontabs diffutils elinks file gcc gcc-c++ icu libaio libtool-libs libxslt libxml2 libicu lynx make  mlocate openldap patch pcre perl-DBD-MySQL readline sendmail vim-minimal

压缩工具:bzip2 unzip zip

开发库:bzip2-devel curl-devel e2fsprogs-devel expat-devel freetype-devel glibc-devel glib2-devel gettext-devel gmp-devel kernel-devel libjpeg-devel libpng-devel libxslt-devel libxml2-devel libidn-devel libcap-devel libtool-ltdl-devel libc-client-devel libicu-devel ncurses-devel openldap-devel openssl-devel pam-devel pcre-devel readline-devel zlib-devel

Apache所需:flex +开发库

PHP所需:gd openssl +开发库

四、安装pcre

可以在pcre的sourceforge下载最新版pcre,文件格式为pcre-版本.tar.gz。本文以pcre-8.36为例,使用时请使用最新版,命令只要替换版本号就行了。

cd /usr/local/src    
wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.36/pcre-8.36.tar.gz    
tar -zxf pcre-8.36.tar.gz    
cd pcre-8.36    
./configure --prefix=/usr/local/pcre    
make    
make install

如果你的系统是64位系统,还需要执行以下内容:(如果系统中有lib64文件夹,则说明是64位系统)

ln -s /usr/local/pcre/lib /usr/local/pcre/lib64

PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。

通过./configure –help可以查看更多编译选项。

五、下载编译安装Apache2.4

Apache2.4版本和Apache2.2版本的编译安装不太一样, Apache2.4需要两个依赖包:apr 和 apr-util,而Apache2.2则不需要。

Apache可移植运行时( Apache Portable Runtime,简称APR)是Apache HTTP服务器的支持库,提供了一组映射到下层操作系统的API。如果操作系统不支持某个特定的功能,APR将提供一个模拟的实现。

可以在apr的官网下载最新版apr和apr-util,文件格式为apr-版本.tar.gz和apr-util-版本.tar.gz,在httpd的官网下载最新版Apache,文件格式为httpd-版本.tar.gz,官网下不动可以选择镜像下载。本文以apr-1.5.1、apr-util-1.5.4和httpd-2.4.10为例,使用时请使用最新版,命令只要替换版本号就行了。本文Apache安装在/usr/local/apache里。

cd /usr/local/src    
wget http://mirrors.hust.edu.cn/apache/apr/apr-1.5.1.tar.gz    
wget http://mirrors.hust.edu.cn/apache/apr/apr-util-1.5.4.tar.gz    
wget http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.10.tar.gz    
tar -zxf apr-1.5.1.tar.gz    
tar -zxf apr-util-1.5.4.tar.gz    
tar -zxf httpd-2.4.10.tar.gz    
mv apr-1.5.1 httpd-2.4.10/srclib/apr    
mv apr-util-1.5.4 httpd-2.4.10/srclib/apr-util    
cd httpd-2.4.10    
./configure \    
--prefix=/usr/local/apache \    
--with-pcre=/usr/local/pcre \    
--with-mpm=prefork \    
--with-included-apr \    
--enable-so \    
--enable-dav \    
--enable-deflate=shared \    
--enable-ssl=shared \    
--enable-expires=shared \    
--enable-headers=shared \    
--enable-rewrite=shared \    
--enable-static-support \    
--enable-modules=all \    
--enable-mods-shared=all    
make    
make install

shared表示动态加载这些模块,如果没有–enable-mods-shared=all,那么这些模块就是静态加载的。静态加载的模块是通过<ifmodule></ifmodule>来配置,动态使用LoadMoule来加载。所以说动态加载更加方便,但是官方说会有大约5%的性能损失。

可以使用./configure –help | grep disable来查看哪些模块是默认会加载的,默认会加载的就可以不用再次编译。

要查看编译的参数,请点此进入官方Apache2.4的手册,手册的内容比较容易,一般都看得懂(通过Google翻译)。

六、设置Apache

经过第五步已经把Apache安装完成了,接下来要把Apache的文件复制到/etc/init.d/里,还要注册服务,编辑Apache的配置文件,设置Apache目录等。Apache网站的默认目录是/data/www/default/。

cp -f /usr/local/apache/bin/apachectl /etc/init.d/httpd    
#拷贝文件到init.d里    
sed -i ‘2a # chkconfig: - 85 15‘ /etc/init.d/httpd    
sed -i ‘3a # description: Apache is a World Wide Web server. It is used to server‘ /etc/init.d/httpd    
#想要将Apache作为服务启动必须要这两句,不要问为什么,它就是这样的    
chmod +x /etc/init.d/httpd    
#为httpd文件设置可执行权限,虽然通过ll发现在执行前httpd已经有可执行权限了,但是还是加上吧    
chkconfig --add httpd    
#将httpd设置为服务    
chkconfig httpd on    
#将httpd的2、3、4、5运行级设置为On,即开机启动    
rm -rf /etc/httpd    
ln -s /usr/local/apache/ /etc/httpd    
#/etc/httpd为运行目录    
cd /usr/sbin/    
ln -fs /usr/local/apache/bin/httpd    
ln -fs /usr/local/apache/bin/apachectl    
#将这两个文件链接过来,以适应init.d脚本    
cd /var/log    
rm -rf httpd/    
ln -s /usr/local/apache/logs httpd    
#将日志链接到log目录    
groupadd apache    
useradd -g apache -s /sbin/nologin apache    
#添加apache组和apache用户    
mkdir -p /data/www/default/    
chmod -R 755 /data/www/default/    
#创建apache的默认目录,并设置权限

接下来就是配置Apache的配置文件了。

注:以下配置shell为本人自己写的,亲测有效,全复制下来黏贴就行,请不要多次运行

#先配置/usr/local/apache/conf/httpd.conf文件    
cp -f /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.bak    
sed -i ‘s@^#LoadModule\(.*\)mod_deflate.so@LoadModule\1mod_deflate.so@‘ /usr/local/apache/conf/httpd.conf    
sed -i ‘s@^#LoadModule\(.*\)mod_expires.so@LoadModule\1mod_expires.so@‘ /usr/local/apache/conf/httpd.conf    
sed -i ‘s@^#LoadModule\(.*\)mod_ssl.so@LoadModule\1mod_ssl.so@‘ /usr/local/apache/conf/httpd.conf    
sed -i ‘s@^#LoadModule\(.*\)mod_rewrite.so@LoadModule\1mod_rewrite.so@‘ /usr/local/apache/conf/httpd.conf    
sed -i ‘s@^User daemon@User apache@‘ /usr/local/apache/conf/httpd.conf    
sed -i ‘s@^Group daemon@Group apache@‘ /usr/local/apache/conf/httpd.conf    
sed -i ‘s/^ServerAdmin you@example.com/ServerAdmin admin@localhost/‘ /usr/local/apache/conf/httpd.conf    
sed -i ‘s@^#ServerName www.example.com:80@ServerName localhost@‘ /usr/local/apache/conf/httpd.conf    
sed -i ‘/^<Directory \/>/a\    
    Options FollowSymLinks\    
    AllowOverride none\    
    delttionya‘ /usr/local/apache/conf/httpd.conf    
sed -i ‘/delttionya/,+2d‘ /usr/local/apache/conf/httpd.conf    
sed -i "s@^DocumentRoot.*@DocumentRoot \"/data/www/default\"@" /usr/local/apache/conf/httpd.conf    
sed -i "s@^<Directory \"/usr/local/apache/htdocs\">@<Directory \"/data/www/default\">@" /usr/local/apache/conf/httpd.conf    
sed -i ‘s@Options Indexes FollowSymLinks@Options +Includes -Indexes@‘ /usr/local/apache/conf/httpd.conf    
sed -i ‘s@DirectoryIndex index.html@DirectoryIndex index.php index.html@‘ /usr/local/apache/conf/httpd.conf    
sed -i ‘s@^ErrorLog \"logs/error_log\"@ErrorLog \"| /usr/local/apache/bin/rotatelogs /usr/local/apache/logs/error_log%Y%m%d.log 86400 480\"@‘ /usr/local/apache/conf/httpd.conf    
sed -i ‘s@CustomLog \"logs/access_log\" common@CustomLog \"| /usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log%Y%m%d.log 86400 480\" common@‘ /usr/local/apache/conf/httpd.conf    
sed -i "s@AddType\(.*\)Z@AddType\1Z\n    AddType application/x-httpd-php .php .phtml\n    AddType application/x-httpd-php-source .phps@" /usr/local/apache/conf/httpd.conf    
sed -i ‘s@^#Include conf/extra/httpd-mpm.conf@Include conf/extra/httpd-mpm.conf@‘ /usr/local/apache/conf/httpd.conf    
sed -i ‘s@^#Include conf/extra/httpd-vhosts.conf@Include conf/extra/httpd-vhosts.conf@‘ /usr/local/apache/conf/httpd.conf    
sed -i ‘s@^#Include conf/extra/httpd-default.conf@Include conf/extra/httpd-default.conf@‘ /usr/local/apache/conf/httpd.conf    
cat >> /usr/local/apache/conf/httpd.conf <<EOF    
ServerTokens ProductOnly    
ServerSignature Off    
EOF    
#接下来配置/usr/local/apache/conf/extra/httpd-vhosts.conf文件    
rm -f /usr/local/apache/conf/extra/httpd-vhosts.conf    
cat > /usr/local/apache/conf/extra/httpd-vhosts.conf << EOF    
<VirtualHost *:80>    
    DocumentRoot "/data/www/default/"    
    ServerName localhost    
    DirectoryIndex index.php index.html    
    <Directory "/data/www/default/">    
    Options +Includes -Indexes    
    Require all granted    
    AllowOverride All    
    </Directory>    
</VirtualHost>    
EOF    
#再配置/usr/local/apache/conf/extra/httpd-default.conf文件    
sed -i ‘s@Timeout 60@Timeout 120@‘ /usr/local/apache/conf/extra/httpd-default.conf    
sed -i ‘s@MaxKeepAliveRequests 100@MaxKeepAliveRequests 1024@‘ /usr/local/apache/conf/extra/httpd-default.conf

更多Apache配置文件内容请见官网

七、启动,测试Apache

Apache的启动、关闭、重启、状态命令:/etc/init.d/httpd (start|stop|restart|status)

在/data/www/default/创建一个index.html文件,写上一段话,开启httpd服务,如果能显示这段话,那么表示Apache安装启动成功。

cat > /data/www/default/index.html << EOF    
<html><head></head><body>Success!</body></html>    
EOF    
#写一个HTML页面    
/etc/init.d/httpd start    
#启动Apache    
sed -i ‘/^-A INPUT\(.*\) 22 \(.*\)/a\    
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT‘ /etc/sysconfig/iptables    
/etc/init.d/iptables restart    
#对80端口添加防火墙规则,上面的22表示在ssh的22端口下面添加这条规则,如果改变了ssh端口,请把22改成你的ssh端口,不然会无法添加

注:为避免出现没有添加到防火墙规则的情况出现,这里执行完以后请再执行一下 cat /etc/sysconfig/iptables 命令,看里面有没有 -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT 这句规则,若没有,请使用 vim /etc/sysconfig/iptables 命令进入vim,按下字母a进入编辑模式,在连接SSH的端口下另起一行添加 -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT 这条规则。

访问你的网站的IP,如果出现Success!字样,表示安装启动成功。

 

一、用root用户连接上主机

二、下载Mysql Community Server

可以在Mysql的官网下载最新版Mysql(GA)版,在选择时选“Source Code”,找到最下面的“Generic Linux”,文件格式为mysql-版本.tar.gz。本文以mysql-5.6.21为例,使用时请使用最新版,命令只要替换版本号就行了。

cd /usr/local/src    
wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.21.tar.gz    
tar -zxf mysql-5.6.21.tar.gz

三、编译安装Mysql Community Server

Mysql的编译安装时间比较长,大概整个流程要半个多小时。

我们使用cmake命令编译Mysql,Mysql安装在/usr/local/mysql里。

cd /usr/local/src/mysql-5.6.21    
groupadd mysql    
useradd -s /sbin/nologin -M -g mysql mysql    
#为mysql添加用户和组    
cmake \    
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \    
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \    
-DDEFAULT_CHARSET=utf8 \    
-DDEFAULT_COLLATION=utf8_general_ci \    
-DWITH_EXTRA_CHARSETS=all \    
-DWITH_INNOBASE_STORAGE_ENGINE=1 \    
-DENABLED_LOCAL_INFILE=1 \    
-DWITH_PARTITION_STORAGE_ENGINE=1 \    
-DWITH_FEDERATED_STORAGE_ENGINE=1 \    
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \    
-DWITH_MYISAM_STORAGE_ENGINE=1 \    
-DWITH_EMBEDDED_SERVER=1    
make    
make install

四、设置Mysql

经过半个多小时的安装,把Mysql装完了,接下来就要配置Mysql了。

chmod +w /usr/local/mysql    
#使mysql文件夹有写权限,虽然通过ll发现在执行前mysql已经有写权限了,但是还是加上吧    
chown -R mysql:mysql /usr/local/mysql    
#把mysql文件夹的所有者和所有组都设置为mysql    
cat > /etc/my.cnf << EOF    
[client]    
#password = your_password    
port = 3306    
socket = /tmp/mysql.sock    
[mysqld]    
port = 3306    
basedir = /usr/local/mysql    
datadir = /usr/local/mysql/data    
pid-file = /usr/local/mysql/data/mysql.pid    
character-set-server = utf8    
skip-external-locking    
key_buffer_size = 16M    
sort_buffer_size = 512K    
net_buffer_length = 8K    
read_buffer_size = 256K    
read_rnd_buffer_size = 512K    
myisam_sort_buffer_size = 8M    
query_cache_size = 64M    
query_cache_limit = 4M    
table_open_cache = 64    
skip-name-resolve    
server-id = 1    
#max_connections = 1000    
max_allowed_packet = 16M    
[mysqldump]    
quick    
max_allowed_packet = 16M    
[mysql]    
no-auto-rehash    
[myisamchk]    
key_buffer_size = 20M    
sort_buffer_size = 20M    
read_buffer = 2M    
write_buffer = 2M    
[mysqlhotcopy]    
interactive-timeout    
EOF    
#以上一大段重写了/etc/my.cnf文件    
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql    
#初始化配置脚本,添加系统数据库    
cp -f /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld    
#拷贝服务脚本到/etc/init.d/    
chmod +x /etc/init.d/mysqld    
#为mysqld文件设置可执行权限,虽然通过ll发现在执行前mysqld已经有可执行权限了,但是还是加上吧    
chkconfig --add mysqld    
#将mysqld设置为服务    
chkconfig mysqld on    
#将httpd的2、3、4、5运行级设置为On,即开机启动    
export PATH=$PATH:/usr/local/mysql/bin    
echo "export PATH=\$PATH:/usr/local/mysql/bin" >> /etc/profile    
source /etc/profile    
#将mysql的可执行文件路径注册到环境变量,即直接输入mysql就能登陆mysql    
cat > /etc/ld.so.conf.d/mysql.conf << EOF     
/usr/local/mysql/lib    
EOF    
#添加动态库的缓存    
ldconfig    
#使上述更改生效

UPDATE:博主发现,原本的my.cnf会导致mysqld服务无法启动,这情况不是每台服务器都会发生的,我在Azure的服务器上配置完全没问题,但是在DO的服务器上就一直报错。原因是在max_connections = 1000这一条上,这条配置原本是设置Mysql的最大连接数的,但是很奇怪地,它使得我在DO的服务器上的Mysql服务无法启动。不明觉厉啊…

五、启动Mysql

Mysql的启动、关闭、重启、状态命令:/etc/init.d/mysqld (start|stop|restart|status)

/etc/init.d/mysqld start

一般情况下Mysql都能正常启动,至少按照博主的方法来是会成功的,如果有问题请留言。

六、Mysql安全设置

1、为root用户设置密码(必须)

安装的Mysql的root用户默认是空密码,为了安全起见,需要把密码修改为强密码(包含数字、字母大小写、特殊字符,长度大于8个字符)。常用修改方法有如下几种,只需选择一种即可:

#第一种方法
mysqladmin -u root password ttionya    
#上面的ttionya为root用户的密码,请更改密码为强密码 
#第二种方法
mysql <<EOF    
use mysql;    
update user set password=password(‘ttionya‘) where user=‘root‘;    
flush privileges;    
EOF    
#上面的ttionya为root用户的密码,请更改密码为强密码

2、先登录上Mysql(必须)

后面的命令就直接可以在mysql下操作了,省得每次都要登陆一遍。

mysql -uroot -pttionya    
#ttionya请改为上一步你设置的root用户的密码,在-p后面直接跟密码,不需要空格

3、删除默认数据库及用户(必须)

Mysql初始化后会自动生成空用户和test库,进行安装的测试,这些都是不需要的,也有可能会引起安全问题,所以需要将他们全部删除。最后只保留root用户即可,当然以后根据需要可以增加用户和数据库。方法如下:

#以下在mysql内执行    
drop database if exists test;    
use mysql;    
delete from db;    
delete from user where not (user=‘root‘);    
update user set password=password(‘ttionya‘) where user=‘root‘;    
flush privileges;    
#第六行的ttionya请改为第一步设置的root用户的密码,因为第一步的第一种方法只会更新Host为localhost的root用户的密码,所以要把密码同步到所有的root用户。若使用的是第一步的第二种方法,那可以删除第六行

 

其实这一步可以通过运行 mysql_secure_installation 命令实现的,但是我还是喜欢自己配置.

4、只允许localhost连接(建议)

经过前几步的设置,user表中只有3-4个root用户了,他们唯一的区别就是Host字段不同,博主的数据库中有4个root用户,Host字段分别是localhost、127.0.0.1、::1、主机名。他们的区别就是localhost不经过防火墙;127.0.0.1经过防火墙;::1是IPv6的127.0.0.1,也经过防火墙;主机名就不知道了。

想要只保留Host为localhost的root用户,可以执行以下内容:

#以下在mysql内执行    
delete from user where not (host=‘localhost‘ and user=‘root‘);    
flush privileges;

5、更改root用户名(建议)

root用户是Mysql的默认权限最高的用户,由于其权限高,所以也是黑客最喜欢攻击的用户名,建议把root用户名改成其他复杂的用户名,例如cymyxjj之类的?

#以下在mysql内执行    
use mysql;    
update user set user=‘ttionya‘ where user=‘root‘;    
flush privileges;    
#第三行的ttionya为你想更改为的用户名,不建议取与域名之类有关的词

6、新建一个无权限的root用户(娱乐向)

这步基于第三步的基础上,即你把root用户的用户名改为了其他用户名,这样你就可以新建一个无权限的root用户,黑客即使登陆上去也什么都做不了。

#以下在mysql内执行    
create user ‘root‘ identified by ‘ttionya‘;    
flush privileges;    
exit    
#第二行的ttionya为无权限的root用户的密码    
#后面的操作都不需要在mysql内执行了,所以退出mysql

7、关闭Mysql对本地文件的读取(建议)

Mysql提供对本地文件的读取,使用的是load data local infile命令,该选项是默认打开的。该操作令会利用Mysql把本地文件读到数据库中,若黑客读取/etc/passwd文件将非常危险。

假如你不需要读取本地文件,请关闭它。如果想打开它,请将/etc/my.cnf中的local-infile=0删除。

sed -i ‘/^\[mysqld\]/a\    
local-infile=0‘ /etc/my.cnf    
#写入关键词    
/etc/init.d/mysqld restart    
#重新启动Mysql服务

8、关闭远程连接(建议)

一般情况下,Mysql不需要使用远程连接,只是本机使用php脚本进行连接,所以为了安全完全可以把远程连接给关闭,这样就不会监听3306端口了。

因为没有打开防火墙,所以这里会提供打开远程连接和关闭远程连接的方法。

关闭远程连接:

sed -i ‘/^\[mysqld\]/a\    
skip-networking‘ /etc/my.cnf    
#写入关键词    
/etc/init.d/mysqld restart    
#重新启动Mysql服务    
iptables -D INPUT `/etc/init.d/iptables status|grep -w 3306|grep -o "^[0-9]\+"`    
/etc/init.d/iptables save    
/etc/init.d/iptables restart    
#删除3306端口的防火墙规则并重启防火墙

打开远程连接:

sed -i ‘/^skip-networking/‘d /etc/my.cnf    
#将关键词移除    
/etc/init.d/mysqld restart    
#重新启动Mysql服务    
sed -i ‘/^-A INPUT\(.*\) 22 \(.*\)/a\    
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT‘ /etc/sysconfig/iptables    
/etc/init.d/iptables restart    
#对3306端口添加防火墙规则,上面的22表示在ssh的22端口下面添加这条规则,如果改变了ssh端口,请把22改成你的ssh端口,不然会无法添加

 

注:为避免出现没有添加到防火墙规则的情况出现,这里执行完以后请再执行一下 cat /etc/sysconfig/iptables 命令,看里面有没有 -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT 这句规则,若没有,请使用 vim /etc/sysconfig/iptables 命令进入vim,按下字母a进入编辑模式,在连接SSH的端口下另起一行添加 -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT 这条规则。

9、删除history(必须)

我们使用过的shell命令,都会保存在~/.bash_history里,通过 history 命令可以获得当前用户最近输入的1000条命令。前面我们登陆数据库使用的都是 mysql -uroot -pttionya ,密码被直接记录在~/.bash_history文件里了,这是非常危险的,所以我们需要清空~/.bash_history这个文件。

history -c    
#清除还未写入.bash_history文件的history记录    
rm -f ~/.bash_history    
#删除root用户的.bash_history文件    
rm -f ~/.mysql_history    
#删除Mysql的记录

 

之后我们登陆Mysql的时候就不要再让密码出现在shell里了,即通过 mysql -uroot -p 登陆Mysql。

如果你觉得history会记录的历史命令太多,可以改变.bash_history记录的条数。

sed -i ‘/^HISTSIZE=\(.*\)/‘d /etc/profile    
sed -i ‘/^HISTFILESIZE=\(.*\)/‘d /etc/profile    
#删除/etc/profile文件里关于history的内容,HISTSIZE是history命令输出的条数,HISTFILESIZE是.bash_history文件储存的命令条数    
echo "HISTSIZE=100" >> /etc/profile    
echo "HISTFILESIZE=200" >> /etc/profile    
#设置输出条数和储存条数,100和200可自行更改    
source /etc/profile    
#使更改生效    
echo "rm -f $HOME/.bash_history" >> ~/.bash_logout    
echo "rm -f $HOME/.mysql_history" >> ~/.bash_logout    
echo "rm -f $HOME/.bash_history" >> /etc/skel/.bash_logout    
echo "rm -f $HOME/.mysql_history" >> /etc/skel/.bash_logout    
#前两个是使root用户在注销时都删除.bash_history和.mysql_history两个文件,后两个是改变模板文件,以后新建的每个用户都会在注销时删除这两个文件

到这里,Mysql的安全配置就结束了,以后在新建Mysql用户时,要注意用户的权限。

 

安装PHP

 

一、用root用户连接上主机

二、安装PHP需要的组件

安装PHP需要的大部分必要组件在安装Apache之前已经安装了, 现在安装上剩余的一部分。

1、安装libiconv(iconv模块)

libiconv是由于有些计算机还在使用当地的传统的字符编码方式,为了顺利支持国际化的处理而存在的,所以仍然有在Unicode和其他的传统编码之间转换的需求。可以在GNU的FTP下载最新版libiconv,文件格式为libiconv-版本.tar.gz。libiconv自2011年就没更新了,最新版本为1.14。若以后更新了,请使用最新版,命令只要替换版本号就行了。

cd /usr/local/src    
wget http://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz    
tar -zxf libiconv-1.14.tar.gz    
cd libiconv-1.14    
./configure --prefix=/usr/local/libiconv    
make    
make install

 

2、安装libmcrypt、mhash、mcrypt(mcrypt模块)

mcrypt模块使PHP可以使用除了自带的几种加密函数外功能更全面的mhash和mcrypt。该模块在默认情况下不开启,所以Linux的PHP自身也不打包该库,需要自行到官方网站下载代码进行编译安装。

可以在libmcrypt的sourceforge下载最新版libmcrypt,文件格式为libmcrypt-版本.tar.gz。libmcrypt自2007年就没更新了,最新版本为2.5.8。若以后更新了,请使用最新版,命令只要替换版本号就行了。

cd /usr/local/src    
wget http://softlayer-dal.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz    
tar -zxf libmcrypt-2.5.8.tar.gz    
cd libmcrypt-2.5.8    
./configure    
make    
make install    
ldconfig    
cd libltdl/    
./configure --enable-ltdl-install    
make    
make install

 

使用ldconfig是因为安装完成后把libmcrypt作为一个共享组件了,执行命令后共享对象就可以在C/C++开发中被使用了。

可以在mhash的sourceforge下载最新版mhash,文件格式为mhash-版本.tar.gz。mhash自2008年就没更新了,最新版本为0.9.9.9。可以在mcrypt的sourceforge下载最新版mcrypt,文件格式为mcrypt-版本.tar.gz。mcrypt自2008年就没更新了,最新版本为2.6.8。若以后更新了,请使用最新版,命令只要替换版本号就行了。

cd /usr/local/src    
wget http://tcpdiag.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz    
wget http://softlayer-dal.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz    
tar -zxf mhash-0.9.9.9.tar.gz    
tar -zxf mcrypt-2.6.8.tar.gz    
cd mhash-0.9.9.9    
./configure    
make    
make install    
cat >> /etc/ld.so.conf.d/local.conf <<EOF    
/usr/local/lib    
EOF    
ldconfig    
cd ../mcrypt-2.6.8    
./configure    
make    
make install

 

这里博主其实是遇到了问题的,就在mcrypt的./configure那步会出现验证libmcrypt版本失败的情况,博主查找了很多资料,各有各的解决办法,最后博主还是使用了往共享库添加路径的方法解决的。

三、安装PHP5.5

接下来要进行PHP5.5的安装。

不使用PHP5.6是因为有些程序对PHP5.6的兼容性不足。不使用PHP5.4及之前版本是因为博主比较能接受PHP5.5,而且后面的Shell使用了PHP5.5才带的opcache,PHP5.4及之前的版本虽然支持,但是要自行下载,当然也可以去除–enable-opcache来配置。

PHP安装在/usr/local/php里,若先前安装Apache时改变了默认安装路径,需要修改–with-apxs2。Mysql我们将使用PHP的Mysqlnd驱动,所以关于Mysql的编译选项都设置为mysqlnd。

注:若您的内存低于1G,请加上 –disable-fileinfo ,不然编译报错,或者增加Swap分区,若在make时出现not find liconv的报错,请去除make后面的 ZEND_EXTRA_LIBS=’-liconv’。

if [ `getconf WORD_BIT` = ‘32‘ ] && [ `getconf LONG_BIT` = ‘64‘ ] ; then    
cp -frp /usr/lib64/libldap* /usr/lib    
fi    
#这里对64位系统拷贝文件,为了支持ldap    
ln -s /usr/lib64/libc-client.so /usr/lib/libc-client.so    
#为了支持imap链接lib64的文件到lib    
cd /usr/local/src    
wget http://cn2.php.net/distributions/php-5.5.18.tar.gz    
tar -zxf php-5.5.18.tar.gz    
cd php-5.5.18    
./configure \    
--prefix=/usr/local/php \    
--with-apxs2=/usr/local/apache/bin/apxs \    
--with-config-file-path=/usr/local/php/etc \    
--with-mysql=mysqlnd \    
--with-mysqli=mysqlnd \    
--with-pdo-mysql=mysqlnd \    
--with-mysql-sock=/tmp/mysql.sock \    
--with-pcre-dir=/usr/local/pcre \    
--with-iconv-dir=/usr/local/libiconv \    
--with-libxml-dir=/usr \    
--with-icu-dir=/usr \    
--with-mhash \    
--with-bz2 \    
--with-curl \    
--with-freetype-dir \    
--with-jpeg-dir \    
--with-png-dir \    
--with-gd \    
--with-gettext \    
--with-gmp \    
--with-ldap \    
--with-ldap-sasl \    
--with-mcrypt \    
--with-openssl \    
--with-xmlrpc \    
--with-xsl \    
--with-zlib \    
--with-imap \    
--with-imap-ssl \    
--with-kerberos \    
--without-pear \    
--enable-opcache \    
--enable-bcmath \    
--enable-calendar \    
--enable-sysvsem \    
--enable-exif \    
--enable-ftp \    
--enable-gd-native-ttf \    
--enable-intl \    
--enable-mbstring \    
--enable-pcntl \    
--enable-shmop \    
--enable-soap \    
--enable-sockets \    
--enable-wddx \    
--enable-zip    
make ZEND_EXTRA_LIBS=‘-liconv‘    
make install    
#若内存低于1G,请把 --enable-zip 改为 --enable-zip --disable-fileinfo ,也就是加上 --disable-fileinfo 这项配置    
#若编译出现有关于liconv的报错,请去掉 make 后面的ZEND_EXTRA_LIBS=‘-liconv‘    
#PHP5.5安装完成    
mkdir -p /usr/local/php/etc    
cp php.ini-production /usr/local/php/etc/php.ini    
#拷贝配置文件到指定位置

 

安装完成后,/usr/local/apache/conf/httpd.conf文件不需要再进行修改,PHP会自动增加一行LoadModule。

四、配置PHP5.5

安装完PHP5.5后,还有需要配置php.ini文件,接下来继续配置PHP。

注:以下PHP的配置shell本人亲测有效,全复制下来黏贴就行。

sed -i ‘s@^short_open_tag = Off@short_open_tag = On@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^disable_functions.*@disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,pfsockopen@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^expose_php = On@expose_php = Off@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^allow_url_fopen.*@allow_url_fopen = Off@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^max_execution_time.*@max_execution_time = 300@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^;upload_tmp_dir.*@upload_tmp_dir = /tmp@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^post_max_size.*@post_max_size = 50M@‘ /usr/local/php/etc/php.ini    
sed -i "s@extension_dir = \"ext\"@extension_dir = \"ext\"\nextension_dir = \"/usr/local/php/lib/php/extensions/`ls /usr/local/php/lib/php/extensions/`\"@" /usr/local/php/etc/php.ini    
sed -i ‘s@^upload_max_filesize.*@upload_max_filesize = 100M@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^;date.timezone.*@date.timezone = Asia/Shanghai@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^session.cookie_httponly.*@session.cookie_httponly = 1@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^request_order.*@request_order = "CGP"@‘ /usr/local/php/etc/php.ini    
#以上配置了php.ini部分    
sed -i ‘s@^\[opcache\]@[opcache]\nzend_extension=opcache.so@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^;opcache.enable=.*@opcache.enable=1@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^;opcache.enable_cli.*@opcache.enable_cli=1@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^;opcache.memory_consumption.*@opcache.memory_consumption=128@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^;opcache.interned_strings_buffer.*@opcache.interned_strings_buffer=8@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^;opcache.max_accelerated_files.*@opcache.max_accelerated_files=4000@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^;opcache.max_wasted_percentage.*@opcache.max_wasted_percentage=5@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^;opcache.validate_timestamps.*@opcache.validate_timestamps=1@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^;opcache.revalidate_freq.*@opcache.revalidate_freq=60@‘ /usr/local/php/etc/php.ini    
sed -i ‘s@^;opcache.fast_shutdown.*@opcache.fast_shutdown=1@‘ /usr/local/php/etc/php.ini    
#以上配置了php.ini的OPCache部分    
ln -s /usr/local/php/bin/php /usr/bin/php    
#任何地方都可以使用php命令

 

五、启动,测试PHP

在/data/www/default/创建一个index.php文件,写上phpinfo(),重启httpd服务,能看到服务器的各种信息表示PHP安装成功。

cat > /data/www/default/index.php << EOF    
<?php phpinfo(); ?>    
EOF    
#创建一个index.php文件,里面是phpinfo()函数。    
/etc/init.d/httpd restart    
#重启Apache服务

访问你的网站的IP,如果出现下图样式,则表示LAMP安装成功。

技术分享

 

 

LAMP编译安装

标签:版本号   mysql   依赖性   程序   清理   

原文地址:http://574076359.blog.51cto.com/10651705/1698463

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!