Sunday, May 11, 2025

Tag Archives: Apache

WordPress网站出现Error establishing a database connection

WordPress网站出现Error establishing a database connection(建立数据库连接时出错),查看发现Apache状态正常,而MySQL/MariaDB服务已经停止运行,重启服务器或者用service mysqld restart命令(MySQL数据库)或者systemctl restart mariadb.service命令(MariaDB数据库)可以暂时解决问题,过一段时间还会出现。

查看/etc/my.cnf,找到MySQL/MariaDB错误日志的位置(比如log-error=/var/log/mariadb/mariadb.log),查看日志,发现了很多处[ERROR] mysqld: Out of memory。

分析原因应该是Apache2在网站访问高峰时占用内存过高,MySQL/MariaDB因运行内存不足,会自动退出所致。

解决方法:
1、将Apache2换成Nginx或其他轻量级Web服务器。
2、不想更换Apache2的可以增大服务器物理内存或添加Swap交换文件。
3、不想更换Apache2也不想增加服务器物理内存,且网站访问量不大,可以尝试修改Apache2配置文件(文件路径/etc/httpd/conf/httpd.conf)。Apache2目前有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式,分别是prefork,worker和event。(查看Apache2的MPM模式,可以使用httpd -V命令。)

编辑/etc/httpd/conf/httpd.conf文件,添加下面内容:

<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 100
MaxRequestWorkers 100
MaxConnectionsPerChild 2000
</IfModule>

说明:

<IfModule mpm_prefork_module> StartServers 5 #推荐设置:小=默认 中=20~50 大=50~100 MinSpareServers 5 #推荐设置:与StartServers保持一致 MaxSpareServers 10 #推荐设置:小=20 中=30~80 大=80~120 ServerLimit 150 #推荐设置:小=500 中=500~1500 大型=1500~3000 MaxRequestWorkers 150 #推荐设置:小=500 中=500~1500 大型=1500~3000 MaxRequestsPerChild 0 #推荐设置:小=10000 中或大=10000~500000 </IfModule>

Read More »

Apache用.htaccess来实现强制https访问

我们可以用Apache的.htaccess的重定向规则来实现http强制跳转到https访问网站。

重要提示:必须将代码放到.htaccess文件内容的最前面,以保证重定向优先权。

Read More »

Webmin/Virtualmin如何彻底关闭网站的Apache日志

以Linux服务器Webmin/Virtualmin面板为例,讲述如何关闭网站的Apache日志。

通过浏览器登录Webmin,依次进入:Webmin–>服务器–>Apache Webserver–>Global configuration–>编辑配置文件。

或者使用WinSCP连接服务器,打开/etc/httpd/conf/httpd.conf文件。

找到如下信息:

ErrorLog /var/log/virtualmin/domain.com_error_log
CustomLog /var/log/virtualmin/domain.com_access_log combined

其中domain.com是网站的域名,domain.com_access_log是网站的Apache访问日志,domain.com_error_log是网站的Apache错误日志。

Read More »

小内存VPS Webmin/Virtualmin优化设置

Webmin/Virtualmin模块安装时是以最大性能模式来配置的,不太适合小内存的VPS,那么只需要简单设置一下,你会发现内存占用刷的一下就下来了。

Apache内存优化

登陆WebMin,打开服务器中的Apache 服务器,选择Global configuration -> 进程和限度

Read More »

禁止通过IP地址直接访问Web服务For Apache/Nginx

如果你的服务器或者网站能够通过IP地址直接访问,那么恶意的第三方可以通过他的一个随便的域名指向你的ip,每次访问该域名都可以正常打开网站,尽管这个页面是你的。这样,如过对方域名没有备案,那么你的IP就被列入黑名单了。

本文讲解如何设置web服务器不可以直接通过IP地址进行访问web服务,必须使用设定的域名访问web服务。

1. Httpd/Apache

apache 配置此操作还是比较方便,因为 httpd 的默认的主机是配置文件中第一个VirtualHost,所以把第一虚拟主机作为 403 forbidden 的响应更为合适(此前这个默认的是主web服务器)。

Read More »

Server服务器端常用软件

一、Web服务器

1.Apache
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
官方网站:https://www.apache.org/

2.Nginx
Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用。 其特点是占有内存少,并发能力强。
官方网站:http://nginx.org/

Read More »

服务器架设:Debian/Ubuntu搭建LAMP教程

本文是在独立服务器或VPS中使用Debian/Ubuntu操作系统搭建LAMP完整教程,适合初学者,本文会保持更新。

第一部分

LAMP 是Linux、Apache、MySQL、PHP的首字母缩写,也就是在一台Linux服务器上安装带有PHP和Mysql支持的Apache网站服务器。

UAMP 是Ubuntu Linux、Apache、MySQL、PHP的首字母缩写,是指在一台Ubuntu Linux服务器上安装带有MySQL和PHP支持的Apache网站服务器。

1. 说明

本文以BurstNET VPS主机为例,操作系统是Debian 5 / Ubuntu 10.04,独立服务器操作方法与VPS相同。域名请做好DNS指向。

安装前,用这个命令升级必要的软件包:

apt-get install update

2. 安装 Apache2 和 PHP5

Apache2 和 PHP5已经包含在 Debian/Ubuntu 软件包中了,一般来说,系统已经默认安装完毕。如果没有,你可以使用下面的命令轻松安装它:

apt-get install apache2 php5 libapache2-mod-php5 php5-gd php-pear php5-suhosin

系统会提示已需要安装的版本并自动安装,如有更新,系统会显示需要更新的版本。

安装 Apache 后,你可以启动:

/etc/init.d/apache2 start

重新启动Apache命令为:

/etc/init.d/apache2 restart

Apache 的配置文件位于: /etc/apache2/apache2.conf
Apache 的默认web文件夹在: /var/www
PHP的配置文件位于:/etc/php.ini

3. 安装 MySQL5

执行下面的命令来安装 MySQL:

apt-get install mysql-server mysql-client php5-mysql

然后启动 MySQL 服务器:

/etc/init.d/mysql start

安装完毕后我建议运行一下mysql_secure_installation来做一些基本的安全设置,它会检查root密码、移除anonymous帐号、禁止root远程登录、移除test数据库。

运行下面的命令来为 root 用户设置一个密码(否则的话任何人都可以访问你的MySQL数据库!):

mysqladmin -u root -p password 12345678

Enter password: 输入root密码以确认修改,一般root初始密码为空(上面的12345678为你想要的密码)

使用root帐号进入mysql:

mysql -u root -p

创建数据库:

create database site1dbname;

给新创建的数据库制定一个用户和密码:

grant all on site1dbname.* to ‘site1dbuser’ identified by ‘site1dbpwd’;

重新启动 MySQL:

/etc/init.d/mysql restart

mysql的配置文件位于:/etc/mysql/my.cnf

好了,一个LAMP 服务器搭建完成。

第二部分

增加虚拟站点配置:

vim /etc/apache2/sites-available/mysite

添加内容如下:

<VirtualHost *:80> ServerName www.mysite.com ServerAlias mysite.com www2.mysite.com DocumentRoot /var/www/mysite/ </VirtualHost>

激活这个虚拟站点:

a2ensite mysite

apache2重新加载配置:

/etc/init.d/apache2 reload

如果需要添加多个虚拟机,重复上述步骤即可。

如果想启动rewrite,需要在终端运行:

a2enmod rewrite

然后重启Apache:

/etc/init.d/apache2 restart

实例:安装WordPress设置固定链接教程
1.安装Wget

apt-get install wget

2.进入虚拟机所在目录

cd /var/www

3.下载WordPress到服务器并解压

wget http://wordpress.org/latest.tar.gz tar zxvf latest.tar.gz

Read More »

服务器架设:CentOS搭建LAMP详细教程

本文是在独立服务器或VPS中使用CentOS操作系统搭建LAMP详细完整教程,适合初学者,本文会保持更新。

第一部分

LAMP 是Linux、Apache、MySQL/MariaDB、PHP的首字母缩写,也就是在一台Linux服务器上安装带有PHP和MySQL/MariaDB支持的Apache网站服务器。

1. 说明

本文以VPS主机为例,操作系统是CentOS 7,独立服务器操作方法与VPS相同。域名请做好DNS指向。

2. 安装 Apache

Apache 已经包含在 CentOS 软件包中了,一般来说,系统已经默认安装完毕。如果没有,你可以使用下面的命令轻松安装它:

yum -y install httpd

系统会提示已需要安装的版本并自动安装,如有更新,系统会显示需要更新的版本。

安装 Apache 后,你可以:
启动Apache:

systemctl start httpd.service

停止Apache:

systemctl stop httpd.service

重启Apache:

systemctl restart httpd.service

设置开机启动Apache:

systemctl enable httpd.service

设置开机不启动Apache:

systemctl disable httpd.service

检查Apache运行状态:

systemctl status httpd.service

现在可以在浏览器中打开 http://domain.com(你的域名) 或 http://ip地址(VPS的IP地址),就可以看到 Apache Test Page 页面。
如果是本地服务器,现在可以在浏览器中打开 http://localhost 或 http://127.0.0.1 ,看到 Apache Test Page 页面。

修改配置文件:

vi /etc/httpd/conf/httpd.conf

可以修改侦听端口 80 -> 8080 :

#Listen 12.34.56.78:80
Listen 8080

你可以重启动Apache服务:

systemctl restart httpd.service

接着继续再了解一下 apache 这个版本的结构,这有助于我们配置应用:

/etc/httpd/conf/httpd.conf :最主要的配置文件;
/etc/httpd/conf.d/*.conf :这个是 CentOS 的特色,如果你不想修改原始配置文件 httpd.conf 的话,其他配置的在此独立配置,启动 apache 时,这个文件就会被读入到主要配置文件;
/usr/lib/httpd/modules :apache 支持很多的模块,您想要使用的模块默认都放置在此目录;
/var/www/html :这里是 CentOS 默认的“首页”目录;
/var/www/error :默认的系统错误信息,主机设置错误或浏览器端要求的数据错误,在浏览器上出现的错误提示就以这里的信息为主;
/var/www/icons :提供 apache 的一些小图标;
/var/www/cgi-bin :默认一些可执行的 CGI 程序放置的目录;
/var/log/httpd :日志文件目录,这里的文件很容易变的很大,需要提供足够的空间;
/usr/sbin/apachectl :这是 Apache 的主要执行文件,这个执行文件其实是 shell script ,它可以主动检测系统上的一些设置值,好让您启动 Apache 时更简单;
/usr/sbin/httpd :这是主要的 apache 的二进制文件;
/usr/bin/htpasswd :当您想登陆某些网页时,需要输入账号与密码。那么Apache本身就提供一个最基本的密码保护方式,该密码的产生就是通过这个命令实现的。

3. 安装 MySQL/MariaDB

执行下面的命令来安装 MySQL/MariaDB:

yum -y install mariadb mariadb-server

然后启动 MySQL/MariaDB 服务器:
启动MySQL/MariaDB:

systemctl start mariadb

停止MySQL/MariaDB:

systemctl stop mariadb

重启MySQL/MariaDB:

systemctl restart mariadb

设置开机启动MySQL/MariaDB:

systemctl enable mariadb

运行下面的命令来为 root 用户设置一个密码(否则的话任何人都可以访问你的MySQL数据库!):

mysqladmin -u root -p password 12345678

Enter password: 输入root密码以确认修改,一般root初始密码为空(上面的12345678为你想要的密码)

重启MySQL/MariaDB:

systemctl restart mariadb

MySQL 有几个重要目录与文件:
/etc/my.cnf :这是Mysql的配置文件,包括 mysql 数据库的优化;

/usr/lib/mysql :这个目录是 MySQL 数据库放置的位置,务必在备份时将此目录完整的备份下来。

4. 安装 PHP

使用下列命令来安装 PHP 和 Apache 的 PHP 模块:

yum -y install php

然后重新启动 Apache :

systemctl restart httpd.service

这个安装比较简单,完成后可以测试一下。Apache 网站的默认文档的路径是 /var/www/html ,在这个目录里上传一个PHP探针,并且在浏览器中调用 http://localhost/env.php 将会显示很多 PHP5 的安装信息。

PHP 正在工作,你会看到很多模块都可以在 PHP 中使用了,而 MySQL 并没有在这里被列出来,这意味着 PHP 并不支持MySQL,你还需要安装 php-mysql 这个包。

5. 安装PHP组件,使 PHP5 支持 MySQL

yum search php

选择你所需的安装包,然后通过下列命令安装他们:

yum -y install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash

Read More »

Nginx支持WordPress3.0.1的永久链接(Permalink)

我最近准备使用Nginx+php-fpm搭建WordPress平台。

安装完成后准备启用友好形式的永久链接,但是经过种种尝试和查资料后,都不能成功。

Nginx没有Apache特有的mod_rewrite,因此不能由WordPress自动配置。

查资料时发现网上流传广泛的解决方案都不管用。

Read More »

Nginx和Apache WEB服务器的IPv6设置

第一部分:

1、必须要有分配的公有IPv6地址。
2、进入域名管理面板添加AAAA记录指向你的IPv6地址。

第二部分:

1、Nginx IPv6 Configuration

重新编译Nginx使之支持IPv6。登陆SSH,命令如下,最关键的一句是“–with-ipv6”:

wget http://nginx.org/download/nginx-0.8.52.tar.gz
tar -xvzf nginx-0.8.52.tar.gz
cd nginx-0.8.52
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-ipv6
make && make install

在终端执行ifconfig,可以看到你的IPv6地址。

把你虚拟机配置文件中listen 80;全部替换为listen ip:80;的形式,否则启动不了。再在你想支持IPv6的虚拟机里加一句listen [ipv6]:80,配置好之后,大体如下所示:

Read More »