文章目录
目录
导语
本教程使用阿里云 ubuntu 16.04 服务器,部署 ThinkPHP5 项目(学生轻量应用服务器),本地环境 windows10 64位,工具 XShell 6,Xftp 6,navicat for mysql
1.购买与配置阿里云服务器
1.1 购买域名
(根据自己需求可购买可不购买,如果不购买可直接看 1.2 我这里购买的是 腾讯云域名)
啥?你问为什么选择 腾讯 域名,当然是因为 便宜 啊。我购买的是 .xyz 域名。灵活经济是也~
当然购买 阿里云域名 ,操作也是一致的。
1.2 购买服务器
选择 系统镜像 > Ubuntu 16.04 64位 ( 有效期可根据自己需求选择,但是如果需要备案服务器的话,需要有效期 >= 3个月 )
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打开 ),
左边为你本地 windows 10 上的资源管理,右边为远程主机的文件管理,在右边找到 sshd_config 文件,右键 用记事本编辑
检查下面几行前面"#"注释是否取掉。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
然后,重启远程主机的ssh服务。
service ssh restart
之后,你再进入 XShell 6 中时,不用再输入密码
2.2 先升级apt-get
一定要先升级,避免遇到找不到软件包的错误。
sudo apt-get update
sudo apt-get upgrade
2.3 安装 MySQL
sudo apt-get install mysql-server
mysql --version
# 出现如下界面,则MySQL成功安装
2.4 安装 Apache2
sudo apt-get install apache2
在浏览器打开 公网ip ,若出现如下界面,则成功安装
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安装成功。
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
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 (如果有就不用添加了)
- 配置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 |
|
输入第一行终止MySQL运行,成功,会提示下面两行;输入第四行,成功,没有任何报错则可以另外打开一个终端窗口进行下一步操作;但是一般会报错,比如提示mysqld_safe Directory ‘/var/run/mysqld’ for UNIX socket file don’t exists
因此我们尝试输入以下代码
1 2 3 |
|
最后再次输入:
1 |
|
到了这里不在提示错误,可以打开另一个终端端口了,尝试无密码登入MySQL。
1 |
|
到这里应该可以进入MySQL了,继续操作
1 2 3 4 5 6 7 |
|
4、使用修改的密码登入MySQL
经过上面一系列的操作,应该可以正常使用你更改的密码登入了。
1 2 3 4 |
|
三、新建用户远程连接mysql数据库
1 2 3 4 5 6 7 |
|
若遇到 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 #kill -9 1829 #kill -9 1876 #/etc/init.d/mysql restart #mysql -u root -p |
若还未解决,可参考 ERROR 2002 (HY000)解决办法 解决
- Navicat for MySQL 实现远程连接,连接测试通过后,点击确定
我是通过 导入.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