而我也从一个什么都不懂的小白变成了一个精通HTML、PHP、微信公众号开发和使用Linux服务器部署代码的大白。回顾之前的探索过程,不算难,但也算是有些困难。回头看看为了搞懂一个功能到处爬帖子的过程,真的很感动。随着自己的一点一滴进步,自己查阅资料的能力也逐渐加强,解决问题的时间也大大缩短了。为了避免像我这样刚入门的小白走弯路,记录一下我之前部署ThinkPHP5.1的过程,以供参考。一:Linux连接服务器简单命令:对于刚入门的同学来说,拿到一台Linux服务器,首先想到的就是打开Windows的远程桌面连接,然后兴冲冲的输入IP地址,之后,提示远程连接失败。。。注意,这里是Linux,不是Windows。如果不设置,Linux无法直接连接到远程桌面。另外...Linux一般不使用图形界面来操作,而是使用简单高效的命令行。因此,如果要登录Linux,就需要使用一个叫做SSH的工具。什么是SSH:SSH是SecureShell的缩写,由IETF网络工作组开发;SSH是一种基于应用层的安全协议。SSH是目前最可靠的协议,旨在为远程登录会话和其他网络服务提供安全性。使用SSH协议可以有效防止远程管理过程中的信息泄露。——摘自百度百科对于Windows用户,需要下载支持的SSH工具Putty。如果你使用的是GitHub,它的Bash可以直接支持SSH。对于Mac用户,Terminal直接支持SSH。Linux用户……绝对不需要看这种介绍性的文章。..第一个命令,登录:sshroot@xxx.xxx.xxx.xxx“root”替换为您服务器上的用户名。如果是新装的系统,很可能root“xxx”换成了server输入IP地址回车后,会提示输入密码。终端输入的密码是看不见的,不用惊讶,放心输入即可。登录成功后,可以看到再次出现的输入行,用户由本地用户变为服务器上的用户。如果需要断开SSH连接,只需注销一次即可。注销之后是移动到某个目录的基本操作:cd/your/placecd之后的第一个/是根目录,也就是说这是树结构的底部顶层,其他所有目录都在下层根目录的级别。初学者可能会想:“你给我一个cd命令,让我找文件,我怎么找?难道我要记住每个文件的位置吗?”NONONO,终端里有个神器,叫Tab:如果用户记不住命令的全名,按Tab,系统会尽量匹配命令:当超过一个可选的命令,命令行没有响应。再按一次Tab,终端会打印出所有可能的实现当用户记不住当前目录下有哪些文件时,只需要cd到某个路径下,按两次Tab即可显示该目录下的所有文件,然后输入part您要转到的目录的名称。HitTab,如果前缀在当前目录下是唯一的,可以自动补全。没有Tab的命令行没有灵魂,显示目录下的文件夹:ls如果需要显示隐藏文件:ls-a新建文件夹:(测试文件夹名)mkdir测试文件夹或文件重命名:(原文件名new文件名支持Tab补全)mvtestThinkPhp新建文件:(目录名/文件名)touchtest/a.txt使用Vim编辑文件:vima.txtVim简单操作:上下左右键-光标移动i-插入文本d-删除整行esc-退出当前模式(即进入命令模式):-输入命令:w-写入文件(保存):q-退出:wq-保存andexitimportant:修改文件夹权限(test为文件夹名)chmod-R777test//-R表示递归更改文件夹中的文件和文件的权限//r(4),w(2),x(1)important:文件夹删除操作(运行必须)rm-rftest//如果需要root权限,改成sudorm-rftest//重要文件不要乱动,后果自负同以上命令,基本可以流畅的操作linux命令行了。2、服务器软件的选择一开始我打算在服务器上手动安装运行环境,直到有一天老师突然说:各大虚拟化平台都有直接与运行环境集成的镜像,我才恍然大悟,使用镜像与环境融为一体,可以大大减少折腾时间。下图可以看到,Apache、PHP、mysql、FTP一应俱全,只要安装好镜像,就不用费心了。(如果不想使用集成软件的镜像,也可以安装原系统,自行下载运行环境。)系统安装完成后,在浏览器中输入IP或域名,然后可以看到已经成功跳转到了TP的首页??,上面显示了系统和运行环境。一切正常。下一步是使用SSH登录服务器。3、部署TP5.1对于不同的镜像,根目录(DocumentRoot)的位置可能不同。这个路径应该在镜像打包的时候定义好。如果第一次登录找不到TP5的根目录,可以使用搜索方式:find/-namethinkphp//"/"为搜索路径,设置根目录在所有搜索files//如果搜索根目录,会比较长,请耐心等待//thinkphp是要搜索的文件名。找到文件目录后,cd到该目录下,ls,可以正常显示TP5框架的文件。然后重命名原来的tp文件夹,因为我们要添加一个新的文件夹(本文把thinkphp改成thinkphp00)mvthinkphp/thinkphp00/我们可以使用GitHub把代码传到服务器,免去了架设FTP的步骤。所以,先在本地提交代码到GitHub仓库,然后在GitHub仓库找到clone链接,点击复制按钮。在终端找到原来的ThinkPHP父目录,gitclonehttp://your.addressthinkphp//http后面是github仓库地址//thinkphp是克隆到服务器的文件夹名,//如果不填,使用project默认的文件夹名是因为图中的Apache改变了根目录的位置,所以URL比较短(为了进一步减少URL的长度,以后可以开启rewrite功能,你don'tevenneedtoinputindex.php)//不需要输入index.php和public:http://yourip/public/index.php/Module/Controller/Function//只需要输入:http://your.ip/index.php/Module/Controller/Function//ifthen启用重写后,链接变成:http://your.ip/Module/Controller/Function如果没有意外,应该是此时可以正常访问某个controller下的方法。如果出现NotFound(中文提示“Noobjectfound”),可能是链接输入错误,或者Apache中设置的location不对,或者重写设置不对4.部署MySQL经过一系列操作,我们项目的网站是可以访问的,但是随便点几下就会报错,所以……你是不是忘记了什么——对,数据库!数据库尚未导入。QL.png](/img/bVbzs92)首先启动服务,然后尝试登录数据库//启动MySQL服务servicemysqldstart//以root用户密码登录mysql-uroot-p突然发现不知道默认密码。..然后我搜索了一下,发现这个产品的密码在一个文件里,于是找到了这个文件,算是有所收获。需要注意的是,这里的密码仅供查看。如果直接修改这个文件Content的密码,数据库中的任何信息都不会随着密码改变。密码登录成功后,发现数据库只能本地登录,不能远程访问(提示1130错误,权限问题),所以需要开启用户的远程访问权限//findHostname,account,passwordofallusersselecthost,user,passwardfrommysql.user;//授权任意主机名使用root用户,123456passwordforremotelogingrantallon*.*toroot@"%"identifiedby'123456';//注意:密码只是为了演示,实际生产环境中严禁使用root用户远程访问,更不能像白痴一样设置密码为123456!!!然后在Navicat软件中,可以远程连接服务器上的数据库,然后根据本地数据库在服务器上创建一个一模一样的数据表(我就不告诉你了,直接在Navicat中拖拽数据表即可)直接复制)然后就完成了最后一步——修改服务器上Config中的数据库地址:cd/你的thinkphp地址/thinkphp/configvimdatabase.php只需要将用户名和密码改成那个即可。然后esc:wq回车保存退出,再次登录就会发现这个久违的笑脸。至此,ThinkPHP和MySQL在云服务器上的部署就完成了!总结:Linux命令和项目部署可以说是程序员的基本操作。之前在学习这些内容的时候走了很多弯路。写博客的意义在于发现问题,分享解决问题的过程。对于linux的命令,我的经验是不用刻意去背代码,用着就自然而然了。随着你的阅历逐渐丰富,很多技能自然而然就来了。
