在Linux服务器管理中,使用Apache2搭建网站是较为常见且成熟的技术方案,Apache2作为开源的Web服务器软件,凭借其稳定性、安全性和丰富的模块支持,被广泛应用于个人网站、企业官网及各类Web服务的部署,本文将详细介绍从环境准备到网站配置的完整流程,帮助读者快速掌握Apache2网站搭建的核心操作。
环境准备与安装
在开始搭建网站前,需确保服务器操作系统已正确安装并更新,以Ubuntu系统为例,首先通过和
apt upgrade
命令更新软件包列表及已安装组件,随后执行以下命令安装Apache2:
sudo apt install apache2
安装过程中,系统会自动启动Apache2服务,安装完成后,可通过
systemctl status apache2
检查服务状态,若显示”active (running)”则表示服务正常运行,在浏览器中访问服务器的公网IP地址,应能看到Apache2的默认欢迎页面,证明Web服务已成功部署。
网站目录配置
Apache2的网站默认根目录位于
/var/www/html
,但实际部署中通常需要为每个独立网站创建专属目录,以搭建”example.com”网站为例,首先创建网站目录:
sudo mkdir -p /var/www/example.com
并将网站文件(如HTML、CSS、JavaScript等)上传至该目录,为确保Apache2拥有正确的文件访问权限,需修改目录所有者:
sudo chown -R www-data:www-data /var/www/example.comsudo chmod -R 755 /var/www/example.com
是Apache2的默认运行用户,755权限确保用户可读写执行,组用户和其他用户可读执行。
虚拟主机配置
虚拟主机允许一台服务器托管多个独立域名网站,Apache2通过配置文件实现虚拟主机管理,配置文件通常存放在
/etc/apache2/sites-available/
目录下,创建新的虚拟主机配置文件:
sudo nano /etc/apache2/sites-available/example.com.conf
在文件中写入以下配置内容:
serverAdmin admin@example.comServerName example.comServerAlias www.example.comDocumentRoot /var/www/example.comErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined
配置说明:
保存文件后,使用命令启用虚拟主机:
sudo a2ensite example.com.conf
为避免端口冲突,需禁用默认的000-default站点:
sudo a2dissite 000-default.conf
检查配置文件语法并重启Apache2服务:
sudo apache2ctl configtestsudo systemctl restart apache2
域名解析与SSL证书配置
域名解析
登录域名管理后台,将域名解析服务器的A记录指向服务器公网IP,记录类型选择”A”,主机记录为”@”或”www”,记录值填写服务器IP地址,解析生效后(通常需要几分钟至24小时),通过浏览器访问域名应能看到网站内容。
SSL证书配置(HTTPS启用)
为保障网站数据传输安全,需配置SSL证书启用HTTPS,首先安装Let’s Encrypt免费证书工具:
sudo apt install certbot python3-certbot-apache
执行以下命令自动获取并安装证书:
sudo certbot --apache -d example.com -d www.example.com
根据提示输入邮箱地址并同意服务条款,Certbot会自动完成证书申请、配置及Apache2重启,配置成功后,通过访问网站,浏览器地址栏应显示安全锁标志。
目录权限与安全配置
目录权限优化
为提升安全性,可对网站目录进行精细化权限控制,禁止目录执行脚本文件:
sudo find /var/www/example.com -type d -exec chmod 755 {} ;sudo find /var/www/example.com -type f -exec chmod 644 {} ;
防盗链配置
在虚拟主机配置文件中添加以下内容,防止其他网站盗用本站资源:
RewriteEngine OnRewriteCond %{HTTP_REFERER} !^$RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?example.com [NC]RewriteRule .(jpg|jpeg|png|gif|bmp|swf)$ - [F,L]
隐藏Apache版本信息
编辑
apache2.conf
文件,添加:
ServerSignature OffServerTokens Prod
重启Apache2后,服务器响应头中将不再显示版本信息。
常见问题排查
网站无法访问
权限问题
若出现403 Forbidden错误,通常因文件权限不当,需重新执行和命令设置正确权限。
域名无法访问
通过以上步骤,即可完成基于Apache2的网站搭建与基础配置,实际部署中,还需根据业务需求进一步优化性能(如启用缓存模块、配置负载均衡)和加强安全防护(如安装Fail2ban防暴力破解),确保网站稳定安全运行。
PHP配置问题
确保 可用。 将此文件放到 Windows 路径中。 最好的位置是Windows 的 system2 目录。 即将 文件拷贝到c:\windows\system32目录下。 2、配置。 压缩包中包括两个 ini 文件,-dist 和 -recommended。 建议使用-recommended。 将选择的 ini 文件拷贝到 c:\windows 目录下并重命名为 。 //等后面修改了配置再复制三、配置Apache2.2.3打开Apache2.2.3的 配置文件: D:/PHP/Apache/conf/查找:DocumentRoot “D:/PHP/Apache/htdocs”将路径修改成你想要的主页地址,如本文:DocumentRoot “D:/PHP/WWW”查找:Directory “D:/PHP/Apache/htdocs”修改为:Directory “D:/PHP/WWW”查找:DirectoryIndex 添加你想要的默认脚本名称,用空格分隔,注意前后有优先顺序,比如:DirectoryIndex 在文档的最后加入以下字段:AddType application/x-httpd-PHP application/x-httpd-PHP-source D:\PHP\PHP\# 调用 PHP 5 模块LoadModule php5_module D:\PHP\PHP\php5apache2_也可以换成下面字段:AddType application/x-httpd-PHP application/x-httpd-PHP-source G:\PHP\# 调用 PHP 5 模块LoadFile G:/php/ G:/php/ php5_module G:\PHP\php5apache2_到此,Apache2.2.3 已经可以支持 PHP5.2.0 了.重新启动Apache2.2.3,如果不出错的话(Apache正常重启的话),双击Apache状态栏的图标四、安装 MySQL5.1.12bate/MySQL5.0.27------------------------------解压缩(MySQL5.1.12bate版本)或 (MySQL5.0.27版本 ) 到D:\PHP\MySQL 中下来安装 MySQL 服务开始->运行->cmd->回车然后进入 D:\PHP\MySQL\bin 目录:>cd D:\PHP\MySQL\bin 回车然后运行 MySQL 服务安装脚本:>mysqld-nt -install显示 MySQL service installed successfully,表示安装成功……然后配置 MySQL打开D:\PHP\MySQL文件夹,里面有很多个配置不同的ini 文件,我们选择这个文件,复制一份重命名为 用文本编辑器打开它:查找:[mysqld]在下方加入以下字符行:#MySQL 安装目录basedir=D:/PHP/MySQL#MySQL 默认数据目录datadir=D:/PHP/MySQL/data# 默认字符集设置为 UTF8default-character-set=utf8# 默认储存引擎default-storage-engine=MyISAM再在文档最下方加入:[WinMySQLAdmin]Server=D:/PHP/MySQL/bin/ 配置完成下面可以启动试试,打开 输入:NET start MySQL若显示‘MySQL服务已经启动成功’ 则表示MySQL服务已经启动成功’否则就是出错啦!服务器启动了…… 我们就可以登录试试了……>cd D:\PHP\MySQL\bin 回车接着登陆>MySQL -u root -p由于 root 初始状态无密码,提示 Enter Password 时直接回车即可然后命令行进入 MySQL Shell 状态即表示“登录”成功……你可以 exit 退出!到此MySQL 的安装工作完毕!但这时的MySQL是独立的,还没有与PHP关联!五、MySQL与PHP的关联打开D:\PHP\PHP文件夹, 将-recommend 拷贝一份并更名为 然后用文本编辑器打开修改错误报告级别,运行一些书写不规范的程序,你会发现满屏的‘错误’查找:error_reporting = E_ALL修改为:error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT由于是本地调试,我当然希望错误被输出供我调试……查找:display_errors = Off修改为:display_errors = On对于本地开发者,记录错误似乎没有必要……查找:log_errors = On修改为:log_errors = Off设置扩展库的路径是很必要的……查找:extension_dir = “./”修改为:extension_dir = “D:/PHP/PHP/ext”PHP 5 默认是不开启对 MySQL 的支持的……查找:;extension=PHP_去掉前面的分号:extension=PHP_查找:extension=PHP_在下方加入:extension=PHP_查找:;extension=PHP_去掉前面的分号:extension=PHP_我们还希望对一些较常用的库进行调用,比如 PHP_ 、 PHP_ 、 PHP_ 、 PHP_ 等等, 开启方法同上.(这里仅启用了常用扩展,其它的扩展请自行根据需要定夺)查找:;_path = “/tmp”修改为一个存在的路径里或者到发布目录下建立一个 tmp 目录这里我们选用前一种方法, 先建立这样一个目录 D:\php\Session 然后修改为_path = “D:/php/Session”到这里基本就设置完毕了! PHP 也能正常支持 MySQL 了!///////////////特别注意:将修改好的文件给系统的windows目录拷贝一份!不然会出错!///////////////另外,从php5.10开始,php中加入了时区的设置,在php中显示的时间都是格林威治标准时间,这就造成了我们中国的用户会差八个小时的问题!相关设置是修改中的 参数:[Date]; Defines the default TimeZone used by the date functions; =默认是关闭的,只需把注释去掉,改为即可[Date]; Defines the default timezone used by the date = PRC其中PRC是“中华人民共和国”!如果修改的D:\PHP\PHP\ 还需要将修改好的拷贝一份到系统的Windows目录! 切记!六、安装phpMyAdmin2.9.1.1解压缩下载到的到D:\PHP\WWW\phpmyadmin文件夹中打开D:\PHP\WWW\phpMyAdmin\libraries文件夹,然后用文本编辑器打开这个文件,查找 $cfg[PmaAbsoluteUri]修改为你将上传到空间的phpMyAdmin的网址如:$cfg[PmaAbsoluteUri] =安装完毕!这样就可以啦!这时打开浏览器,在地址栏中键入“”如果出现错误的话,请将D:\PHP\php下的文件复制到系统windows下的system32文件夹中!重启Apache2.2.3服务器!七、其他细节进入phpMyAdmin后会有警告:!您配置文件中的设定与 MySQL 默认权限账户对应(没有密码的 root)。 您的 MySQL 服务器使用默认值运行当然没有问题,不过这样的话,被入侵的可能性会很大,您真的应该先补上这个安全漏洞。 解决方法:进入phpMyAdmin后点击权限删除“任意”用户,选上删除与用户名称相同的数据库。 修改root用户的密码打开G:\www\phpMyAdmin\libraries\查找:解决方法:打开文件,查找:;extension=php_去掉前面的分号:extension=php_保存后复制一份到C:\windows下,重启apache
apache 403 forbidden怎么解决
这是由于你更改了你的DocumentRoot,而更改了这个默认值后,下面还有一个值是要随着更改的。 就在它下面不远的地方,有这样一段: # # This should be changed to whatever you set DocumentRoot to. # 中括号里的内容就是你更改的新值。 这样就不会出现403错误了。 参考资料:Apache配置文件,252行左右
提示No input file specified 怎么处理
(一)IIS Noinput file specified方法一:改中的doc_root行,打开ini文件注释掉此行,然后重启IIS方法二:请修改找到; _redirect = 1去掉前面分号,把后面的1改为0即_redirect = 0(二)apacheNo input file specifiedapache No input filespecified,今天是我们配置apache RewriteRule时出现这种问题,解决办法很简单如下打开 在RewriteRule 后面的教程后面添加一个“?”完整代码如下 onRewriteCond $1 !^(|Images|)RewriteRule ^(.*)$ /?/$1 [L]如果是apache服务器出问题,看看是不是的Apache 把 后缀的文件解析哪里有问题了。 总结Apache 将哪些后缀作为 PHP 解析。 例如,让 Apache 把 后缀的文件解析为PHP。 可以将任何后缀的文件解析为 PHP,只要在以下语句中加入并用空格分开。 这里以添加一个 来示例。 AddType application/x-httpd-php 为了将 教程作为 PHP 的源文件进行语法高亮显示,还可以加上: AddType application/x-httpd-php-source 用通常的过程启动 Apache(必须完全停止 Apache 再重新启动,而不是用 HUP 或者USR1 信号使 Apache 重新加载)。 (三)nginx配置遭遇No inputfile specified虚拟机测试nginx 遭遇 Noinput file specified,多方查找终于找到解决办法1、 (/etc/php5/cgi/)的配置中这两项_pathinfo=1(这个是自己添加的)doc_root=2、nginx配置文件/etc/nginx/sites-available/default中注意以下部分location ~ \$ {fastcgi_pass 127.0.0.1:9000;fastcgi_;fastcgi_paramSCRIPT_FILENAME/var/www/nginx-default$fastcgi_script_name; includefastcgi_params; }红色部分路径需要根据你主机主目录的实际情况填写配置完以上部分,重启一下service nginx restart,应该没问题了(四)注意检查下网站目录是否有相关用户的写入权限














发表评论