Linode VPS 上 CentOS 6 安装 LAMP + phpMyAdmin 记录

购买 Linode VPS 之后,花了差不多 5 天时间才配置好 LAMP (Linux + Apache + MySQL + PHP)服务器。虽然 Linode 上面的知识库非常的详细,可由于时效性等原因,总有些针对特定问题的疏漏。下面详细记录了在 CentOS 上配置安装 LAMP + phpMyAdmin 服务器环境的步骤,以备后查。

CentOS 7 用户请看这里

用 Visa 信用卡购买 Linode VPS 还是非常方便的:选择套餐计划 – 注册 – 选择服务器位置并付款(输入信用卡信息)。

然后部署系统

  1. (登录)进入控制中心 – 进入 Dashboard – Deploy a Linux Distribution
  2. 选择 Linux 发行版(Distribution) – 设定磁盘大小(单位 MB)- 选择是否使用交换空间(swap) – 设定 root 密码(以后还能改)等,然后点击 Deploy 就开始安装系统了。

这些操作都是一目了然的,没什么难度,特别是 Linode 还有详细的新手指南。可是配置 LAMP 服务器就比较费事了。虽然网上有不少一键安装的快捷编译安装脚本,Linode 也提供了一些更有针对性的安装脚本(在选择 Linux 发行版的时候,选择框右边就有 Deploying using StackScripts 的提示),可我还是倾向于自己把这些过程走一遍。

下面把配置 LAMP + phpMyAdmin 服务器时候所做的记录整理一下做个总结,从使用 Putty 等 SSH 远程登录软件连接到 VPS(详见 Linode 新手指南)之后开始记述。

0 系统运行环境

  1. Linux Distribution: CentOS 6 32bit
  2. RAM: 512MB
  3. Disk Space: 20GB

建议内存不小于 1GB 的安装 64 位系统,比如因为这个

切记:因为系统不同,指令可能有所不同;硬件不同,配置方式也可能有些不同。强烈建议实战前现在自己的电脑上用 VirtualBox 之类的软件创建个虚拟机先练练手。可参考我的 VPS 学习之路

1 基本设置

这一部分参考 Linode 知识库 – 参考资料 1。

1.1 设置 HOSTNAME

echo "HOSTNAME=cnzhx.net" >> /etc/sysconfig/network
hostname "cnzhx.net"

我给设置成自己的主域名了。其实别的也可以,比如 CnZhx。

1.2 配置 vim

注意:如果系统中没有安装 vim,可以试试看 vi,只是没有 vim 好用和好看罢了。如果没有 vim 自然就直接跳到下面的 1.3 了。

或者先安装 vim 也行:

yum -y install vim

使之彩色显示代码,同时还支持行号标记和鼠标定位。编辑 vim 配置文件,

vim /etc/vimrc

从键盘输入 i 进入编辑模式。按 PgDn 到文本最后,在末尾分三行输入:

syntax on
set nu
set mouse=a

从键盘输入 Ctrl+c,然后输入 :wq 保存、退出。

1.3 更新 HOSTS 配置文件 /etc/hosts

这个文件的作用跟 Windows 中的 HOSTS 类似,可以给本地系统直接解析域名,这里设置了之后,这个系统访问 cnzhx.net 就不需要访问域名解析服务器了。

输入

vim /etc/hosts

打开编辑。

在最后添加

12.34.56.78 cnzhx.net

保存退出。

1.4 配置网络

其实一个服务器就相当于一台个人电脑,只不过呢,IP 地址是固定的公网的 IP。因而可以在自己的域名管理系统那里将域名的 IP 指定为这个特定的 IP,然后别人就可以通过域名访问到这个 IP 地址所在的服务器(域名解析服务器会做转换)。

然后这个服务器上安装了 Apache + MySQL 就可以提供网站服务了。

默认情况下,Linode VPS 使用 DHCP 来配置网络,这样做需要 VPS 运行 dhcp 客户端进程来从主控制台获取本 VPS 的 IP。当然会浪费一些资源了(CPU和内存),而且还需要开放 63 端口。所以这里采取静态网络配置来避免这些问题。

网络配置与选择的 VPS 服务商的配置有关,一般都会有说明的。

如果要增加 IPv6 支持,请参考 Linode VPS 上启用 IPv6 支持

从 Linode Manager 中的 Remote Access 标签页中可以获知自己 VPS 的网络配置信息。比如我的:

Public IP: 12.34.56.78
Default Gateways 12.34.56.1
DNS Resolvers 74.207.241.5
74.207.242.5
2600:3c01::2
2600:3c01::3

修改 DNS 解析设置:

vim /etc/resolv.conf

按照上面的 DNS Resolvers 对应录入

domain members.linode.com
search members.linode.com
nameserver 74.207.241.5
nameserver 74.207.242.5
nameserver 2600:3c01::2
nameserver 2600:3c01::3
options rotate

保存并退出。

然后配置静态 IP(如果使用了 DHCP 自动获取 IP 则可以跳过此步骤直接到 1.5 继续):

vim /etc/sysconfig/network-scripts/ifcfg-eth0

对应录入

# Configuration for eth0
DEVICE=eth0
BOOTPROTO=none
# 暂时不启用 IPv6
IPV6INIT=no

# This line ensures that the interface will be brought up during boot.
ONBOOT=yes

# eth0 - This is the main IP address that will be used for most outbound connections.
# The address, netmask and gateway are all necessary.
IPADDR=12.34.56.78
NETMASK=255.255.255.0
GATEWAY=12.34.56.1

保存并退出。

因为 DHCP 已经不需要了,可以使用 chkconfig –list 命令查看 dhcp 相关服务的状态,然后停止它们。甚至可以删除相关软件包:

yum remove dhcp

重起 VPS 即可生效。

1.5 设置时区为 Hongkong

将香港时区文件设置符号链接到 localtime

ln -sf /usr/share/zoneinfo/Hongkong /etc/localtime
echo "ZONE=\"Asia/Hong_Kong\"" > "/etc/sysconfig/clock"

更详细配置说明请参考:正确配置 Linode VPS 系统时间

2 安装 LAMP

2.1 先更新系统

yum update

2.2 安装并配置 Apache 网络服务器

安装

yum install httpd

备份配置文件(建议对于所有的配置文件,做任何更改前都先备份一份,以便应对未知错误)

cp /etc/httpd/conf/httpd.conf ~/httpd.conf.backup

因为默认情况下,位于 /etc/httpd/conf.d/ 目录下的所有以 .conf 结尾的文件都会被读取,并按照字母顺序加载做为 Apache 的配置,所以增加虚拟主机的时候,实际上不需要修改 /etc/httpd/conf/httpd.conf,而是在 /etc/httpd/conf.d/ 下新建一个配置文件来配置虚拟主机。

配置虚拟主机(/etc/httpd/conf.d/vhost.conf

vim /etc/httpd/conf.d/vhost.conf

输入下面的内容(# 号后面的改行内容是注释):

修订 – 2011.02.13:

1. 接受网友建议:注释掉了一些在 httpd.conf 中已经有的全局设置,下面代码中用红色 # 号注释掉的行。

2. 去掉了 <Directory></Directory> 之间的 Options 后面的 Indexes

3. 下面有路径中使用了域名 cnzhx.net 来做文件夹的名字,只是为了方便区分不同的域名,无它意。

4. 在服务器上一行行输入还是挺麻烦的,可以在本地编辑好了,然后通过 ftp 上传过去( filezilla 就挺好,有中文界面,还支持 ssh 登录(选择 sftp 模式即可))

Listen 2082 # 为了以后安装 phpMyAdmin 的时候用,也可以是别的端口,如 4444
NameVirtualHost *:80
NameVirtualHost *:2082 # phpMyAdmin

#
# cnzhx.net
#
<VirtualHost *:80>
ServerAdmin admin@cnzhx.net
ServerName cnzhx.net
ServerAlias www
DocumentRoot /srv/www/cnzhx.net/public_html

<Directory "/srv/www/cnzhx.net/public_html/">
    Options FollowSymLinks
    AllowOverride All # 这样设置就可以在网站文件的目录中使用 .htaccess
    Order allow,deny
    Allow from all
</Directory>

ErrorLog /srv/www/cnzhx.net/logs/error.log
CustomLog /srv/www/cnzhx.net/logs/access.log combined
#ServerSignature Off
</VirtualHost>

#
# test.cnzhx.net
#
<VirtualHost *:80>
ServerAdmin admin@cnzhx.net
ServerName test.cnzhx.net
ServerAlias test
DocumentRoot /srv/www/test.cnzhx.net/public_html

<Directory "/srv/www/test.cnzhx.net/public_html/">
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

ErrorLog /srv/www/test.cnzhx.net/logs/error.log
CustomLog /srv/www/test.cnzhx.net/logs/access.log combined
#ServerSignature Off
</VirtualHost>

#
# phpMyAdmin,访问地址:http://12.34.56.78:2082
#
<VirtualHost 12.34.56.78:2082>
ServerAdmin admin@cnzhx.net
DocumentRoot /srv/www/phpmyadmin/public_html
#<Directory "/srv/www/phpmyadmin/public_html/">
#    Options FollowSymLinks
#    AllowOverride None
#    Order allow,deny
#    Allow from all
#</Directory>

ErrorLog /srv/www/phpmyadmin/logs/error.log
CustomLog /srv/www/phpmyadmin/logs/access.log combined
#ServerSignature Off
</VirtualHost>

虽然配置文件写好了,但是还不能启动 httpd 进程,因为上面设置的各个文件夹(网站目录)还没有创建。

创建各个虚拟主机的文件夹

mkdir /srv/www/cnzhx.net/public_html -p
mkdir /srv/www/cnzhx.net/logs
mkdir /srv/www/test.cnzhx.net/public_html -p
mkdir /srv/www/test.cnzhx.net/logs
mkdir /srv/www/phpmyadmin/public_html -p
mkdir /srv/www/phpmyadmin/logs

现在可以启动 Apache 进程 httpd

/etc/init.d/httpd start

如果已经做好了 DNS 域名解析,现在用浏览器打开域名应该能够看到 Apache 的测试页面。

为了能够在系统启动时自动运行 Apache 服务器,需要运行下面的指令:

/sbin/chkconfig --levels 235 httpd on

然后重新加载 httpd

/etc/init.d/httpd reload

或者重新启动 httpd

/etc/init.d/httpd restart

2.3 安装和配置 MySQL 数据库服务器

2.3.1 安装

yum install mysql-server

2.3.2 加入随系统启动

/sbin/chkconfig --levels 235 mysqld on

2.3.3 启动 mysql 守护进程(mysqld)

/etc/init.d/mysqld start

2.3.4 安全配置 MySQL

使用 MySQL 内建的安全配置脚本进行配置

mysql_secure_installation

这里需要配置 mysql 根用户和密码、清除其他用户、清除不需要的数据库等。然后使用 MySQL 的 root 帐户(不同于 Linux 的 root 帐户)登录进去

mysql -u root -p

输入密码后回车,可以看到命令提示符变为 mysql>

创建一个新数据库给 WordPress 用(这里取名为 wordpress,也可以用别的名字)

create database wordpress;

创建一个新用户,并将该数据库的权限赋给他(这里只是举例,用户名为 newdbuser,密码为 dbuserpassword)

grant all on wordpress.* to 'newdbuser' identified by 'dbuserpassword';

更新权限

flush privileges;

退出数据库

quit

其它的先不做了,回头用图形界面的 phpMyAdmin 来做。

2.4 安装和配置 PHP

安装

yum install php php-pear

确保配置文件 /etc/php.ini 中有下面的语句(某些数值可以后再调整):

error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
display_errors = Off
log_errors = On
max_execution_time = 300
memory_limit = 32M
register_globals = Off

2.5 安装 php-mysql

为了在 PHP 中使用 MySQL,还需要安装这个 php5-mysql 包:

yum install php-mysql

3 安装和配置 phpMyAdmin

Remi 安装源上有最新的 PHP、MySQL 以及 phpMyAdmin 的 Yum 安装包,可以方便安装、更新。但是正在使用的 Linux 发行版 CentOS 6 上的软件包可能版本要求不一样,所以使用 Yum 安装源优先级插件来进行控制。

3.1 安装使用 Remi Repository

选择合适的源地址来安装,参考方法:Remi 安装源

3.2 禁用 Yum Priorities 并执行系统升级

(已不需要 priorities 插件,见 Remi 安装源,2014.11.13)

更新系统

yum update

3.3 安装phpMyAdmin

yum install phpmyadmin

嗯,前面已经打好基础了,所以这里就是这么简单。

3.4 配置

phpMyAdmin 的默认安装目录是 /usr/share/phpMyAdmin,同时会在 Apache 的配置文件目录中自动创建虚拟主机配置文件 /etc/httpd/conf.d/phpMyAdmin.conf (区分大小写)。在这个配置文件中有设置:

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

也就是说,我们可以通过绑定到 Apache 服务器上的任何域名访问 phpMyDdmin。比如这里可以通过 cnzhx.net/phpmyadmin 或者 cnzhx.net/phpMyAdmin 访问。但是这样一来,phpMyAdmin 的内容就与网站内容混到一起了。所以,为了使用习惯的地址加端口的模式,即 IP:port/phpMyAdmin 的链接形式访问 phpMyAdmin,加 # 注释掉上面的 Apache Alias 规则(在上面每一行 Alias 前面加上 # 号),并在

allow from ::1

那一行的后面另起一行输入

Allow from All

保存退出,使之可以从任何地方都可以访问。如果本地电脑是固定 IP 的,为了安全,也可以将上面的 All 改为本地电脑的 IP。咱的 ADSL 就不好享受这样的待遇了。

因为在前面创建虚拟主机配置文件 /etc/httpd/conf.d/vhost.conf 的时候已经为 phpMyAdmin 配置了一个端口为 2082 的虚拟主机,只能通过该虚拟主机(端口)访问 phpMyAdmin。因为 /srv/www/phpmyadmin/public_html 配置为 phpMyAdmin 的虚拟主机目录,为该目录创建软链接到 phpMyAdmin 安装目录(/usr/share/phpMyAdmin):

ln -sf /usr/share/phpMyAdmin /srv/www/phpmyadmin/public_html

修改 phpMyAdmin 的配置设置

vi /etc/phpMyAdmin/config.inc.php

找到其中的如下代码段:

$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['blowfish_secret'] = '随便填上一串乱七八糟的字符即可';

按照上面的提示填写 blowfish_secret 字符串。其他的不用修改,保存并退出。

3.5 重起 Apache 使配置生效

service httpd restart

该指令在这里等同于

/etc/init.d/httpd restart

现在就可以通过 ip:port/phpMyAdmin (将 IP 换为 VPS IP,端口为前面 2.1 中设置的 phpmyadmin 的虚拟主机端口,注意大小写)访问 phpMyAdmin 了。

使用前面创建的用户名和密码(2.3.4 中 grant 语句中包含的用户名和密码)登录 phpMyAdmin。

然后还可以按照自己的使用习惯对 phpMyAdmin 的行为进行配置,请参考我写的另一篇文章:个性化配置 phpMyAdmin

3.6 重新开启 YUM 源优先级插件

这里实际上并没有用到 YUM 源优先级插件,之所以先安装这个插件,就是为了在这里再重新开启这个插件,以防止以后不小心破坏了系统的稳定性。

重新修改其配置文件,将 enabled=0 改为 enabled=1,保存退出。

4 创建一个新帐户以访问网站文件

因为按照本文的安装方法,Apache(httpd 进程) 的运行用户为 apache,不做改动的话,WordPress 的运行用户也就是 apache 了。访问服务器的时候虽然可以用 root,但是安全起见,最好禁止 root 用户远程登陆服务器,(20141025修改)而 http 服务的用户 apache 又不能用来登录并管理服务器,所以这里新建一个普通用户用于远程管理网站文件,而管理服务器的时候可以通过这个用户登录后 su root 来执行。

并将网站文件夹的所有者(owner)改为新建的这个用户(20141025修改,但是这么做有个极大的缺点就是,运行网站,比如 WordPress,的用户 apache 对网站没有完全权限而不太方便,这个在本小节结尾处有提供解决方法。)。

4.1 增加新用户

useradd username

这里只是举例,使用 username 做为用户名,下同。Linux 中的用户相关操作可以参考这篇文章,有关于 useradd、passwd 等指令的介绍。

4.2 为新用户设置密码

passwd password

4.3 修改 /srv/www/ 的子目录和文件的属主和组为新用户(username)及其组(username)

chown -R username:username /srv/www/*

-R 表示递归操作所有子文件夹。

4.4 上传网站文件

使用新创建的用户,通过 FileZilla(或其它 sftp 软件)登录服务器,将网站文件上传到前面设置虚拟服务器时设定的文件夹,这里:

  • cnzhx.net 的文件位于 /srv/www/cnzhx.net/public_html 目录下;
  • test.cnzhx.net 的文件位于 /srv/www/test.cnzhx.net/public_html 目录下。

4.5 文件及文件夹权限设置

2012.03.11

根据这一段时间实践的经验,要使 WordPress 可以正常运行,分两种情况:

  1. 如果文件及文件夹的属主是 apache,只需要文件 644,文件夹 755 的权限;
  2. 如果文件及文件夹的属主不是 apache,则需要文件 664,文件夹 775 的权限。

使用 WordPress 的时候需要上传附件、更新插件或者 WordPress 本身等操作,这些操作需要对特定的某些文件、目录有写入权限。有 2 个解决方案:

1、(修订 – 2012-02-29)接受网友建议,安全起见,在更改文件/文件夹属性(chmod 操作)的时候,不使用 2775 而是用 775。其中前面的 2 表示使文件/文件夹所属组(及其成员)拥有该文件/文件夹所有者(属主)的相同权限。这样做虽然很方便,但是毕竟会有不小的风险。如果已经按照之前的方法操作,可以使用下面的命令进行修正后再重新设置。修正命令:

进入网站根目录,以本文为例:

cd /srv/www/cnzhx.net/public_html

所有文件夹属性修改为 775

find -type d -print0 |xargs -0 chmod 775

将所有文件的属性修改为 664

find -type f -print0 |xargs -0 chmod 644

2、强烈不推荐使用下面的第 1 种方法。实际上,因为 apache 这个虚拟用户本身的权限就很小,即使按照之前的方法操作也不会有多大安全问题,但前提是没有用 root 帐户来管理网站文件。

  1. 方法 1:(20141025修改,简单起见推荐这种设置)在 WordPress 后台可执行一切更新插件或 WordPress 本身的操作,可上传附件,可使用 WPSC 等缓存插件,等等等等。这就要求赋予 apache 用户比较大的权限,可如下操作(以 cnzhx.net 一个网站为例):网站文件的属主仍为刚才创建的用户 username,但是将网站文件所属组改为 apache 的组 apache(2014.10.25修改)直接将该网站文件夹的所有者和组都改成 apache,但是将新建的管理用户增加到 apache 组并使该组有 2775 的权限(也许可以是 2770),即,所有文件和文件夹以及新建的文件夹和文件都对用户 apache 和组 apache 完全可读可写可执行。顺次输入命令,
    cd /srv/www/cnzhx.net/public_html
    chown -R apache:apache *
    chmod 2775 -R *
    usermod -a -G apache username

    最后一行指令将用户 username 添加到 apache 组中。
    重起 Apache 服务(service httpd restart)使之生效。

  2. 方法 2推荐保守一点的方案是,仅保证 WordPress 后台可以上传附件,使用 WPSC 等缓存插件,而更新插件和 WordPress 的操作通过 ftp 上传更新文件的方式来进行:仅仅修改受影响的部分文件夹的所属组属性即可。(20141025修改)这样比较麻烦的就是,通过 WordPress 后台上传的文件会是 apache:apache 的所有者和组,如果要通过 SSH 进行 ftp 登录和修改就需要先修改为 apache:username。进入 WordPress 安装目录的 wp-content 目录中:
    cd /srv/www/cnzhx.net/public_html/wp-content/

    首先为了保证上传附件功能,修改 uploads 文件夹以及其子文件夹和文件的属性(属主改为 apache,组不变:

    chown -R apache:username uploads
    chmod 755 uploads

    如果 uploads 文件夹中已有原先建立的一些文件,还需要执行如下操作:

    继续进入 uploads 目录

    cd uploads

    修改该文件夹中的其它文件属性

    find -type d -print0 |xargs -0 chmod 755
    find -type f -print0 |xargs -0 chmod 664

    其次,如果是 WordPress 多站点模式,还需要按照同样的方法修改 /wp-content/blogs.dir 目录属性:

    # 接着前面的操作,返回上一层目录 wp-content
    cd ..
    # 修改 blogs.dir 文件及其子文件夹和文件的属主和组
    chown -R apache:username blogs.dir
    # 修改 blogs.dir 文件夹本身的权限
    chmod 755 blogs.dir
    # 进入 blogs.dir 文件夹
    cd blogs.dir
    # 修改其内部所有文件和文件夹属性
    find -type d -print0 |xargs -0 chmod 755
    find -type f -print0 |xargs -0 chmod 664

    这里,为了让服务器用户 username 可以使用 ssh 修改由 apache 创建的文件,还需要将 username 添加到 apache 组中:

    usermod -a -G apache username

    (2013.03.07 新增,参考 Linux 中将用户添加到组的指令。)

    第三,为了使 WPSC 可创建缓存文件,在 wp-content 目录下新建文件夹 cache,并同样修改属性:

    mkdir cache
    chown -R apache:username cache
    chmod 755 cache

    不过,如果要安装 WPSC,还是需要按照其提示做一些操作的。

5 优化及安全

安装完服务器,进行了基本的配置之后,下一步就该考虑安全和优化问题了。进行基本的安全设置非常有必要,这样可以避免被人“无意”中入侵。

请分别参考下列系列文章:

6 更新说明

个别地方的更新说明就放在原地,较大范围的更新说明放在这里。

2014.10.25

修改了第 4 小节中的内容。

简单来讲,方法 1 让 WordPress 有很大的权限,因为它只要运行就可以修改网站文件夹的所有内容,方便,但是有风险(比如恶意插件或主题可以修改 WP 的代码);方法 2 只让 WordPress 对通过 WP 后台上传的文件的存放目录具有“写入”权限,它就不能随意修改其它 WordPress 源代码,但是有需要的时候就得麻烦我们自己手工修改了。

2014.04.30

增加优化及安全一节内容,以及局部的影响不大的小修改。

2012.09.02

  1. 将文中用到的原日本节点的 IP 更改为新 Fremont 节点的 IP,虽然仅仅是举个例子,可用别人的 IP 毕竟不太好;
  2. 增加 IPv6 支持。

7 参考资料

  1. Linode: Set up a LAMP Server on CentOS 6
  2. Linode: Linux Static IP Configuration
  3. WinHost: MySQL – phpMyAdmin
  4. 远方博客: linode vps 搭建LAMP实录-Centos 5.5
  5. WordPress Codex: 更改文件权限

如果各位网友有什么好的建议,欢迎留言讨论。©

本文发表于水景一页。永久链接:<https://cnzhx.net/blog/vps-centos-6-lamp-phpmyadmin/>。转载请保留此信息及相应链接。

83 条关于 “Linode VPS 上 CentOS 6 安装 LAMP + phpMyAdmin 记录” 的评论

  1. 呵呵,我的一般都是cp的vps版面板(不重要,正版授权面板,美国空间伤不起)或自己慢慢编译环境(对我来说重要的或需要特殊环境的)

    • 自己用的话就不需要面板了吧。
      自己慢慢编译?太叫人崩溃了。真佩服你的耐心。

  2. Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all

    这一部分可以缩写吧。一来直接使用因为你已经指定了DocumentRoot了,二来,我发现每一个虚拟机这部分内容都是一样的,可以直接拿到VirtualHost外面去,这样只需要写一个,就能匹配上所有的。

    另外你这种,把phpmyadmin使用独立的端口形式,有点意思,不错,呵呵,不过个人建议加一个简单的auth也好。端口毕竟好扫描,一旦被扫到了,那你的mysql也就直接被暴露了,而且root的用户名会显得如此的明显,嘻嘻

    • 多谢老朋友提醒,的确可以缩写,而且似乎 httpd.conf 里已经有这个语句了。
      另外,单独给 phpMyAdmin 的访问加上 auth 认证还不会呢,有课推荐的文章吗?当然用户肯定不是 root 啦。

      • 没事的,你是再说documentroot这句吗?httpd.conf的那句描述的是当相应的访问没有找到相应的配置文件时,默认的documentroot。而设定Directory /相当于一个正则匹配,匹配上所有站点的根目录设定。mysql有一个用户名是root吧,它是限定在localhost访问的吧,但通过phpmyadmin的时候,难道你把这个root账号给屏蔽掉了?否则这不是一个很显而易见,爆破的目标吗?

        • 真是“听君一席话,胜读十年书”啊。这几天再来精简一下配置,然后做做安全工作。

  3. 加上尖括号后后把东西弄丢。Directory “/srv/www/phpmyadmin/public_html/” 可以写成Directory /
    ServerSignature Off 也可以拿到VirtualHost外面,成为一个全局的设置。

      • 好家伙,都兼职网管了呀。昨天,我知道的一个人也是和我一样用阿里云的,本身带宽已经是10Mbps,被攻击了,准确来说,是DDOS,每秒速度达到18MB,结果悲剧的被丢进了阿里云那所谓的黑洞里呆上24小时。这让我意识到对任何一个端口都做上连接数限制,是多么的必要。

        • 是对外服务的端口做连接数限制。内部不限制。

          还有,我感觉你有必要检查下,我发现打开页面的速度快,但发表评论时,那个等待,有点长

          • 嗯,这个倒没有发现,我查查看是怎么回事。估计是数据库反应太慢了吧。你有没有什么好的建议?

        • 呵呵,其实不是做网管,是为了我们部门的一个小服务器。
          这人是不是得罪谁了啊,居然被这样攻击了。不过辛亏你提醒,不管怎样,还是做个连接数限制吧。嗯,对了,你做过了的话把方法 email 给我吧 :D

  4. 引用通告: Linux VPS 安全策略记录 | 水景一页

  5. 引用通告: phpMyAdmin “Cannot start session without errors” | 水景一页

  6. 引用通告: 配置 phpMyAdmin | 水景一页

  7. 博主,我按照你这种配置了.但是有个问题,就是访问第二域名会自动跳转到第一个域名上,这个会是什么原因呢?谢谢了.

    • 我也遇到过这样的问题。现在能记得可能的原因有2个:

      • ServerAlias 后面的字符没有区分开。这里不能带 . 的,不然它只认 . 前面的部分;
      • DocumentRoot 后面的路径是不是写成一样的了?还有 Directory。
      • 如果确认没弄错,可以将你的配置发到我邮箱里我看看。

  8. 引用通告: 使用 ibdata 和 frm 文件恢复 MySQL 数据库 | 水景一页

  9. 您好,我按照您的文章配置了WordPress博客网站文件的权限和属性,发现可以正常上传文件,但是在进行插件更新时,系统提示需要输入Ftp主机地址,帐号和密码,请问这个怎么解决,网站文件的权限我不想再动,能否配置 wordpress 和 vsftpd 来解决这个问题?

    • 1、手动上传需要更新的插件。
      2、让 Apache 对 plugins 目录可写(直接将属主改了就行)。
      3、配置 ftp。我没有配置过。

    • 你装个vsftp,这个软件配置晚上挺多的 你搜下,我vps出问题了 不然我把我的配置g给你贴下,不难的

  10. 和你用的是一样的空间,但是我的VPS是合租的。省去麻烦了。

    • 稳定比什么都重要 我刚买的一个杂牌 今天就动弹不得了

  11. 引用通告: 更换 Linode VPS 数据中心 | 水景一页

  12. 引用通告: Solve Problem of No Themes Show Up in Themes Page of WordPress | 水景一页

  13. 引用通告: 解决升级 WordPress 3.4 后主题列表里所有主题都消失的问题 | 水景一页

  14. 你好,你用的编辑器是什么啊 很喜欢你这篇文章的编辑风格,比如每个主题标题蓝色的 还可以回到顶部,能告诉我下吗 谢谢

    • 1、文章内部标题蓝色底色是设置了 h2 的样式(我使用的是标题二),样式如下;
      2、回到顶部的按钮这里有介绍:http://cnzhx.net/blog/back-to-top-button/ 。

  15. 谢谢你的回复,用蓝色标记的标题旁边有个累死音乐符号,点了后可以让蓝色标题顶着最上面 这个功能怎么加的呢 谢谢

  16. 1、文章内部标题蓝色底色是设置了 h2 的样式(我使用的是标题二),样式如下;

    你没给我样式额 就是蓝色的二级标题样式。嘿嘿,麻烦给我下吧

    • 如果你也用 Chrome 的话,右键单击页面上的标题并选择查看页面元素的话是很容易获取其样式的。
      给出我的,基于 2011 主题,你看看在你的主题里会不会变样儿:

      .entry-content h2 {
      font-size:1.5em;
      padding:0;
      margin:0.5em auto;
      line-height:2em;
      text-indent:10px;
      font-weight:bold;
      background-color: #4787ED;
      background-image: -webkit-gradient(linear,left top,left bottom, from(#4787ED),to(#3079ED));
      background-image: -webkit-linear-gradient(top,#4787ED,#3079ED);
      background-image: -moz-linear-gradient(top,#4787ED,#3079ED);
      background-image: -ms-linear-gradient(top,#4787ED,#3079ED);
      background-image: -o-linear-gradient(top,#4787ED,#3079ED);
      background-image: linear-gradient(top,#4787ED,#3079ED);
      border: 1px solid #3079ED;
      color:#fff;
      }

      • 嗯嗯 谢啦 我用那个看 得到的信息不完整,对了 你的代码配色的插件是什么呢 我的虽然强大 但是配色没这么好看

        • 你说的是哪个代码啊?指的是我上面发给你的样式里面的颜色吗?我没用什么配色的插件的。

  17. 不是 我说的是你配置信息 用高亮显示的配置信息
    比如
    # 接着前面的操作,返回上一层目录 wp-content
    cd ..
    # 修改 blogs.dir 文件及其子文件夹和文件的属主和组
    chown –R apache:username blogs.dir
    # 修改 blogs.dir 文件夹本身的权限
    chmod 755 blogs.dir
    # 进入 blogs.dir 文件夹
    cd blogs.dir
    # 修改其内部所有文件和文件夹属性
    find -type d -print0 |xargs -0 chmod 755
    find -type f -print0

    这种代码周围的样式你不是用代码插件做的样式?

  18. 超感谢站长的文章。。。很详细,除了2.1 #那里稍微修改了下其他都很完美很全面。。

    再次说声谢谢。

    • 这是我当时装机的记录,很高兴对你有用。如果不介意的话就给我打个分吧 :D

      • 已经打了分了

        这里

        应该是*:2082吧
        还有后面安全配置的文章不够详细。新人研究有难度。呵呵

        • 谢谢!
          使用 * 或者 IP 地址都可以。使用 IP 地址的话就不能通过域名+端口访问了。
          安全配置写得不够清楚,是指后面的 iptables 部分吗?

  19. 引用通告: CentOS 6.3 发布 | 水景一页

  20. 引用通告: 在 Linode VPS 的 LAMP 平台上部署 SSL 加密服务 | 水景一页

  21. 引用通告: Linode VPS 上启用 IPv6 支持 | 水景一页

  22. 引用通告: Windows 8 下载内容被 Google 从搜索结果中移除 | 水景一页

      • 菜鸟把Linode VPS 搞定了,网站搬到VPS后,对收录、PR值、ALEXA排名起到了立竿见影的效果,谷歌收入增加了一半,网站首页PR升到了3,ALEXA排名更是突飞猛进,上升了两百多万名。

        • 哈,虽然对网站性能提升有帮助,也不至于那么夸张吧,估计你的网站本来就快要升PR了。

  23. 引用通告: Linux 中将用户添加到组的指令 | 水景一页

  24. 引用通告: 使用 Zend Opcache 加速 PHP | 水景一页

  25. 引用通告: 从 MySQL 迁移到 MariaDB (CentOS) | 水景一页

  26. 引用通告: 创建自己的网站 | 水景一页

  27. 引用通告: Linode VPS 上更换系统的一个快捷方法 | 水景一页

  28. CentOS7参考这个教程貌似不行,安装httpd就出错了,有没有针对centos7的教程?谢谢。

    • 暂时还没想过 CentOS 7 的事情。等周末我弄个虚拟机跑一下试试,看看能不能把之前的文章修改一下。

  29. 引用通告: CentOS 7 / RHEL 7 上安装 LAMP + phpMyAdmin | 水景一页

  30. 你好 我执行到 vim /etc/yum/pluginconf.d/priorities.conf 一步 发现里面没有默认的参数 空白文件 是我找错了吗,还是直接里面填写 enabled=0,保存退出即可, 我的是 Centos 6.5 64位

    • 嗯,不是,你没错。现在不用理会 priorities.conf 的事情了。
      是因为我最近我修改了 3.1 引用的那篇文章,去掉了安装 priorities 插件的部分,然后这里又忘记修改了。

  31. 非常感谢, 请教一个问题, 如果liunx系统有漏洞, 经常 执行 yum update 就可以了吗? windows升级补丁比较简单, linux没方向.

    • 虽然说升级补丁并不意味着万无一失,可还是经常升级吧。如果怕忘记,可以设置成每隔一定时间自动执行。使用 crontab

  32. 友情提醒下
    mkdir –p /srv/www/cnzhx.net/public_html
    这里的 -p 是全角, ,怕别人无法复制,

  33. 我的做法是这样的

    #find / -name *.cnf
    #cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
    #vi /etc/my.cnf
    [client] 下面增加
    default-character-set=utf8
    [mysqld] 下面增加
    character_set_server=utf8

    重启数据库后
    数据库查询 看结果

    SHOW VARIABLES LIKE ‘collation_%’

    Variable_name
    Value
    collation_connection
    utf8_general_ci
    collation_database
    utf8_general_ci
    collation_server
    utf8_general_ci

    (默认collation_server latin1_swedish_ci )
    当然,大家可以根据以前的老站数据库编码做相应修改, 新站建议utf8

  34. 求助, 按照楼主的过程我都来了一次 顺利添加了域名, 现在我要添加新域名 增加了目录和复权 并在 /etc/httpd/conf.d/vhost.conf 增加了下面的 重启了服务器 ,
    但是访问新域名 永远跳到第一个网站

    #
    # mydomain2.com
    #

    ServerAdmin admin@mydomain2.com
    ServerName mydomain2.com
    ServerAlias www
    DocumentRoot /srv/www/mydomain2.com/public_html/

    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all

      • 很抱歉打扰了, 好像问题找到了 , 目录权限没有严格按照楼主说的操作 . 非常感谢帮助

  35. 今天早上用你的链接买了 linode, 以后有问题再来请教 谢谢

  36. 我选的是 Linode 1024 部署只有 CentOS 6.5 Profile (Latest 64 bit , 没有32位的, 64位用1gb内存 不够啊….

    • 够了吧?我现在就用的挺好的。如果你除了网站还有别的服务就不知道怎么样了。
      上次升级之后受到基础架构的限制就不提供32位的了。

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)