Centos web服务器配置详细实例
作者:田畈街在线
该配置包括:安装nginx, mysql, php, nginx虚拟机配置,伪静态的设置等。资料来源于网络,经自己实践,整理后形成该文档,以供大家参考。
首先跟大家说明,这是我第一次配置web服务器,昨天在老马家新买了空间,然后把域名转向到该地址,在网上查啊查,大致了解了配置的基本流程。无非就是三件套(mysql + php + nginx) 的配置,网上流行的一键配置我没细看,还是自己一个个来吧,比较稳妥点。
首先连接服务器,我在windows xp下用的是putty, 连接上后,第一件事就是整个目录,放置网站程序,因为该服务器可能会放置多个网站,所以我将以网站的域名作为文件夹来加以区分,第一个放置的是www.tfjie.com;
依次在home目录下,新建www/www.tfjie.com/public_html,一看就明白这路径的意义了, 所以www.tfjie.com站点的程序文件就放在public_html目录下。
路径新建完毕,准备工作就绪,就得开始安装三件套了。
一.安装nginx
要安装nginx,首先得为nginx添加一个资源库,命令:vim /etc/yum.repos.d/nginx.repo
1. 使用 vi 命令去打开 /etc/yum.repos.d/nginx.repo ,如果 nginx.repo 不存在,就会去创建一个这样的文件,打开以后按一下小 i 键,进入编辑模式,然后复制粘贴下面这几行代码,完成以后按 esc 键退出,再输入 :wq (保存并退出)
[nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=0enabled=1
2. 完成以后,我们就可以使用 yum 命令去安装 nginx 了,像这样:
yum install nginx
3. 安装好以后测试一下 nginx 服务:
service nginx status
4. 应该会返回:
nginx is stopped (nginx 已停止)
5. 再测试一下 nginx 的配置文件:
nginx -t
6. 应该会返回:
nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful
7. ... syntax is ok,... test is successful,说明配置文件没问题,同时这个结果里你可以找到 nginx 的配置文件 nginx.conf 的路径(),记住该路径,因为下面会经常用到。
8. 操纵服务,可以使用使用 service 命令,它可以启动(start),重启(restart),或停止服务(stop),比如要启动 nginx 服务:
service nginx start
9. 服务启动以后,你就可以在浏览器上使用服务器的 IP 地址,或者指向这个地址的域名访问服务器指定的目录了。你会看到类似下面的这些文字。
Welcome to nginx! If you see this page, the nginx web server is successfully installed and working. Further configuration is required. For online documentation and support please refer to nginx.org. Commercial support is available at nginx.com. Thank you for using nginx.
二、 配置 nginx 虚拟主机1. 安装完 nginx 以后,第一件想到的事应该就是去创建虚拟主机,虚拟主机允许我们在同一台服务器上运行多个网站,我们可以为不同的域名绑定不同的目录,访问这个域名的时候,会自动打开对应目录里面的东西。先进入到 nginx 配置文件目录:
cd /etc/nginx/conf.d
2. 复制这个目录里的 default.conf ,复制以后的名字可以使用你的虚拟主机名字。比如创建一个 www.tfjie.com 的虚拟主机的配置文件www.tfjie.com.conf,用 cp 命令:
cp default.conf www.tfjie.com.conf
3. 再去编辑一下这个复制以后的配置文件,可以使用 vi 命令:
vi www.tfjie.com.conf
4. 可以看到server_name 就是主机名,也就是跟这个虚拟主机绑定在一块儿的域名,事先已经把 www.tfjie.com域名指向了服务器,这个虚拟主机就是为它准备的,所以,server_name 后面的东西就是 www.tfjie.com (tfjie.com同理)。紧接着 server_name 下面可以是一个 root,就是这个虚拟主机的根目录,也就是网站所在的目录。比如我们要把 www.tfjie.com 这个网站的文件放在 /home/www/ www.tfjie.com/public_html 下面,那么这个 root 就是这个路径。
5. 然后去掉 location / 里面的 root 这行代码。再在 index 后面加上一种索引文件名,也就是默认打开的文件,这里要加上一个 index.php ,这样访问 www.tfjie.com 就可以直接打开 root 目录下面的 index.php 了。稍后我们再去安装 php 。修改之后如下图所示:
6. 这个配置文件先修改到这,稍后,我们再回来继续修改一下它。保存一下,按 esc ,输入 :wp(保存并退出)。现在虚拟主机应该就可以使用了。主机的域名是 www.tfjie.com,访问它的时候,打开的是 /home/www/ www.tfjie.com/public_html 这个目录里面的index.php。在public_html目录下新建个index.php,内容随便了:
<?php echo “hello world!”;?>
7. 重启 nginx 或者重新加载 nginx 可以让配置文件生效。
service nginx reload
8. 现在,打开浏览器,输入http://www.tfjie.com,浏览器没有输出hello world, 因为还没有安装php.
三、 安装php
让 nginx 能够执行 php 文件,需要去安装一下 php-fpm,它直接包含在了 CentOS 资源库里,所以直接使用 yum 命令可以安装它:
yum install php-fpm
完成以后,可以检查一下 php-fpm 的运行状态,使用 service 命令:
service php-fpm status
返回:
php-fpm is stopped(php-fpm 已停止)
启动 php-fpm 同样可以使用 service 命令:
service php-fpm start
现在我们应该就可以让 nginx 去执行 php 了。不过需要修改一下 nginx 的配置文件,之前我们在配置虚拟主机的时候,创建了一个 www.tfjie.com.conf 的这个配置文件,才能去执行 php 。使用 vim 命令去编辑它:
vim /etc/nginx/conf.d/www.tfjie.com.conf
注意你的配置文件不一定叫 www.tfjie.com.conf,应该是你自己命名的配置文件。启用几行默认注销的代码,如下图所示:
自location开始,把注释符号#删除,注意 root 那里仍然是被注释掉的,还有 SCRIPT_FILENAME 后面修改了一下,把 /scripts 换成了/home/www/www.tfjie.com/public_html 。保存并退出。然后重新启动 nginx:
service nginx restart
至此,nginx + php 已安装并配置完毕,可以测试下网站能否顺利访问了,目前网站根目录只有index.php文件,输入:http://www.tfjie.com,然后就可以看到浏览器显示hello world字样了,这就说明以上配置正确。 如果您的网站不需要数据库,那下面对mysql的安装就可以跳过了。
四、安装mysql
之前我们已经添加了资源库,所以可以直接使用 yum 命令去安装 mysql :
yum install mysql-server
一路按y, 安装完成后,使用 service 命令启动 mysql 服务:
service mysqld start
然后我们需要简单配置一下 mysql ,默认安装以后 mysql 的 root 用户是没有密码的,对于生产环境来说,这肯定是不行的,另外还有一些安全相关的设置,可以使用下面这行命令去配置一下,它是一个向导,问你一些问题,你要给出答案,比如是否要设置 root 用户的密码, 密码是什么等等。
mysql_secure_installation
Enter current password for root (enter for none):
解释:输入当前 root 用户密码,默认为空,直接回车。
Set root password? [Y/n] y
解释:要设置 root 密码吗?输入 y 表示愿意。
Remove anonymous users? [Y/n] y
解释:要移除掉匿名用户吗?输入 y 表示愿意。
Disallow root login remotely? [Y/n] y
解释:不想让 root 远程登陆吗?输入 y 表示愿意。
Remove test database and access to it? [Y/n] y
解释:要去掉 test 数据库吗?输入 y 表示愿意。
Reload privilege tables now? [Y/n] y
解释:想要重新加载权限吗?输入 y 表示愿意。
五、安装 php 扩展现在,我们有了可以提供 web 服务的 nginx ,并且安装了 php-fpm ,配置了 nginx 可以让它去执行 php ,也安装了数据库管理系统。不过在运行真正的网站的时候,我们还需要为 php 安装一些额外的扩展,比如 处理 mysql 数据库的 mysql 扩展,缓存功能的 apc 扩展,处理图像的 gd 扩展等等。安装它们同样可以使用 yum 命令。
yum install php-pecl-apc php-mysql php-gd php-mcrypt php-pear php-mbstring php-xmlrpc php-dom
上面安装了一些 php 的扩展,如果你发现在安装网站的时候提示需要安装其它的扩展,同样可以使用 yum 命令去安装。安装完成以后,需要重启一下 php-fpm :
service php-fpm restart
六、目录与文件的权限问题网站上面有些目录或文件需要有写入权限,这样你得为这些目录和文件分配合适的权限,一般可以把它们的拥有者设置成 php 和 nginx 使用的用户,默认 nginx 的用户就是 nginx ,而 php-fpm 使用的用户默认是 apache。我们可以把它们改成一个统一的用户,可以修改 php-fpm 的用户为 nginx 。你可以使用下面的命令去查看一下 nginx 和 php-fpm 所使用的用户名:
ps aux|grep phpps aux|grep nginx
修改所使用的用户,可以通过使用 nginx 和 php-fpm 的配置文件,nginx 的配置文件是: /etc/nginx/nginx.conf ,php-fpm 的配置文件是:/etc/php-fpm.conf,还有在 /etc/php-fpm.d/* 这个目录里的所有文件都是 php-fpm 的配置文件。默认这个目录里有一个 www.conf ,你可以编辑这个文件来修改 php-fpm 所使用的用户名称。使用 vim 命令:
vim /etc/php-fpm.d/www.conf
打开文件以后你可以搜索下关键词 user 或 apache,输入 :/user 或 :/apache ,会搜索到结果,按小 n 可以继续向下查找,按大 N 可以向上查找。直到你看到:
user = apache
把它修改成:
user=nginx
esc 退出,再输入 :wq ,重启下 php-fpm,这样我们的 nginx 服务器还有 php-fpm 会使用同一个用户:nginx,你可以把要可以有写入权限的目录与文件的拥有者修改成 nginx 就行了。可以使用 chown 命令:
chown -R nginx 目录名/文件名
七、Discuz x3.1 Centos nginx 伪静态配置
1. 打开网站的nginx配置文件,vi /etc/nginx/conf.d/www.tfjie.com.conf,添加红色标志语句,意思就是包含该文件“.htaccess”,该文件则为伪静态文件,独立出来便于维护。如图所示:
此时输入命令:nginx –t 进行测试nginx配置,会告知错误,因为没有找到.htaccess文件。不着急,跟着下面步骤。
2. 打开网站后台,全局—SEO设置---URL静态化设置,把URL静态化都勾上,Rewrite选否,然后点击查看“查看当前的 Rewrite 规则”,会弹出一个页面,查看页面最底下,如图:
好了,现在我们要在上图红线所标识的路径下,新建.htaccess文件了,命令:vi /home/www/www.tfjie.com/public_html/.htaccess, 文件新建好后,把里面的规则都粘贴上。例子里的.htaccess文件如下图所示:
此时再输入命令:nginx –t 进行测试nginx配置,您将看到success字样的成功信息。
3. 重新加载配置以便启用新的设置,输入命令:/etc/init.d/nginx reload,这时你回到论坛发个帖子,将不再是404错误了,地址后缀变成了.html, 至此nginx的伪静态设置全部完成。
如果您打卡论坛某一帖子时,发现后缀不是.html,不着急,这种情况很有可能是后台设置了伪静态规则仅对游客有效,以减轻服务器负担,退出会员,再以游客身份打开某一帖子,就可以了。