1

零:摘(fei)要(hua)

时光荏苒,转眼间,四个月悄然而逝,我人生中的第一个项目也落下帷幕。而我也从一个什么也不懂的小白,变成了一个熟练掌握HTML、PHP、微信公众号开发以及使用Linux服务器部署代码的大白了。
回顾之前探索的过程,算不上艰辛,也算得上有些难度。回望之前为了弄明白一个功能而四处爬帖子的历程,真是感慨万千,随着自己一点一滴的进步,查阅资料的能力逐步加强,解决问题的时间也大大缩短。
为了让像我一样刚入门的小白少走弯路,我把自己之前部署ThinkPHP5.1的过程记录下来,以供参考。

一:Linux简单命令


连接服务器:

对于刚刚入门的同学来说,当你获取了一台Linux服务器时,第一时间想到的,可能是打开Windows的远程桌面连接,然后兴奋的输入IP地址,之后,提示远程连接失败...
注意诶,这是Linux,不是Windows哦。如果不经过设置,Linux是不能直接远程桌面连接的,另外...Linux一般也不会去用图形界面操作的,而是用简单高效的——命令行。
所以,想要登录Linux,就需要借助一个叫做SSH的工具。
SSH是啥:
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
——摘自百度百科
对于Windows用户来说,需要下载支持的SSH的工具Putty,如果你正在使用GitHub,它的Bash里面可以直接支持SSH。
对于Mac用户来说,终端直接支持SSH。
Linux用户嘛...肯定不需要看这种入门文章了。。。

第一条命令,登录:

ssh root@xxx.xxx.xxx.xxx
"root"处换成你服务器上的用户名,如果是新安装的系统,很大可能就是root
"xxx"处换成服务器的IP地址
输入回车之后会提示输入密码,终端中输入的密码是不可见的,所以不用奇怪,放心的输入好了。

图片.png

登录成功之后,可以看到再次出现的输入行,用户由本地用户变成了服务器上面的用户。

图片.png

如果需要断开SSH连接,只需要logout一下就可以了
logout

接下来是基本操作

移动到某个目录:
cd /your/place
cd后面的第一个/是根目录,意味着这是树状结构的最顶层,其他的一切目录都在根目录的下层。
或许初学者可能会想:"你只给我一个cd命令就让我去找文件,这我哪找得到啊?难道我还要记住每一个文件的位置?"
NONONO,终端中有一个神器,叫做Tab:
  • 如果用户记不住命令的全称,按一下Tab,系统会尽可能去匹配命令:当可选命令大于一条时,命令行没有反应,此时再按一下Tab,终端会打印所有可能实现的命令
  • 在用户记不住当前目录下有什么文件时,只需要cd到某个路径之后按两下Tab,即可显示此目录下所有的文件,然后输入你想要前往的目录的一部分名称,打一下Tab,如果这个前缀是当前目录里唯一的,就可以自动补齐。
没有Tab的命令行没有灵魂的
显示目录下的文件夹:
ls
如果需要显示隐藏文件:
ls -a
新建文件夹:(test 文件夹名)
mkdir test
文件夹或文件改名:(原文件名 新文件名 支持Tab补齐)
mv test ThinkPhp
新建一个文件:(目录名/文件名)
touch test/a.txt
使用Vim编辑文件:
vim a.txt
Vim简单操作:
上下左右键  -光标移动
i  -插入文字
d  -删除整行
esc  -退出当前模式(也就是进入命令模式)
:  -输入命令
:w  -写入文件(保存)
:q  -退出
:wq  -保存并退出
重要:修改文件夹权限(test为文件夹名)
chmod -R 777 test
// -R表示递归给文件及文件夹内文件更改权限
// r(4),w(2),x(1)
重要:文件夹删除操作(跑路必备)
rm -rf test
//如果需要root权限,改成
sudo rm -rf test
//千万别拿重要文件乱试,后果自负
有了以上命令基本上可以流畅操作Linux命令行了。

2、服务器软件的选择


起初我还打算在服务器上手动安装运行环境,直到有一天老师突然说:各大虚拟化平台上都有直接集成运行环境的镜像,我才恍然大悟,使用集成了环境的镜像可以大幅度减少折腾的时间。
在下图中可以看到,Apache、PHP、mysql、FTP都有了,只要安装镜像就啥也不用折腾了。

图片.png

(如果不想用集成软件的镜像,也可以安装原版的系统,自行下载运行环境)
系统装好之后,浏览器输入IP或者域名,可以看到成功跳转到TP的首页,就说明系统和运行环境都正常工作了。
下一步就是SSH登录服务器了。

3、部署TP5.1


对于不同的镜像来说,根目录(DocumentRoot)的位置可能不同,这个路径应该是封装这个镜像的时候就定义好了。如果第一次登录时找不到TP5的根目录,可以使用搜索大法:
find / -name thinkphp
// "/"是搜索的路径,设置成根目录是在所有文件中搜索
//如果搜索根目录,时间会比较长,请耐心等待
// thinkphp是要搜索的文件名
找到文件目录之后,cd 到那个目录,ls 一下,可以正常显示TP5框架的文件。

find.png

然后把原有的TP文件夹重命名,因为我们要添加新的文件夹
(本文中把thinkphp改为thinkphp00)
mv thinkphp/ thinkphp00/
我们可以使用GitHub来向服务器传输代码,避免设置FTP的步骤。所以,在本地先把代码提交到GitHub仓库中,然后在GitHub的仓库中找到clone链接,点一下按钮复制。

图片.png

在终端上找到原来ThinkPHP的上级目录,
git clone http://your.address thinkphp
// http后面是GitHub仓库地址
// thinkphp是克隆到服务器上的文件夹名,
// 如果不填,则使用项目默认的文件夹名

clone.png

由于镜像中的Apache改了根目录的位置,所以Url比较短
(为了进一步缩减Url长度,以后可以开启重写功能,连index.php都不用输入了)
//不需要输入index.php和public:
http://your ip/public/index.php/Module/Controller/Function
//只需要输入:
http://your.ip/index.php/Module/Controller/Function
//如果再开启重写之后,链接变成了:
http://your.ip/Module/Controller/Function
如果不出意外,此时应该能正常访问到某个控制器下的方法
如果出现Not Found(中文提示是"找不到对象"),那说明可能链接输入有误,或者Apache中设定的位置不对,或者重写的设置不对

图片.png


4、部署MySQL


在经过一系列操作之后,我们的项目的网站已经可以访问了,可是随便点几下就会报错,那么...是不是忘记了什么事情——对,数据库!还没有导入数据库。

MyS![MySQL.pngQL.png](/img/bVbzs92)

首先启动服务,然后尝试登录数据库
//启动MySQL服务
service mysqld start
//以root用户带密码登录
mysql -u root -p

SQL访问拒绝.png

然后突然发现我并不知道默认密码...

SQL默认密码.png

然后去搜索了一下,才发现这货的密码在一个文件里面,于是我找到这个文件

MySQL密码.png

果然有所收获,
需要注意的是,这里的密码,只是用于查看的,如果直接更改这个文件的内容,数据库的任何信息都不会跟着变化
有了密码之后,成功登录,此时发现数据库只能本地登录,不能远程访问(提示1130错误,权限问题)

图片.png

所以需要开启用户的远程访问权限
//查找所有用户的主机名、账号、密码
select host,user,passward from mysql.user;
//授权任意主机名使用root用户,123456密码远程登录
grant all on *.* to root@"%" indentified by '123456';
//注意:密码仅供演示,实际生产环境中严禁使用root用户远程访问,更不能把密码设置成白痴一样的123456!!!
然后,在Navicat软件中,就可以远程连接服务器上的数据库了

图片.png

然后照着本地数据库在服务器上建立一模一样的数据表就OK了

(我是不会告诉你们,Navicat中的数据表拖拽一下就可以直接复制的)

然后还差最后一步就大功告成了——在服务器上的Config中修改数据库地址:
cd /your thinkphp address/thinkphp/config 
vim database.php

图片.png

只需要把用户名和密码改到就可以了。然后esc :wq enter保存退出,再去登录时就发现了这个久违的笑脸

图片.png

到此,云服务器部署ThinkPHP和MySQL完成!

总结:


Linux命令和项目部署可以说是程序员的基本操作,之前自己在学习这些内容时也走了很多弯路,写博客的意义在于发现问题和分享解决问题的过程。
对于Linux命令,自己的经验是,不用可刻意记忆代码,功到用时自然成,随着自己的经验逐渐丰富,许多技能慢慢就自然会了。

LYX6666
1.6k 声望75 粉丝

一个正在茁壮成长的零基础小白