分类: 系统运维
2016-06-16 14:26:44
之前根据在 Linode VPS 上部署 LAMP 服务器的经验写了安装记录,得到不少网友的亲睐。随着 CentOS 7 发布,安装过程发生了不少变化。因此在虚拟机上跑了一下,根据之前的记录做了修改,以供参考。主要注意的是,现在数据库由 MySQL 改成 MariaDB 了,故而 LAMP 代表的就是 Linux + Apache + MariaDB + PHP 了。
新的 CentOS 与 RHEL 的关系越来越密切,以下的安装过程同时适用于 CentOS 7 及 RHEL 7 发行版。但是因为不是在当前实际的 Linode VPS 环境下测试的,可能某些地方会与实际情况有出入,还请大家指正。
作为一个全新的教程,还是简单介绍一下背景吧。
系统:新的 CentOS 7 采用了 systemd,因而某些指令有所变化;现在使用 MariaDB 替代 MySQL作为数据库软件,这里也将直接安装 MariaDB。
Linode VPS:虽然 Linode 一直在升级改造,但是基本的东西还是没什么变化,而且现在有试用了没了。用 Visa / MasterCard 信用卡购买 Linode VPS 还是非常方便的,选择套餐 – 注册 – 选择服务器位置并付款(输入信用卡信息)就行了(已经没有年付折扣了)。
在 Linode 上部署系统应该也没什么变化:
1. (登录)进入控制中心 – 进入 Dashboard – Deploy a Linux Distribution
2.
选择 Linux 发行版(Distribution) – 设定磁盘大小(单位 MB)- 选择是否使用交换空间(swap) – 设定 root 密码(以后还能改)等,然后点击 Deploy 就开始安装系统了。
*注意:还可以在选择 Linux 发行版的时候,直接使用选择框右边的 Deploying using 的提示来选择在安装系统的同时部署一个 LAMP 的服务器环境。但是对于新手来说还是自己走一遍这个过程比较好,为以后修改、优化积攒经验。
这些操作都是一目了然的,没什么难度,特别是 Linode 还有详细的。可是配置 LAMP 服务器就比较费事了。虽然一键安装的快捷编译安装脚本,或者 Linode 上的自动化安装脚本很省事,可自己把这些过程走一遍是有利于以后维护服务器的。
下面记录的安装和配置 Linux + Apache + MariaDB + PHP + phpMyAdmin 服务器环境是从使用Putty 等 SSH 远程登录软件连接到 VPS 之后开始的。也就是说,Linux 应该已经安装好了。(如果要在本地用虚拟机测试,或者希望了解更多的关于使用 VPS 的心得体会,请同时参考我的 VPS 学习之路系列文章。)
快捷阅读目录
1. 系统运行环境
2. 基本设置
A. 设置 HOSTNAME
B. 配置 vim
D. 配置网络
E. 设置时区
3. 安装 LAMP
A. Apache
B. MySQL
C. PHP
D. php-mysql
6. 优化
7. 更新说明
8. FAQ
9. 参考资料
0 系统运行环境?
1. Linux Distribution: CentOS 7 64bit
2. RAM: 1024MB
3. Disk Space: 5GB
4. 域名: cnzhx.net
5. IP 地址: 12.34.56.78 (这是个示例用的 IP,没有实际意义)
6. SELinux 已禁用
注意:上面示例用的内容应该换成自己的;建议内存不小于 1GB 的安装 64 位系统,比如因为这个。
切记:因为系统不同,指令可能有所不同;硬件不同,配置方式也可能有些不同。强烈建议实战前先在自己的电脑上用 VirtualBox 之类的软件创建个虚拟机先练练手。可参考我的 VPS 学习之路。
1 基本设置?
这一部分参考 Linode 知识库 – 参考资料 1。
1.1 设置 HOSTNAME?
先将配置写到 /etc/sysconfig/network 文件的末尾。直接用 echo 指令将内容使用 >> 操作符附加到该文件最后一行即可,(注意该条语句各部分之间的空格,一共三个)
echo "HOSTNAME=cnzhx.net" >> /etc/sysconfig/network
然后设置 hostname,
hostname "CnZhx"
我给设置成自己的主域名,即 CnZhx。
1.2 配置 VIM?
注意:
o Linode 上直接部署的 CentOS 7 中已经安装了 vim。
o 如果系统中没有安装 vim,可以试试看 vi,只是没有 vim 好用和好看罢了。
o 如果不用 vim 就直接跳到下面的 1.3。
或者先安装 vim 也行:
yum -y install vim
为了使之彩色显示代码,同时还支持行号标记和鼠标定位,需要编辑 vim 配置文件:
vim /etc/vimrc
从键盘输入 i 进入编辑模式,按键盘上的 PgDn (或上、下、左、右键)到文本最后一行最后一个字符之后按回车换行,在末尾分两行输入:
set nu
set mouse=a
从键盘输入 Ctrl+c,然后输入 :wq 保存、退出(这里 : 号表示退出编辑模式进入指令模式,w 表示保存,q 表示退出)(单纯的退出而不保存则是输入 :q,强制退出则是 :q!)。
1.3 更新 HOSTS 配置文件 /ETC/HOSTS?
这个文件的作用跟 Windows 中的 HOSTS 类似,可以给本地系统直接解析域名,这里设置了之后,这个系统本身访问 cnzhx.net 就不需要访问域名解析服务器了。
输入
vim /etc/hosts
打开编辑。在最后添加(注意 IP 地址与域名之间的空格),
12.34.56.78 cnzhx.net
保存退出。
1.4 配置网络?
注意:首次使用可以跳过这一步,直接使用 Linode 安装系统后的默认配置,等以后再配置静态 IP。
其实一个服务器就相当于一台个人电脑,只不过 IP 地址是固定的公网的 IP。因而可以在自己的域名管理系统那里将域名的 IP 指定为这个特定的 IP,然后别人就可以通过域名访问到这个 IP 地址所在的服务器(域名解析服务器会做转换)。然后这个服务器上安装了相应软件就可以提供网站服务了。
默认情况下,Linode VPS 使用 DHCP 来配置网络,这样做需要 VPS 运行 dhcp 客户端进程来从主控制台获取本 VPS 的 IP。当然会浪费一些资源了(CPU和内存),而且还需要开放 63 端口。所以这里采取静态网络配置来避免这些问题。
网络配置与选择的 VPS 服务商的配置有关,一般服务商提供的文档都会有说明的。
如果要增加 IPv6 支持,请参考 Linode VPS 上启用 IPv6 支持。
从 Linode Manager 的 Dashboard 中的 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
保存并退出。
然后(如果使用了 DHCP 自动获取 IP 则可以跳过此步骤直接跳到下面的 1.5 继续):
vim /etc/sysconfig/network-scripts/ifcfg-static-eth0
如果是 VirtualBox 虚拟机,则是,
vim /etc/sysconfig/network-scripts/ifcfg-static-enp0s3
对应录入,
# 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.
IPADDR0=12.34.56.78
# 不再用 netmask; 24 表示公网IP;17 表示内网 IP
PREFIX0=24
# gateway
GATEWAY=12.34.56.1
# 如果还有另一个公网 IP 23.45.67.89
IPADDR1=23.45.67.89
PREFIX1=24
保存并退出。
因为 DHCP 已经不需要了,可以使用 systemctl list-unit-files --type=service 命令查看 dhcp 相关服务的状态,然后停止它们。甚至可以删除相关软件包:
yum remove dhcp
重起 VPS 即可生效。
1.5 设置时区为 HONGKONG?
将香港时区文件设置符号链接到 localtime
ln -sf /usr/share/zoneinfo/Hongkong /etc/localtime
timedatectl list-timezones # 需要从这个列表中退出的话直接按 q 键即可。
timedatectl set-timezone Asia/Hong_Kong
timedatectl
更详细配置说明请参考:正确配置 Linode VPS 系统时间。
2 安装 LAMP?
2.1 先更新系统
yum update
2.2 安装并配置 APACHE 网络服务器?
CentOS 7 中默认的是 Apache 2.4 版本,Apache 官网有份很好的 vhost.conf 配置实例。
安装
yum install httpd
备份配置文件(建议对于所有的配置文件,做任何更改前都先备份一份,以便应对未知错误)
mkdir ~/confbak
cp -R /etc/httpd ~/confbak
其中 ~ 表示当前登录用户的用户文件夹;-R 参数表示递归到所有子目录。
默认情况下 Apache 加载的模块(.so)过多,作为个人用的简单服务器可以比较安全的禁用其中一些模块,以提高 Apache 的性能、减少内存占用。请参考。
因为默认情况下,位于 /etc/httpd/ 目录下的所有以 .conf 结尾的文件都会被 Apache 读取,并按照字母顺序加载做为 Apache 的配置,所以增加虚拟主机的时候,实际上不需要修改/etc/httpd/conf/httpd.conf,而是在 /etc/httpd/conf.d/ 下新建一个配置文件vhost.conf 来配置虚拟主机。
也有人每个虚拟主机(或网站、或域名)都单独弄个 conf 文件,比如 cnzhx.net.conf、test.cnzhx.net.conf、phpmyadmin.conf 等。这个看自己的喜好还有使用方便而定吧。
另外就是,水景一页建议另建一个 common.conf 文件来放置一些公共的设置,如果不想每次都去修改 httpd.conf 这个 Apache 的主配置文件的话。
配置虚拟主机(/etc/httpd/conf.d/vhost.conf )
vim /etc/httpd/conf.d/vhost.conf
输入下面的内容(# 号后面的该行内容是注释):
1. 下面有路径中使用了域名 cnzhx.net 来做文件夹的名字,只是为了方便区分不同的域名,无它意。
2. 在服务器上一行行输入还是挺麻烦的,可以在本地编辑好了,然后通过 sftp 上传过去( filezilla 就挺好,有中文界面,还支持 ssh 登录(选择 sftp 模式即可))。
#
# 主机 1
# cnzhx.net
#
ServerAdmin admin@cnzhx.net
ServerName cnzhx.net
ServerAlias www
# 非常感谢 cheers 的提醒,虽然测试显示无影响,但 Apache 文档如此要求
# 注意下面这行末尾不要带 /
DocumentRoot /srv/www/cnzhx.net/html
Options FollowSymLinks
# 下一行这样设置就可以在网站文件的目录中使用 .htaccess
AllowOverride All
# 下一行是替代 Allow from all 的新机制
Require all granted
ErrorLog /srv/www/cnzhx.net/logs/error.log
CustomLog /srv/www/cnzhx.net/logs/access.log combined
ServerSignature Off
#
# 主机 2
# test.cnzhx.net
# 这是另一个位于同一服务器的网站,如果不需要则删除此段配置
#
ServerAdmin admin@cnzhx.net
ServerName test.cnzhx.net
ServerAlias test
DocumentRoot /srv/www/test/html
Options FollowSymLinks
AllowOverride All
Require all granted
ErrorLog /srv/www/test/logs/error.log
CustomLog /srv/www/test/logs/access.log combined
ServerSignature Off
#
# 主机 3
# 为了以后给访问 phpMyAdmin 的时候用,也可以是别的端口,如 4444
Listen 2082
#
# phpMyAdmin,访问地址:
#
ServerAdmin admin@cnzhx.net
DocumentRoot /srv/www/phpmyadmin/html
Options FollowSymLinks
AllowOverride None
Require all granted
ErrorLog /srv/www/phpmyadmin/logs/error.log
CustomLog /srv/www/phpmyadmin/logs/access.log combined
ServerSignature Off
虽然配置文件写好了,但是还不能启动 httpd 进程,因为上面设置的各个文件夹(网站目录)还没有创建。
创建各个虚拟主机的文件夹(根据需要增加或删除),
# 主机 1 的
mkdir /srv/www/cnzhx.net/html -p
mkdir /srv/www/cnzhx.net/logs
# 主机 2 的
mkdir /srv/www/test/html -p
mkdir /srv/www/test/logs
# 主机 3 的
mkdir /srv/www/phpmyadmin/html -p
mkdir /srv/www/phpmyadmin/logs
为了能够在系统启动时自动运行 Apache 服务器,需要运行下面的指令:
systemctl enable httpd
输出类似于,
ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'
然后启动 Apache 服务,
systemctl start httpd
如果上述指令提示说本来已经启动了 httpd,则重新加载它,
systemctl reload httpd
现在需要将 http 服务加入防火墙以允许外部访问(也就是将 HTTP 默认使用的端口 80 加入到防火墙允许列表里),
firewall-cmd --add-service=http --permanent
–permanent 参数表示这是一条永久防火墙规则,如果不加这个参数则重启系统后就没有这条规则了。
而对于自定义的用于 phpMyAdmin 的 2082 端口,也需要添加相应的防火墙规则。因为是非标准端口,直接用数字表示即可,
firewall-cmd --zone=public --add-port=2082/tcp --permanent
重启 Firewalld 使该规则生效,
systemctl restart firewalld
如果防火墙默认没有启动,则上述指令会提示错误,“FirewallD is not running”。那么先启用防火墙服务,
systemctl enable firewalld && systemctl start firewalld
其中 && 表示两条指令依次执行。
启动后再重新执行前两或三条指令,
firewall-cmd --add-service=http --permanent
firewall-cmd --zone=public --add-port=2082/tcp --permanent
systemctl restart firewalld
如果要查看加入后的防火墙规则,使用指令,
firewall-cmd --list-all
显示结果类似于,
public (default, active)
interfaces: enp0s3
sources:
services: dhcpv6-client http ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
如果已经做好了 DNS 域名解析,现在用浏览器打开域名应该能够看到 Apache 的测试页面了。(这里因为是在本地虚拟机上测试的,所以没用域名而是直接用的 IP 地址访问。)
SHAPE \* MERGEFORMAT
CentOS 7 服务器 Apache 安装成功
总结一下关键点,httpd 服务默认配置文件:
o 默认配置文件: /etc/httpd/conf/httpd.conf
o 加载模块的配置文件: /etc/httpd/conf.modules.d/ directory (e.g. PHP)
o 选择 MPMs (处理模式) [worker, prefork (默认是这个)] 和 event: /etc/httpd/conf.modules.d/00-mpm.conf
o 默认端口: 80 和 443 (SSL)
o 默认日志: /var/log/httpd/{access_log,error_log}
systemctl 是新的 systemd 下的系统控制指令,详情请参考 CentOS 7 / RHEL 7 systemd 指令一文。
还可以直接用 apachectl 来控制 Apache 服务执行一些操作,比如优雅地重新加载配置,
apachectl graceful
“优雅地”的意思是不中断客户的访问的情况下逐渐地将所有 httpd 进程更新为使用新配置的新进程。
详情需要查看其简单的帮助文件,
apachectl -h
其它重要的防火墙 Firewalld 选项有,
# firewall-cmd --state
# firewall-cmd --list-all
# firewall-cmd --list-interfaces
# firewall-cmd --get-service
# firewall-cmd --query-service service_name
# firewall-cmd --add-port=8080/tcp
2.3 安装和配置 MARIADB 数据库服务?
MariaDB 是在 MySQL 基础上重建的一个数据库软件,各 Linux 发行版都陆陆续续从 MySQL 切换到了 MariaDB。CentOS 从 7 开始默认使用 MariaDB。
2.3.1 安装
yum install mariadb-server mariadb
2.3.2 加入随系统启动
systemctl enable mariadb
输出结果类似于,
ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service'
2.3.3 启动 mariadb 守护进程(mysqld)
systemctl start mariadb
其默认用户名还是 mysql,
top -u mysql
可以查看内存占用情况。
停止/重启或停用 mariadb 服务的一些指令:
# 停止
sudo systemctl stop mariadb
# 重启
sudo systemctl restart mariadb
# 禁用
sudo systemctl disable mariadb
# 检查 mariadb 服务器 是否正在运行
sudo systemctl is-active mariadb
2.3.4 安全配置 MariaDB
使用 MariaDB 内建的安全配置脚本进行配置
mysql_secure_installation
这里需要配置 mysql 根用户和密码、清除其他用户、清除不需要的数据库等。输出类似于下面的执行过程,其中需要我们从键盘输入的内容用蓝色注释出来了:
# /usr/bin/mysql_secure_installation
/usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):这里直接回车,这里可不是 Linux root 用户,而是 MariaDB 数据库的 root 用户
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:输入你的数据库root用户密码
Re-enter new password:再输入一遍
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
然后使用 MySQL 的 root 帐户(不同于 Linux 的 root 帐户,刚才设置密码了)登录进去
mysql -u root -p
输入密码后回车,下面是输出示例,可以看到命令提示符变为 MariaDB [(none)]>
# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.37-MariaDB MariaDB Server
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
创建一个新数据库给 WordPress 用(这里取名为 wordpress,也可以用别的名字)
MariaDB [(none)]> create database wordpress;
创建一个新用户,并将该数据库的权限赋给他(这里只是举例,用户名为 newdbuser,密码为 dbuserpassword)
MariaDB [(none)]> grant all on wordpress.* to 'newdbuser' identified by 'dbuserpassword';
更新权限
MariaDB [(none)]> flush privileges;
退出数据库
MariaDB [(none)]> quit
备份配置文件,
cp /etc/my.cnf ~/confbak/my.cnf.bak
其它的先不做了,回头用图形界面的 phpMyAdmin 来做。
2.4 安装和配置 PHP?
注意:如果要使用 event 模式的话,需要安装使用 php-fpm。
安装 PHP5,
yum install php
备份配置文件 /etc/php.ini,还有 php.conf 以及 10-php.conf,
cp /etc/php.ini ~/confbak/php.ini.bak
cp /etc/httpd/conf.d/php.conf ~/confbak/httpd/conf.d/php.conf.bak
cp /etc/httpd/conf.modules.d/10-php.conf ~/confbak/httpd/conf.modules.d/10-php.conf.bak
并确保 /etc/php.ini 中有下面的语句(不同的就修改,没有的就添加,某些数值可以后再调整,这是针对一个简单的运行 WordPress 的服务器的配置):
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
2.5 安装 PHP-MYSQL?
为了在 PHP 中使用 MySQL,还需要安装这个 php-mysql 包:
yum install php-mysql
3 安装和配置 phpMyAdmin?
Remi 安装源上有最新的 PHP、MySQL 以及 phpMyAdmin 的 Yum 安装包,可以方便安装、更新。但是正在使用的 Linux 发行版 CentOS 7 上的软件包可能版本上要求不一样,所以使用 Yum 安装源优先级插件来进行控制。
3.1 安装使用 EPEL REPOSITORY
选择合适的源地址来安装,参考方法:安装使用 EPEL 安装源。
到 EPEL 主页:
找到 The newest version of ‘epel-release’ for EL7,点击打开新页面,复制 epel-release-7-5.noarch 的链接(数字可能有变化,当前版本是 7.5)。采用下面的方法直接安装:
yum install
3.2 安装PHPMYADMIN?
yum install phpmyadmin
嗯,前面已经打好基础了,所以这里就是这么简单。
3.3 配置
phpMyAdmin 的默认安装目录是 /usr/share/phpMyAdmin,同时会在 Apache 的配置文件目录中自动创建虚拟主机配置文件 /etc/httpd/conf.d/phpMyAdmin.conf (区分大小写)。
同样的,先备份配置文件以防修改出现错误,
cp /etc/httpd/conf.d/phpMyAdmin.conf ~/confbak/httpd/conf.d/phpMyAdmin.conf.bak
然后修改配置文件(/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 的内容就与网站内容混到一起了,感觉 phpMyAdmin 成了网站的一个目录。但实际上我们并不希望别人也去访问这个页面。所以我们使用习惯的地址加端口 2082(而不是默认的 80 端口,换成自己喜欢的端口就行,再比如 3344)的方式,即 IP:port/phpMyAdmin 的链接形式访问 phpMyAdmin,加 # 注释掉上面的 Apache Alias 规则(在上面每一行 Alias 前面加上 # 号,上面已经给加上 # 号了),并将
.........
里面的
Require ip 127.0.0.1
Require ip ::1
改成
Require all granted
保存退出,使之可以从任何地方都可以访问。如果本地电脑是固定 IP 的,为了安全,也可以将上面的 Require
all granted 改成 Require ip
因为在前面创建虚拟主机配置文件 /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/html
备份然后修改 phpMyAdmin 的配置文件,
cp /etc/phpMyAdmin/config.inc.php ~/confbak/config.inc.php.bak
vi /etc/phpMyAdmin/config.inc.php
找到其中的如下代码段:
$cfg['blowfish_secret'] = '这里随便填上一串乱七八糟的字符即可,字母、数字等,长度最好大于 16 个';
按照上面的提示填写 blowfish_secret 字符串。其他的不用修改,保存并退出。
3.4 重起 APACHE 使配置生效
systemctl restart httpd
现在就可以通过 ip:port/phpMyAdmin (将 IP 换为 VPS 的 IP,端口为前面 2.1 中设置的 phpmyadmin 的虚拟主机端口,注意大小写)访问 phpMyAdmin 了。
使用前面创建的用户名和密码(2.3.4 中 grant 语句中包含的用户名和密码)登录 phpMyAdmin。
然后还可以按照自己的使用习惯对 phpMyAdmin 的行为进行配置,请参考我写的另一篇文章:个性化配置 phpMyAdmin。
4 创建一个新帐户以访问网站文件?
因为按照本文的安装方法,Apache(httpd 进程) 的运行用户为 apache,不做改动的话,WordPress 的运行用户也就是 apache 了。访问服务器的时候虽然可以用 root,但是安全起见,最好禁止 root 用户远程登陆服务器,而 http 服务的用户 apache 又不能用来登录并管理服务器,所以这里新建一个普通用户用于远程管理网站文件,而管理服务器的时候可以通过这个用户登录后 su root 来执行。
4.1 增加新用户
useradd username
这里只是举例,使用 username 做为用户名,下同。Linux 中的用户相关操作可以参考这篇文章,有关于 useradd、passwd 等指令的介绍。
4.2 为新用户设置密码
passwd username
4.3 修改 /SRV/WWW/ 的子目录和文件的属主和组为新用户(USERNAME)及其组(USERNAME)
chown username:username /srv/www/* -R
-R 表示递归操作所有子文件夹。
4.4 上传网站文件
使用新创建的用户,通过 FileZilla(或其它 sftp 软件,使用 SFTP – SSH File Transfer Protocal 协议连接)登录服务器(当然,能修改(上传)的目录和文件是由 SSH 登录的用户的权限决定的),将网站文件上传到前面设置虚拟服务器时设定的文件夹,这里:
o cnzhx.net 的文件位于 /srv/www/cnzhx.net/html 目录下;
o test.cnzhx.net 的文件位于 /srv/www/test.cnzhx.net/html 目录下。
4.5 文件及文件夹权限设置
使用 WordPress 的时候需要上传附件、更新插件或者 WordPress 本身等操作,这些操作需要对特定的某些文件、目录有写入权限。有 2 个解决方案:
1. 方法 1:这种方法可以在 WordPress 后台执行一切更新插件或 WordPress 本身的操作、可上传附件、方便使用 WPSC 等缓存插件,等等等等。这就要求赋予 apache 用户比较大的权限,即,让 apache 用户成为这些目录和文件的所有者。直接将该网站文件夹的所有者和组都改成 apache,但是将新建的管理用户 usename 增加到 apache 组并使该组有 2775 的权限(也许可以是 2770),即,所有文件和文件夹以及新建的文件夹和文件都对用户apache 和组 apache 完全可读可写可执行。顺次输入命令,
2. cd /srv/www/cnzhx.net/
3. chown apache:apache html -R
4. chmod 2775 html -R
usermod -a -G apache username
最后一行指令将用户 username 添加到 apache 组中。这样做的目的是,username 这个用户也可以拥有对网站的文件目录的完全操作权限,方便使用 ftp 软件维护网站源文件。
重起 Apache 服务(service httpd restart)使之生效。
5. 方法 2:保守一点的方案是,仅保证 WordPress 后台可以上传附件,使用 WPSC 等缓存插件,而更新插件和 WordPress 的操作通过 ftp 上传更新文件的方式来进行:仅仅修改受影响的一部分文件夹的所属组属性即可,其它仍保留其所有者为 username。
一般需要让 WordPress 本身可写入和修改文件的文件夹只有 uploads。进入 WordPress 安装目录的 wp-content 目录中:
cd /srv/www/cnzhx.net/public_html/wp-content/
首先为了保证上传附件功能,修改 uploads 文件夹以及其子文件夹和文件的属性(属主改为 apache,组不变:
chown apache:apache uploads -R
chmod 2755 uploads
其次,如果是 WordPress 多站点模式,还需要按照同样的方法修改 /wp-content/blogs.dir 目录属性。为了使 WPSC 可创建缓存文件,在 wp-content 目录下新建文件夹 cache,并同样修改属性。不过,如果要安装 WPSC,还是需要按照其提示做一些操作的。
最后将 username 添加到 apache 组中:
usermod -a -G apache username
(参考 Linux 中将用户添加到组的指令。)
5 优化及安全?
安装完服务器,进行了基本的配置之后,下一步就该考虑安全和优化问题了。进行基本的安全设置非常有必要,这样可以避免被人“无意”中入侵。
请分别参考下列系列文章:
o 在 Linode VPS 的 LAMP 平台上部署 SSL 加密服务
6 更新说明?
如果有更新,个别地方的更新说明就放在原地,较大范围的更新说明放在这里。
2016.03.02
更新了很多描述语言使之更符合新手的阅读习惯;修正几处指令执行顺序以方便理解;修正 phpMyAdmin(主机 3)的配置文件。
7 FAQ?
7.1 访问虚拟主机一直显示 TESTING 1 2 3 页面(如前面的图示)
如果检查配置都没问题的话,可能是因为没有禁用 SELinux 并立即生效(文中要求过),或者是没有正确配置 SELinux。
8 参考资料?
1. 水景一页: Linode VPS 上 CentOS 6 安装 LAMP + phpMyAdmin 记录
2. Apache:
3. Linode: Updating Virtual Host Settings from Apache 2.2 to Apache 2.4
4. Tecmint:
5. cyberciti:
如果各位网友有什么好的建议,欢迎留言讨论。©
本文发表于。永久链接:<http://cnzhx.net/blog/centos-rhel-install-lamp-phpmyadmin/>。转载请保留此信息及相应链接。