天天看点

阿里云ubuntu部署TP5项目文章目录导语1.购买与配置阿里云服务器2.在服务器中配置php开发环境3.上传本地 ThinkPHP 5 项目参考资料

文章目录

目录

文章目录

导语

1.购买与配置阿里云服务器

1.1 购买域名

1.2 购买服务器

1.3 域名实名认证

1.4 备案服务器

2.在服务器中配置php开发环境

2.1 下载 XShell 6 ,Xftp 6

2.2 先升级apt-get

2.3 安装 MySQL

2.4 安装 Apache2

2.5 安装 php7.0

2.6 安装apache的php模块

2.7 安装php-mysql

3.上传本地 ThinkPHP 5 项目

3.1 使用Xftp上传本地项目

3.2 修改服务器apache网站默认根路径

3.3 远程连接 MySQL 

3.4 隐藏网站访问路径中的index.php

参考资料

导语

本教程使用阿里云 ubuntu 16.04 服务器,部署 ThinkPHP5 项目(学生轻量应用服务器),本地环境 windows10 64位,工具 XShell 6,Xftp 6,navicat for mysql

1.购买与配置阿里云服务器

1.1 购买域名

(根据自己需求可购买可不购买,如果不购买可直接看 1.2 我这里购买的是 腾讯云域名)

啥?你问为什么选择 腾讯 域名,当然是因为 便宜 啊。我购买的是 .xyz 域名。灵活经济是也~

当然购买 阿里云域名 ,操作也是一致的。

阿里云ubuntu部署TP5项目文章目录导语1.购买与配置阿里云服务器2.在服务器中配置php开发环境3.上传本地 ThinkPHP 5 项目参考资料

1.2 购买服务器

 阿里云学生轻量应用服务器购买地址 

选择 系统镜像 > Ubuntu 16.04 64位 ( 有效期可根据自己需求选择,但是如果需要备案服务器的话,需要有效期 >= 3个月 )

阿里云ubuntu部署TP5项目文章目录导语1.购买与配置阿里云服务器2.在服务器中配置php开发环境3.上传本地 ThinkPHP 5 项目参考资料

1.3 域名实名认证

# 当天就可以认证

1.4 备案服务器

阿里云服务器备案需1天,隔天阿里云工作人员会与你确认备案信息。

* 前提:域名必须实名认证超过3天,否则域名注册商那里查询不到该域名,备案会失败

2.在服务器中配置php开发环境

  MySQL + apache2 + php 7.0

使用工具 XShell 6 ,Xftp 6 工具进行远程连接阿里云服务器

2.1 下载 XShell 6 ,Xftp 6

附上百度网盘地址,提取码:zica 

安装完成后,打开 XShell 6

  • 新建会话 默认端口 22
  • 使用 ssh 实现公钥登陆
所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
# 用ssh-keygen生成一个公钥
ssh-keygen
           

运行上面的命令以后,系统会出现一系列提示,可以一路回车。其中有一个问题是,要不要对私钥设置口令(passphrase),如果担心私钥的安全,这里可以设置一个。

运行结束以后,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。

这时再输入下面的命令,将公钥传送到远程主机host上面:

ssh-copy-id root@公网IP
           

好了,从此你再登录,就不需要输入密码了。

如果还是不行,就找到远程主机的/etc/ssh/sshd_config这个文件( 用Xftp 6打开 ),

阿里云ubuntu部署TP5项目文章目录导语1.购买与配置阿里云服务器2.在服务器中配置php开发环境3.上传本地 ThinkPHP 5 项目参考资料

左边为你本地 windows 10 上的资源管理,右边为远程主机的文件管理,在右边找到 sshd_config 文件,右键 用记事本编辑

阿里云ubuntu部署TP5项目文章目录导语1.购买与配置阿里云服务器2.在服务器中配置php开发环境3.上传本地 ThinkPHP 5 项目参考资料

检查下面几行前面"#"注释是否取掉。

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
           

然后,重启远程主机的ssh服务。

service ssh restart
           

之后,你再进入 XShell 6 中时,不用再输入密码

阿里云ubuntu部署TP5项目文章目录导语1.购买与配置阿里云服务器2.在服务器中配置php开发环境3.上传本地 ThinkPHP 5 项目参考资料

2.2 先升级apt-get

一定要先升级,避免遇到找不到软件包的错误。

sudo apt-get update
sudo apt-get upgrade
           

2.3 安装 MySQL

sudo apt-get install mysql-server
mysql --version
# 出现如下界面,则MySQL成功安装
           
阿里云ubuntu部署TP5项目文章目录导语1.购买与配置阿里云服务器2.在服务器中配置php开发环境3.上传本地 ThinkPHP 5 项目参考资料

2.4 安装 Apache2

sudo apt-get install apache2
           

在浏览器打开 公网ip ,若出现如下界面,则成功安装

阿里云ubuntu部署TP5项目文章目录导语1.购买与配置阿里云服务器2.在服务器中配置php开发环境3.上传本地 ThinkPHP 5 项目参考资料

2.5 安装 php7.0

sudo apt-get install php7.0
           

2.6 安装apache的php模块

* 使apache可以调用php引擎处理php程序,不然无法解析 php代码,会把php代码当作字符串直接显示在页面上

apt-get install libapache2-mod-php

#运行完成之后通过命令查看是否安装成功

cat /etc/apache2/mods-enabled/php7.0.load
           

如果显示下列内容,则代表成功

Conflicts: php5

LoadModule php7_module /usr/lib/apache2/modules/libphp7.0.so

验证是否安装完成,建一个文档:(/var/www/html 为 apache 网站默认根目录)

sudo vi /var/www/html/info.php
           

按下i键编辑文件 输入

<?php
  phpinfo();
?>
           

按下Esc退出写入模式,输入

:wq

保存退出(记住有冒号)

重启Apache:

service apache2 restart

,在浏览器中输入

公网IP/info.php

如果看到下图则说明PHP安装成功。

阿里云ubuntu部署TP5项目文章目录导语1.购买与配置阿里云服务器2.在服务器中配置php开发环境3.上传本地 ThinkPHP 5 项目参考资料

2.7 安装php-mysql

* 不然会遇到未找到PDO驱动错误could not find driver 问题

sudo apt install php7.0-mysql
           

修改配置文件 去掉

/etc/php/7.0/apache2/php.ini

文件中

extension=php_pdo_mysql.dll

前面的

;

然后重启Apache

验证,可以通过查看phpinfo中的PDO扩展是否有mysql

阿里云ubuntu部署TP5项目文章目录导语1.购买与配置阿里云服务器2.在服务器中配置php开发环境3.上传本地 ThinkPHP 5 项目参考资料

3.上传本地 ThinkPHP 5 项目

3.1 使用Xftp上传本地项目

上传本地文件到服务器

/var/www/html

目录下

3.2 修改服务器apache网站默认根路径

打开 /etc/apache2/sites-available/000-default.conf

  • 把  DocumentRoot /var/www/html 改成  DocumentRoot /var/www/html/你的项目名/public
  • 重启Apache,在浏览器中输入正确的项目网址,即完成。(service apache2 restart)

检查配置成功没:可以把上面的 info.php 复制到 public 目录下,在浏览器打开 域名/info.php

( 服务器没备案完成 / 没域名:在浏览器打开 公网IP/info.php )

3.3 远程连接 MySQL 

  • 安装 Navicat for MySQL 

Navicat for MySQL 网盘下载地址   提取码:g5fu 

安装 Navicat for MySQL 后运行下 文件夹中的  PatchNavicat.exe 激活

  • 在阿里云控制台开放3306端口

打开 安全 > 防火墙 > 添加规则 MYSQL (如果有就不用添加了)

阿里云ubuntu部署TP5项目文章目录导语1.购买与配置阿里云服务器2.在服务器中配置php开发环境3.上传本地 ThinkPHP 5 项目参考资料
  • 配置mysql允许远程连接

一、修改/etc/mysql/my.conf

找到bind-address = 127.0.0.1这一行

改为bind-address = 0.0.0.0即可

二、为需要远程登录的用户赋予权限

在 XShell 中,运行

mysql -u root -p
#提示输入密码
           

如果输入密码后能登入 mysql> 界面,则直接跳到 三、新建用户远程连接mysql数据库

若提示不能登入,但确定自己密码没有输错,则我们尝试启用安全模式登入MySQL,这样可以绕过密码登入,登入后再修改MySQL密码。

安全模式登入MySQL

1

2

3

4

5

6

7

$ sudo /etc/init.d/mysql stop

-------------------------------------

[sudo] wl 的密码:

[ ok ] Stopping mysql (via systemctl): mysql.service.

$ sudo /usr/bin/mysqld_safe 

--skip-grant-tables --skip-networking &

 输入第一行终止MySQL运行,成功,会提示下面两行;输入第四行,成功,没有任何报错则可以另外打开一个终端窗口进行下一步操作;但是一般会报错,比如提示mysqld_safe Directory ‘/var/run/mysqld’ for UNIX socket file don’t exists

因此我们尝试输入以下代码

1

2

3

$ sudo mkdir -p /var/run/mysqld

$ sudo chown mysql:mysql /var/run/mysqld

 最后再次输入:

1

sudo /usr/bin/mysqld_safe 

--skip-grant-tables --skip-networking &

 到了这里不在提示错误,可以打开另一个终端端口了,尝试无密码登入MySQL。

1

mysql -u root

 到这里应该可以进入MySQL了,继续操作

1

2

3

4

5

6

7

> use mysql;

update

user

set

authentication_string=

PASSWORD

(

"这里输入你要改的密码"

where

User

=

'root'

; #更改密码

update

user

set

plugin=

"mysql_native_password"

; #如果没这一行可能也会报一个错误,因此需要运行这一行

> flush 

privileges

; #更新所有操作权限

> quit;

 4、使用修改的密码登入MySQL

经过上面一系列的操作,应该可以正常使用你更改的密码登入了。

1

2

3

4

sudo /etc/init.d/mysql stop

sudo /etc/init.d/mysql start # reset mysql

mysql -u root -p

三、新建用户远程连接mysql数据库

1

2

3

4

5

6

7

> use mysql;

grant all on *.* to admin@'%' identified by '123456' with grant option;  # 用户名为admin,密码为123456,可根据自己需要修改

> flush 

privileges

; #更新所有操作权限

> select host,user from user; # 查看结果

# 结果 +-----------+------------------+ | host      | user             | +-----------+------------------+ | %         | admin         | | localhost | debian-sys-maint | | localhost | mysql.session    | | localhost | mysql.sys        | | localhost | root             | +-----------+------------------+

若遇到 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' 问题

1

2

3

4

#ps -A|grep mysql

显示类似:

  1829 ?        00:00:00 mysqld_safe

   1876 ?        00:00:31 mysqld

#kill -9 1829

#kill -9 1876

#/etc/init.d/mysql restart

#mysql -u root -p

若还未解决,可参考  ERROR 2002 (HY000)解决办法 解决

  • Navicat for MySQL 实现远程连接,连接测试通过后,点击确定
阿里云ubuntu部署TP5项目文章目录导语1.购买与配置阿里云服务器2.在服务器中配置php开发环境3.上传本地 ThinkPHP 5 项目参考资料

我是通过 导入.sql 文件

此时通过浏览器可访问 公网IP/index.php/....(你route.php中设置的路由规则 eg.公网IP/index.php/api/v1/theme/1)

(如果备案好了,则可以用 域名/index.php/....(你route.php中设置的路由规则 eg.域名/index.php/api/v1/theme/1))

3.4 隐藏网站访问路径中的index.php

检查一下

/etc/apache2/apache2.conf 

文件中的AllowOverride None 是否已经改为 AllowOverride All

重启Apache(service apache2 restart)

此时通过浏览器可访问 公网IP/....(你route.php中设置的路由规则 eg.公网IP/api/v1/theme/1)

(如果备案好了,则可以用 域名/....(你route.php中设置的路由规则 eg.域名/api/v1/theme/1))

参考资料

ssh原理与运用:http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html

配置mysql允许远程登陆: http://www.cnblogs.com/linjiqin/p/5270938.html

mysql root用户重置密码: https://blog.csdn.net/heatdeath/article/details/78907563

ERROR 2002(HY000)解决办法: https://blog.csdn.net/heatdeath/article/details/78907563

用Navicat for mysql导入.sql文件:https://www.cnblogs.com/keyi/p/5978982.html

阿里云ECS配置TP5项目: https://blog.csdn.net/u014570569/article/details/83275780