Linux环境配置
Linux环境配置
Linux下Apache安装和使用
扯上两句:Apache固然是一款功能强大的Web服务器,作为老司机,一直具有相当高的市场占有率。 虽然在高并发性能上不如Nginx,但是因为入道早,所以有着完善的功能、非常出色的稳定性等优点。
当然也有很多网站使用LANMP组合,Nginx处理静态请求,Apache+PHP处理动态请求,从而利用各自的特点,实现了访问的动静分离。今天天色已晚,就只说说Apache的安装和使用
1、下载apache
去官网,可以参考官网给的步骤:http://httpd.apache.org/docs/2.4/install.html。 需要注意的是apache2.4依赖apr和apr-util;详见:http://apr.apache.org/download.cgi
[root@localhost ~]# ll
总用量 10576
-rw-------. 1 root root 1257 1月 21 2019 anaconda-ks.cfg
-rw-r--r--. 1 root root 1073556 1月 21 15:50 apr-1.6.5.tar.gz
-rw-r--r--. 1 root root 554301 1月 21 15:50 apr-util-1.6.1.tar.gz
drwxr-sr-x. 12 root 40 4096 1月 21 16:16 httpd-2.4.38
-rw-r--r--. 1 root root 9187294 1月 21 15:49 httpd-2.4.38.tar.gz
解压准备
[root@localhost ~]# tar zxvf httpd-2.4.38.tar.gz
[root@localhost ~]# tar zxvf apr-1.6.5.tar.gz
[root@localhost ~]# tar zxvf apr-util-1.6.1.tar.gz
[root@localhost ~]# mv apr-1.6.5 httpd-2.4.38/srclib/apr
[root@localhost ~]# mv apr-util-1.6.1 httpd-2.4.38/srclib/apr-util
2、编译安装
安装相关依赖
[root@localhost ~]# yum -y install gcc gcc-c++ expat-devel
[root@localhost ~]# yum -y install pcre-devel openssl-devel // 因为我们下面要支持压缩、ssl
编译
[root@localhost ~]# cd httpd-2.4.38
[root@localhost httpd-2.4.38]# ./configure --enable-so --enable-deflate --enable-ssl --enable-rewrite
编译参数 | 参数说明 |
---|---|
--prefix | 程序安装位置 默认:/usr/local/apache2 |
--enable-so | 开启DSO,动态共享对象,后面添加模块用 |
--enable-deflate | 开启支持压缩 |
--enable-ssl | 开启ssl支持 |
--enable-rewrite | 开启重写支持 |
安装
[root@localhost httpd-2.4.38]# make && make install
Apache目录结构
[root@localhost httpd-2.4.38]# cd /usr/local/apache2/
[root@localhost apache2]# ll
总用量 52
drwxr-xr-x. 2 root root 4096 1月 21 16:03 bin //二进制可执行文件和相关脚本
drwxr-xr-x. 2 root root 4096 1月 21 16:03 build // 存放apr编译文件
drwxr-xr-x. 2 root root 78 1月 21 16:03 cgi-bin // 存放cgi程序
drwxr-xr-x. 4 root root 84 1月 21 16:03 conf //apache的配置文件
drwxr-xr-x. 3 root root 4096 1月 21 16:03 error //apache的默认错误页面
drwxr-xr-x. 2 root root 24 1月 21 16:03 htdocs // 默认站点的文档
drwxr-xr-x. 3 root root 8192 1月 21 16:03 icons // 图标文件
drwxr-xr-x. 2 root root 8192 1月 21 16:03 include // .h头文件
drwxr-xr-x. 3 root root 281 1月 21 16:03 lib //一些库文件
drwxr-xr-x. 2 root root 6 1月 21 16:03 logs // 存放日志文件
drwxr-xr-x. 4 root root 30 1月 21 16:03 man // 用于man命令
drwxr-xr-x. 14 root root 8192 1月 21 16:03 manual // 帮助手册
drwxr-xr-x. 2 root root 4096 1月 21 16:03 modules // 存放编译后的 .so动态模块文件
[root@localhost apache2]# cd ~
3、启动Apache服务
在Apache的bin目录下已经提供了能够通过start、stop、restart等参数控制Apache服务的脚本程序apachectl
[root@localhost ~]# /usr/local/apache2/bin/apachectl start
初次启动会报错
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
解决方案,找到apache安装后的主配置文件 httpd.conf
,编辑httpd.conf
文件,搜索"#ServerName",添加ServerName localhost:80,再重新启动apache 即可.
[root@localhost init.d]# /usr/local/apache2/bin/apachectl start
httpd (pid 5517) already running
此错误为端口被占用,只有进入root用户,才可以查看所有端口被占用的情况,然后找到进程id,干掉进程。注意在如果是CentOS5、6版本,系统防火墙iptables里添加80端口的对外访问
[root@localhost ~]# netstat -lnp | grep 80
tcp6 0 0 :::80 :::* LISTEN 5517/httpd
unix 2 [ ACC ] STREAM LISTENING 19580 1131/master private/retry
[root@localhost ~]# kill 5517
[root@localhost ~]#
[root@localhost ~]# /usr/local/apache2/bin/apachectl start
[root@localhost ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@localhost ~]#
注意你是CentOS7版本,默认防火墙是firewalld.添加80端口如下:
[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
[root@localhost ~]# firewall-cmd --reload
查看Apache服务进程
[root@localhost ~]# ps aux | grep httpd
root 5819 0.0 0.2 71012 2212 ? Ss 19:06 0:00 /usr/local/apache2/bin/httpd -k start
daemon 5820 0.0 0.4 491048 4732 ? Sl 19:06 0:00 /usr/local/apache2/bin/httpd -k start
daemon 5821 0.0 0.4 425512 4484 ? Sl 19:06 0:00 /usr/local/apache2/bin/httpd -k start
daemon 5822 0.0 0.4 359976 4220 ? Sl 19:06 0:00 /usr/local/apache2/bin/httpd -k start
daemon 5982 0.0 0.4 359976 4220 ? Sl 19:07 0:00 /usr/local/apache2/bin/httpd -k start
root 6468 0.0 0.0 112724 988 pts/0 R+ 19:16 0:00 grep --color=auto httpd
[root@localhost init.d]#
Apache基本配置
首先我们要知道Apache的主配置文件httpd.conf
,改文件位于_conf_目录里,另外如果因修改错误造成Apache无法启动,可还原conf/original目录中的配置文件备份
1.常用基本指令
一些基本指令,用于配置网站目录、端口号、域名等
指令 | 说明 |
---|---|
ServerRoot | Apache服务器的安装目录 |
Listen | 服务器监听的端口号。如http:80,https:443 |
LoadModule | 需要加载的模块 |
ServerAdmin | 服务器管理员的邮箱地址 |
ServerName | 服务器对应的域名 |
ServerAlias | 服务器对应的域名别名,可配置多个域名别名,用空格隔开 |
DocumentRoot | 网站根目录 |
ErrorLog | 记录错误日志 |
CustomLog | 记录访问日志,值后的common表示日志格式为通用格式 |
2.虚拟主机配置
Apache的虚拟主机可以在conf/httpd.conf
文件中配置,也可以在conf/extra/httpd-vhosts.conf
中配置。后者在httpd.conf
文件中通过Include指令引入的子配置文件,但是在使用前需要先在httpd.conf
中找到如下一行配置取消注释,否则http-vhosts.conf
不会生效
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf // 打开前面的井号注释
研究httpd-vhosts.conf
文件,Apache提供了默认配置。参数信息参照上面基本指令。
<VirtualHost *:80>
DocumentRoot "/home/wwwroot/workspace/10086"
ServerName www.mobile.com
</VirtualHost>
接下来 创建对于的网站目录。
[root@localhost apache2]# mkdir -p /home/wwwroot/workspace/10086
[root@localhost apache2]# cd /home/wwwroot/workspace/10086
[root@localhost apache2]# echo 'niege hao shuai' >> index.html
[root@localhost apache2]# /usr/local/apache2/bin/apachectl restart
服务器内部访问
[root@localhost /]# curl www.mobile.com
curl: (7) Failed to connect to 2001:1890:1c00:6222::4:1000: 网络不可达
接下来通过浏览器+域名进行访问,如果是真实域名记得配置域名解析主机。如果是本地服务器配置,请确保访问主机里的hosts文件有对域名解析的配置
//C:/WINDOWS/system32/drivers/etc 中的hosts文件中
192.168.223.128 www.mobile.com
发现还是不能访问,继续看下面的
3. 服务器对应目录的授权访问
Apache可以控制服务器中的那些目录允许被外部访问。默认在httpd.conf配置中,已经指定htdocs已经配置为允许外部访问。 在配置虚拟主机的时候,记得同时使用Require指令控制访问权限。
<VirtualHost *:80>
DocumentRoot "/home/wwwroot/workspace/10086"
ServerName www.mobile.com
<Directory "/home/wwwroot/workspace/10086">
Require all granted
</Directory>
</VirtualHost>
其中 Require all granted 表示允许所有的访问,Require local只允许本地访问,Require all denied拒绝所有的访问
4. 添加htaccess文件
在Apache服务器内添加htaccess,其实又叫文件分布式配置文件。可以在不重启服务器的前提下更改某个目录的配置。
<VirtualHost *:80>
DocumentRoot "/home/wwwroot/workspace/10086"
ServerName www.mobile.com
<Directory "/home/wwwroot/workspace/10086">
Require all granted
AllowOverride All
</Directory>
</VirtualHost>
当上面虚拟主机添加完AllowOverride All
后,Apache就会到站点下的各个目录中读取.htaccess
文件。.htaccess
文件可以直接编写指定目录中的大部分配置,如rewrite重新规则、Options指令开启或关闭目录浏览,通过ErrorDocument指令自定义错误页面
5.网站目录浏览功能
在/home/wwwroot/workspace/10086
目录下创建.htaccess
文件,内容:
DirectoryIndex index.html index.htm
Options Indexes
修改索引文件
[root@localhost 10086]# pwd
/home/wwwroot/workspace/10086
[root@localhost 10086]# vim .htaccess
[root@localhost 10086]# ll
总用量 4
-rwxr-xr-x. 1 root root 16 1月 21 19:59 index.html
[root@localhost 10086]# mv index.html test.html
[root@localhost 10086]# /usr/local/apache2/bin/apachectl restart
在浏览器里再次访问。若要关闭目录浏览功能,将其修改
DirectoryIndex index.html index.htm
Options -Indexes
6. 自定义错误页面
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
Linux安装PHP
安装依赖包
yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers autoconf
yum -y install libicu-devel
下载php
wget http://mirrors.sohu.com/php/php-7.2.3.tar.gz
tar axvf php-7.2.3.tar.gz
cd php-7.2.3
编译安装
mkdir /usr/local/php
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-apxs2=/usr/local/apache2/bin/apxs --enable-fpm --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd-compression-support --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-intl --with-libmbfl --enable-ftp --with-gd --enable-gd-jis-conv --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --disable-fileinfo --enable-opcache --with-pear --enable-maintainer-zts --without-gdbm
make && make install
配置文件php.ini
cp /root/lamp/php-7.2.3/php.ini-production /usr/local/php/etc/php.ini
查看php模块是否生成 libphp7.so
cd /usr/local/apache2/modules
查看Apache是否加载了php模块
vim /usr/local/apache2/conf/httpd.conf
LoadModule php7_module modules/libphp7.so
// 找到这一行修改
DirectoryIndex index.php index.html index.htm
//最后面加上
SetHandler application/x-httpd-php
重启Apache
/usr/local/apache2/bin/apachectl restart
安装mysql
https://www.cnblogs.com/ianduin/p/7679239.html