本人购买了一个阿里云ESC,开心的开启了搭建网络环境的路途,实际上去塘坑了
部署方式
原本打算自己去官网一个一个下载LNMP,后来想想还是用最简单的方式去完成这个工作吧,省下来的时间还可以去撩妹,直接使用阿里免费的LNMP镜像,一键完成了环境部署,此镜像有个核心系统那就是----宝塔管理系统
这是一个可视化的系统,我们直接在浏览器输入http://xx.xx.xx.xx:8888/,其中xx.xx.xx.xx就是你阿里云的公网IP,输入之后回车,不出意外的话你是能看到一个后台管理系统的,第一次登陆用户名是admin,然后会让你设置你的登陆密码,这一步完成之后直接进入到管理系统,也就是如下图片
然后我们点击左侧的软件管理,下载你需要的软件至少lnmp这四个软件需要下载下来,其他的看你的需求要,我还下载了一个FTP,具体如下图
截止目前为止你的LNMP环境是已经搭建好了,下面我们开始部署我们的网站,这里我是用LNMP + Thinkphp的方式部署
默认环境搭建好之后,宝塔会在我们服务器生成一个www目录,这里我把所有的网站都部署到www目录下的wwwroot目录中,
1.我们先从Thinkphp官网下载一个核心版本的thinkphp,解压这里我们把这个项目命名为vue,(之所以叫着个名字,是因为我在研究vue的结合thinkphp部署问题),目录结构如下图
我们将我们这个文件上传到我们的服务器网站根目录,也就是wwroot目录下,具体的上传方式很多,我普遍使用两种方式
1.通过git的方式上传,前提是你的服务器安装了git,直接将项目git clone到wwwroot下,注意点(一般上传git都会有忽略文件,这样你git clone的项目跟你本地上传的项目肯定有文件丢失,如果通过这个方式就不要添加忽略文件,这样上传的就可以跟你本地的一致),当时我就遇到了这个问题,哎,浪费了我把妹的时间
2.直接通过这个我们传统的FTP上传,尽管很落后但是很实用,不用管git等忽略文件的问题,这宝塔管理系统真的很方便,直接在软件管理里面安装FTP,也就是我上面一开始说的,安装完毕,我们点击左侧的FTP来添加FTP,具体如下图
用户名和密码你自己随便设置,记住就行,后面我们用来登录FTP,根目录我直接设置到了wwwroot目录,省的上传到服务还得移动到wwwroot目录,能省点时间是点时间
下面我们开始连接FTP,我这里使用的是FileZilla软件连接的,具体如下图
主机就是你的外网IP 账号密码就是你上面设置的,端口号默认的是21,如果你在上面更改了端口号,写上更改后的端口,这时候你点急连接,一万个草泥马飘过,为什么连接不上,如下原因
1.确保你的阿里云服务器安全组放行了21端口,如果不会怎么设置,去阅读下阿里的官方文档
2.放行39000到40000端口
3.设置FTP配置文件,直接通过宝塔后台管理系统设置,很方便,具体如下
这样不出意外的话你就可以连接上了,具体的上传方法我就不说了,这你要是玩不了,估计你妹子都不会玩
以上网站代码都上传到了wwwroot目录,还是不可以访问的,我们的nginx还没有配置呢,配置很简单,我们还是在宝塔管理系统里设置,具体步骤如下图
这时候你会觉得我们都配置完毕了,我当时也是这么以为的,直接在浏览器输入公网IP访问,提示你成功了,熟悉thinkphp的同学都知道,public目录下是没有index.html文件的,只有index.php文件,你会发现宝塔会在你这个文件夹下创建一个index.html文件,这不是我们想要的,直接删除,我们在接着访问
我靠,直接出现如下图错误
Warning: require(): open_basedir restriction in effect. File(/www/wwwroot/thinkphp/start.php) is not within the allowed path(s): (/www/wwwroot/public/:/tmp/:/proc/) in /www/wwwroot/public/index.php on line 17
Warning: require(/www/wwwroot/thinkphp/start.php): failed to open stream: Operation not permitted in /www/wwwroot/public/index.php on line 17
Fatal error: require(): Failed opening required '/www/wwwroot/public/../thinkphp/start.php' (include_path='.:/www/server/php/70/lib/php') in /www/wwwroot/public/index.php on line 17
一万个草你妈飘过~~~,当时我一直以为是nginx 配置文件的问题,各种配置,各种百度,各种谷歌,消耗了我大半天把妹时间还是没有解决,后来发现是宝塔在捣鼓,默认创建的时候会给创建个防伪站攻击的base_dir,我们直接取消即可,具体如下
我们再试一次,看到如下图,恭喜你成功了!
截止目前为止你是可以访问了,但是nginx是不知道pathinfo的,比如我们访问http://xxxxxxxx/api/login/login,直接会报404错误,还得设置nginx
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
index MAMP_Localhost_DirectoryIndex_MAMP;#此设置MAMP软件设置,如果不设置直接访问IP地址无法访问默认index
}
配置完如下图
这样我们nginx和就支持pathinfo访问了,又可以跟妹子完了