本文是本人按如下的官方教程在阿里云ESC实例上部署LAMP环境的操作步骤+各种踩坑经历的总结记录,仅供和我一样在阿里云上折腾搭环境的小白参考。
官方教程链接:搭建个人网站-阿里云帮助中心
------------------------------------------------------------------------------------------------------------------------------
安装Apache
官方给的教程里面步骤很简单,就几行代码。但是我一共经历了三个大坑才安装成功。
坑一 httpd安装
yum install -y httpd httpd-manual mod_SSL mod_perl mod_auth_mysql
我第一次运行时就死活不行,一直报错,报no match什么的,复制粘贴第一句就这情况真的很搞心态,外加小白什么都看不懂,差点崩溃。(直到后来某次把实例玩脱了得重装系统,装了CentOS 7.9版本,这句才运行成功)
yum -y install httpd #安装HTTPd的替换语句
systemctl start httpdsystemctl enable httpd
systemctl status httpd
坑二 80端口被占
第一次把apache给装上后,是死活起不来的,不管怎么systemctl start httpd,一看status还是dead。鱼哭了水知道,我哭了谁知道啊,太欺负人了
当时按网上办法各种改,端口改完80改433禁防火墙禁SELinux禁enforce之类吧啦吧啦一通改,终于所有报错都没有了,httpd状态也变成绿色的active,于是我喜滋滋去浏览器访问,收获的全是无法连接。都给我整无语了。
直到很久以后我才终于找到问题根源——阿里云盾把80端口占了。
(因为apache总是有各种问题,所以就半路改装别的了:一次改安装tomcat,8080端口浏览器就访问到了,一次用docker装nginx,映射80端口访问到了,外加之前HTTP运行反复查看端口的一些情况,故而引起了我的怀疑)
netstat -ano #列出所有端口的情况netstat -tulpn #查看在使用的端口
losf -i :80 #查看80端口情况
是他是他,就是他。
终于破案了。呜呜呜。HTTP的配置文件etc/httpd/conf/httpd.conf都改麻了也没想到原来是这样。
方一:设置转发端口(这个我到最后也没研究明白)
方二:修改端口(打不过我就绕路嘛)
sudo fuser -k 80/tcp #试过,云盾还在,我绝望了
etc/httpd/conf/httpd.conf 改两处端口号,我这里是改到8000去了
vim编辑器:
i键,进入编辑模式。
按esc,按:,wq保存退出vim
坑三 设置安全组
我确定以及肯定,防火墙SELinux和enforce都没有阻拦。但是还是无法连接。
网上说要设安全组。
设就设呗,来都来了。心累。
给8000端口加安全组,我还回去确认了下,8000确实在使用,而且确实只有一个进程在用。
浏览器访问 http://公网ip:8000
终于见到这个页面了,太不容易了。虽然它看起来很简单,但对我来说,却是走了很久很久才终于来到它面前。
(题外话:我在阿里云上除了实例ESC,还白嫖了一个域名,IP和域名也做了对应配置。但是这里用IP访问就有,用域名就还是无法连接。不晓得为什么。)
安装Mysql
教程步骤如下,我一路都没遇到坎。
wget /get/mysql57-community-release-el7-10.noarch.rpmyum install -y mysql57-community-release-el7-10.noarch.rpmyum install -y mysql-community-server --nogpgcheck
systemctl start mysqld.service
systemctl status mysqld.service
grep "password" /var/log/mysqld.log
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '<新密码>';#分号要加,分号对MySQL很重要
create database pbootcms;
show databases;
exit;#quit好像也行
一路畅通无阻是真的爽,直到后来我再使用数据库和想在本地连接阿里云数据库。。。。
重置密码
咱也不知道为什么,ALTER USER 'root'@'localhost' IDENTIFIED BY '<新密码>';这句里面明明设了新密码,但是msql -uroot -p 输入新密码就是抱错。
气人哦,上一秒设的密码,下一秒再登就说我密码错误。(难道exit出去要重启mysql???不知道,当时没试)
跳过输入密码
重置mysql密码第一步,设置输密码这步可以跳过。
vim /etc/my.conf
/etc/my.conf 是mysql的配置文件,
在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程,
修改密码
mysql -uroot -p;
输密码直接跳过,哦吼~
use mysql; #这步我总是忘记
update user set authentication_string='密码' where user='root';
Mysql5.7的密码字段不叫password,而是叫authentication_string
Mysql5.7也没有password()函数
#刷新系统权限表flush privileges;exit;
systemctl restart mysqld #重启数据库
后续
最后,将刚才在/etc/f配置文件中的“skip-grant-tables”删除,然后再重启遍数据库
重装mysql
放个重装mysql要用的语句,毕竟重装解决100%的问题。(别问了,都是泪)
rpm -qa | grep -i mysqlyum -y remove ###find / -name mysqlrm -rf ###
设置本地远程连接
本地navicat不能连接云服务器的MySQL是因为没有开放连接其他主机的权限。
进入mysql
#进入mysql并查询user表mysql -uroot -p use mysql;select User,authentication_string,Host from user;
目前root只能连接本地。
设置
要设置远程连接权限:
一可以把root的host改为%(%代表所有主句)
update user set host='%' where user='root';
二可以新建一个开放给所有主机的新用户
#新建一个'root123'用户,并开放给所有主机GRANT ALL PRIVILEGES ON *.* TO 'root123'@'%' IDENTIFIED BY 'root123的密码';
(我选的方二)再次查询用户表,确认用户和权限已经设置好
select User,authentication_string,Host from user;
#保持修改退出+重启(看情况要不要操作)flush privileges;exit;systemctl restart mysqld
本地确认
本地navicat测试连接,成功
(很简单对吧,但事实上我折腾了两天才做到的,呜呜呜。)
安装PHP
#运行以下命令,添加EPEL源。yum install -y \https://repo.ius.io/ius-release-el7.rpm \/pub/epel/epel-release-latest-7.noarch.rpm#运行以下命令,添加Webtatic源。rpm -Uvh /yum/el7/webtatic-release.rpm
yum install -y php70w-devel php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64 php70w-pdo.x86_64 php70w-mysqlnd php70w-fpm php70w-opcache php70w-pecl-redis php70w-pecl-mongodb
systemctl restart httpd
php -v
安装成功,(PHP一路安装也很顺利,没有什么坎,欣慰.jpg)
还可以在/var/www/html/ 添加test.php文件,看下从浏览器访问的方式验证。
chmod -R a+w /var/www/html
touch /var/www/html/test.phpvim /var/www/html/test.php<?phpecho "hello world";?>
我只是想跟着教程学习部署LAMP环境罢了,所以后面的关于PbootCMS就没再操作了。