LAMP 的搭建

LAMP(Linux Apache MySQL PHP)搭建

1.安装 MySQL

① 下载源码包,下载到 /usr/local/src 下

②解压源码包,直接在该目录下解压

# tar -zxvf 包名

③将解压好的包移动到 /usr/local/mysql 下

# mv 包名 /usr/local/mysql

④创建MySQL的用户

# useradd -s /sbin/nologin mysql

⑤创建存放MySQL数据的文件

# mkdir -p /data/mysql 
# chown -R mysql:mysql /data/mysql

⑥执行 scripts/mysql_install_db 脚本,但是由于是一个 Perl 脚本,所以要先安装有关Perl脚本的软件

# install -y perl-Module-Install
# scripts/mysql_install_db --user=mysql --datadir=/data/mysql 【注意自己当前位置】

⑦修改配置文件 support-file/my-default.cnf

# cp support-files/my-default.cnf  /etc/my.cnf
# vim /ect/my.cnf
[修改内容如下]
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
server_id = 187    // IP 地址的第三段
socket = /tmp/mysql.sock
[精致的结尾]		

⑧修改启动文件 support-file/mysql.server

# cp support-files/mysql.server /etc/init.d/mysqld

⑨将启动脚本加入到系统的服务项,并且设置开机自启

# chkconfig --add mysqld
# chkconfig mysqld on
# service mysqld start //启动服务,启动不了去 /data/mysql 目录下查看错误日志

2.错误

第一次安装时出现了 ERROR! The server quit without updating PID file 这个错误,在网上的答案都没有解决。原来是MySQL在安装之前就有了 mysql 用户,而我有创建了一个。但是我创建的大于1000,只是个普通用户而以。然后用之前的MySQL用户就可以了。

3.安装 apache

① 下载源码包并解压

# cd /usr/local/src
# wget download_addr
# tar -zxvf                    //有两个依赖包

② 编译并安装依赖包和httpd

# cd /usr/local/src/apr.. 
# .configure --prefix=/usr/local/apr  // prefix 指定安装路径
# make && make install
# cd /usr/local/src/apr-util..
# ./configure --prefix=/usr/local/apr-util --prefix=/usr/local/apr-util --with-apr=/usr/local/apr // with 产生依赖关系
# make && make install
[错误] cannont find the library expat 
# yum install -y expat-devel     //缺少其他安装包报错,一般都加上 -devel
[错误解决]
# cd /usr/local/src/httpd-..
# ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most  // --enable-so 表示启用 DSO【把某些功能以模块的形式展现(一个功能模块就是一个 .so 文件)  --enable-mods-shared=most 表示以共享的方式安装大多数功能模块,安装后会在 modules 目录下面看到
# yum install -y pcre pcre-devel //为了避免编译错误
# make && make install

4. 安装 PHP

① 下载并解压源码包

# cd /usr/local/src
# wget download_addr
# tar -zxvf php-...

② 配置编译参数并编译安装

# cd php..
# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freerype-dir --with-iconv-dir --with-zbib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
# make && make install

5. 配置 httpd 支持 PHP

编辑 httpd 的主配置文件

# vim /usr/local/apache2.4/conf/httpd.conf
[配置内容如下]
ServerName www.example.com:80
<Directory />
    AllowOverride none
    Require all granted
</Directory>
AddType application/x-gzip .gz .tgz     //找到该行,在下面添加一行
AddType application/x-httpd-php .php    // 这个
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>
[精致的结尾]  以搜索改动为主

6. 测试配置文件是否成功

# /usr/local/apache2.4/bin/apachectl -t //出现 OK 即为成功
# /usr/local/apache2.4/bin/apachetcl start //启动apache
# netstat -lnp | grep httpd
tcp6       0      0 :::80   :::*  LISTEN 4554/httpd  // 出现该行为成功
-----查看是否解析 PHP ----------------------
# vim /usr/local/apache2.4/htdocs/1.php  
[编辑内容如下]
<?php
echo "hello world";
?>
# curl localhost/1.php
hello world

7. 默认虚拟主机

# vim /usr/local/apache2.4/conf/httpd.cof
[修改内容如下]
Include conf/extra/httpd-vhosts.conf //找到该行并取消注释
[精致的结尾]
# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //虚拟主机的配置文件,内容如下图

在这里插入图片描述

8. 用户认证

# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
[配置内容如下]
<Directory /usr/local/apache2.4/docs/codefun.com>  //指定认证的目录
    AllowOverride AuthConfig   //打开认证的开关
    AuthName "codefun.com user auth" //自定义认证名子,意义不大
    AuthType Basic   //认证的类型,一般的为 basic 
    AuthUserFile /usr/local/apache2.4/docs/.htpasswd  //指定密码文件的所在位置
    require valid-user //指定需要认证的用户为全部可用用户
</Directory>
[精致的结尾]
# /usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd username //创建用户并指定密码 -c 为create -m MD5加密 注意:第一次执行该命令需要有 -c,第二次再创建用用户时就不要 -c 了,否则 /data/.httpasswd 文件会被重置
# /usr/local/apache2.4/bin/apachectl -t 
# /usr/local/apache2.4/bin/apachectl graceful //更新配置文件
# curl -xlocalhost DN -I //出现 401 即为成功

9. 配置域名跳转

# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
[配置内容如下]
<IfModule mod_rewrite.c>   // 需要 mod_rewrite.c 的模块支持
    RewriteEngine on   // 打开 rewrite 功能
    RewriteCond %{HTTP_HOST} !^www.gx.com$  //满足这个条件(域名不是www.gx.com)才能进行下面的
    RewriteRule ^/(.*)$ http:www.gx.com/$1 [R=301,L] //跳转到 www.gx.com, 301 为永久定向 302 为临时定向 ,L last 跳转一次就结束了
    </IfModule>
[精致的结尾]
# /usr/local/apache2.4/bin/apachectl -M | grep i rewrite //查看是否有 rewrite 模块
# vim /usr/local/apache2.4/conf/httpd.conf  
[修改内容如下]
LoadModule rewrite_module modules/mod_rewrite.so  //注释解开
[精致的结尾]
# /usr/local/apache2.4/bin/apachectl graceful // 刷新配置文件
# /usr/local/apache2.4/bin/apachectl -M | grep i rewrite //再次检查是否成功
# curl -xlocalhost:80 DN -I //出现 301 即为成功 

访问日志

所有的访问日志都在 /usr/local/apache2.4/logs 下,直接使用cat 查看即可,格式是:
在这里插入图片描述
限制访问日志:
在这里插入图片描述

配置静态元素过期时间

在这里插入图片描述

在这里引入了新的模块 mod_expires.c ,所以需要检查这个模块是否启用,可以使用 /usr/local/apache2.4/bin/apachectl -M | grep -i expires 来检查。如果没有,要进入 apache2.4/conf/httpd.conf 将该行解开注释。

配置防盗链

<Directory 网站路径>
SetEnvIfNoCase Referer "www.codefu.com" local_ref
SetEnvIfNoCase Referer "codefu.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|jpg|jpeg|png)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
</Directory>

​ SetEnvIfNoCase Referer 允许那些网站可访问 <filesmatch “.(txt|jpg|jpeg|png)”> 的内容。
检验:
​ 可以使用 curl -xlocalhost:80 -I -e “referer” 域名 检验,允许的 200,不允许的 403

访问控制

1. 限制ip访问

<Directory 网站路径>
Order deny,allow
Deny form all
Allow from localhost【IP地址】
</Directory>
//只允许 本机访问这个网站

<Directory 网站路径>
<filesmatch "admin.php(.*)">
Order deny,allow
Deny form all
Allow from localhost【IP地址】
</filesmatch>
</Directory>
//只允许 本机 解析这个PHP文件

2.限制浏览器访问【反扒手段】

<Ifmodule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGNET} .* curl .* [NC,OR]
RewriteCond %{HTTP_USER_AGNET} .* baidu.com.* [NC]
RewriteRule .* - [N]
</Ifmodule mod_rewrite.c>
//当浏览器是 curl 或 百度 时不允许访问 ,403 

PHP配置文件的设置

php的配置文件在 /usr/local/php/etc/php.ini 下,配置入下内容:

① 搜索 date.timezone 将 date.zone = Asia/Shanghai
② 搜索 disable_functions 将其等于如下内容:eval,assert,popen,passthru,escapeshellcmd,escapeshellarg,exec,system,chroot,scandir,chgrp,chown,
shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,
leak,popepassthru,stream_socket_server,popen,proc_open,proc_close
③ log_errors = On,error_reporting = E_ALL & ~ E_NOTICE ,display_errors = off,error_log = /var/log/php/php_errors.log
④ open_basedir = /tmp:/usr/local/apache2.4/docs/codefun.com 【限制PHP只能在 /tem 和 codefun.com 两个目录下活动(若要再追加用冒号隔开)】
其中第四项也可以在 httpd 的配置文件中配置,内容如下:
php_admin_value base_dir "/tem:/usr/local/apache2.4/docs/codefun.com"

php动态模块安装

① 查看php中所有的动态模块:
/usr/local/php/bin/php -m
② 添加 redis:

wget http://pecl.php.net/get/redis-4.2.0.tgz
tar -zxvf redis-4.2.0.tgz
cd redis-4.2.0
/usr/local/php5.6/bin/phpize 
./configure --with-php-config=/usr/local/php5.6/bin/php-config
make
make install 
 vim /usr/local/php/etc/php.ini 
搜索 extension 添加一行 extension = redis.so

猜你喜欢

转载自blog.csdn.net/weixin_54898062/article/details/114276054