最近在虚拟机里装了 centos7 来配置 lamp 服务器,其中踩了好多好多…… 坑 o (╥﹏╥) o,必须做个记录
更新:nginx 与 node 的安装
centos7 安装#
- 这里就是网上下好 iso 镜像,然后一步步装好,建议初学者选 GNONE 桌面版方便操作
Apache、Mysql、PHP 安装#
-
Apache
apache 软件包名称叫做 httpd
yum install httpd
出现提示时一路 y + 回车 就好启动 Apache 并将其设置为开机启动
systemctl start httpd.service
systemctl enable httpd.service
检查 httpd 服务状态:
systemctl status httpd.service
看到绿色的active(running)表示 httpd 服务正在运行中,enabled表示 httpd 服务已设为开机启动这样 HTTP 协议就启动了,因为它要用到端口 80,因此防火墙要放通 80,这里直接就关掉它
systemctl stop firewalld.service停止 firewall
systemctl disable firewalld.service禁止开机启动现在可以通过
ip addr查询当前系统 ip 地址,在浏览器访问就可以看到 apache 页面
Tips: 这里可以将虚拟机内部 ip 配置为静态的,然后修改主机 hosts 文件对应别名如 myserver 之后即可通过http://myserver 直接访问 -
PHP
yum install php
这里有需要的话可以进入/etc/php.ini做一些配置的修改
测试 Apache 能不能正常调用 php,在 /var/www/html 目录下新建一个输出 phpinfo 的文件
vim /var/www/html/phpinfo.php
使用浏览器打开可以看到 php 信息页则说明正常
然后安装常用的扩展
yum -y install php-mysql php-gd php-imap php-ldap php-mbstring php-odbc php-pear php-xml php-xmlrpc -
Mysql
这里推荐安装 MariaDB (从 RHEL 7 开始 Red Hat 公司推荐使用它替换 Mysql)
yum install mariadb-server mariadb
systemctl start mariadb启动 mariadb
systemctl enable mariadb设置为开机启动这里可以启动数据库守护进程
mysql_secure_installation
用来设置 root 密码,允许远程 root 登录等等mysql -u root -p使用 root 账号登录 mariadb
show mysql切换到 mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;修改登录权限设置为允许远程登录
配置 apache 虚拟目录#
apache 默认工程目录是在 /var/www 下的,而编辑该目录必须是 root 用户,因此我们有必要自定义一个目录,让 apache 也能识别
vim /etc/httpd/conf/httpd.conf打开 apache 配置文件
找到<dir alias_module>,在内部添加
示例:
Alias /myweb "/home/daybreak/www"
<Directory "/home/daybreak/www">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
这里我的自定义路径为 /home/daybreak/www,对应别名是 myweb,在浏览器输入http"//myserver/myweb就能对真实目录 /home/daybreak/www 下文件进行访问
注意:这里直接访问后很可能会出现 403forbidden 的错误,解决方案如下
- 确保配置虚拟目录时设置了目录访问权限即
Require all granted - 到这里可能是网站目录的权限问题,apache 要求目录具有执行权限,也就是 x,所以要确保访问的目录树都具有这些权限,例如我的目录时 /home/daybreak/www,则需要
chmod 755 /home
chmod 755 /home/daybreak
chmod 755 /home/daybreak/www
或者直接 chmod 755 -R /home
- 如果依然是 403,那就是 selinux 的问题,把目录进行一下 selinux 权限设置
chcon -R -t httpd_sys_content_t /home
这样访问成功后就可以通过自定义的目录访问 web 文档
扩展:nginx 与 node 的安装#
nginx 安装#
-
添加 centos7 nginx yum 资源库:
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm -
yum 安装:
sudo yum install -y nginx -
启动并且开机启动 nginx:
sudo systemctl start nginx && sudo systemctl enable nginx -
测试 nginx 配置文件(查看 nginx 配置位置):
nginx -t
node 安装#
-
使用官方编译的二进制数据包安装:
-
进入官网下载链接,选择想要下载的版本链接与版本 (*-linux-x64.tar.gz),进入用户主目录使用
wget命令下载:wget https://nodejs.org/download/release/v8.9.4/node-v8.9.4-linux-x64.tar.gz -
下载完成后解压到
/usr/local目录并安装:sudo tar --strip-components 1 -xzvf node-v* -C /usr/local -
安装完成后验证安装:
node -v v8.9.4
-
-
源码安装:
-
使用源码安装与二进制数据包安装的区别在于源码安装还需要编译源码才能安装
-
进入官网下载链接,选择版本 (node-v*.tar.gz):
wget https://nodejs.org/download/release/v8.9.4/node-v8.9.4.tar.gz -
下载完成后,解压并进入解压后的目录
tar xzvf node-v8.9.4.tar.gz && cd node-v8.9.4 -
编译源码需要安装
gcc和gcc-c++(可先使用yum info package_name检查是否已安装):sudo yum install gcc gcc-c++ -
安装完成后运行
configure文件并编译,编译完成后安装:./configure && make && make install -
-