参考两篇博文
https://blog.youkuaiyun.com/github_38336924/article/details/82459078
https://blog.youkuaiyun.com/qq895767507/article/details/52121289
一、购机搭环境
1、认证后购买腾讯云1core2G内存的学生机,1个月+域名购买=10+8元,
2、安装了apache2,libapache2-mod-php7.2 让apache支持php7.2,也就是说能够解析php7.2。
$sudo apt-get install apache2 libapache2-mod-php7.2
3、安装了mysql-server和mysql-client
$sudo apt-get install mysql-server mysql-client
3.1、解决安装最后未提示设置root密码
3.1.0、系统默认会给我们分配的用户名和密码,通过这个密码就可以直接对MySQL进行操作了。
3.1.1、获取系统默认分配的用户名和密码
$sudo vim /etc/mysql/debian.cnf
可以看到里面有:
user = debian-sys-maint
password = XjBYK4rKNMWX9JDX
3.1.2、修改root密码
$ mysql -u debian-sys-maint -p
然后输入密码,密码就上面的说的,我的是:XjBYK4rKNMWX9JDX
mysql> update mysql.user set authentication_string=password('new password') where user='root' and Host ='localhost';
mysql> use mysql;
mysql> update user set plugin="mysql_native_password";
mysql> flush privileges;
mysql> quit;
3.1.3、重启mysql服务
sudo service mysql restart
4、安装phpmyadmin
-
sudo apt-get install phpmyadmin
phpmyadmin设置:
在安装过程中会要求选择Web server:apache2或lighttpd,使用空格键选定apache2,按tab键然后确定。然后会要求输入设置的Mysql数据库密码连接密码Password of the database’s administrative user。
然后将phpmyadmin与apache2建立连接,以我的为例:www目录在/var/www,phpmyadmin在/usr/share /phpmyadmin目录,所以就用命令: -
sudo ln -s /usr/share/phpmyadmin /var/www
建立链接。
phpmyadmin测试:在浏览器地址栏中打开http://公网IP/phpmyadmin。
以上ALMP的基本组件就安装完毕了,下面我们再来看一些其他的设置:
步骤五,设置Ubuntu文件执行读写权限
LAMP组建安装好之后,PHP网络服务器根目录默认设置是在:/var/www。由于Linux系统的安全性原则,改目录下的文件读写权限是只允许root用户操作的,所以我们不能在www文件夹中新建php文件,也不能修改和删除,必须要先修改/var/www目录的读写权限。在界面管理器中通过右键属性不能修改文件权限,得执行root终端命令: -
sudo chmod -R 777 /var/www/html
参考原文:https://blog.youkuaiyun.com/u014570569/article/details/83275780 ,采坑记录
二、上传项目并配置
1、使用Xftp上传本地项目文件到服务器/var/www/html目录下 //Xftp是商用软件,这里使用 Filezilla,走sftp协议
2、在Apache中配置VirtualHost,笔者使用软连接方式方便以后项目多了好管理
# /etc/apache2/sites-available目录下新建配置文件 foundlost.conf
# 写入如下的内容:
<VirtualHost *:80>
ServerName demo.com # 你的域名,必须保证域名已经绑定服务器IP
DocumentRoot /var/www/html/项目 # 你的项目路径
<Directory /var/www/html/项目>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
# 日志输出路径
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
注:上述 CustomLog 末尾加一个 common
使用软连接将新建的配置文件连接到/etc/apache2/sites-enabled目录下
cd /etc/apache2/sites-enabled
ln -s /etc/apache2/sites-available/foundlost.conf foundlost.conf
重启Apache,在浏览器中输入正确的项目网址,即完成。
为TP项目设置路由,隐藏网站访问路径中的index.php
解决办法:
1、在TP5项目的配置文件中开启路由 //这一步跳过
// 文件路径~/application/config.php
// 是否开启路由
'url_route_on' => true,
// 路由使用完整匹配
'route_complete_match' => false,
// 路由配置文件(支持配置多个)
'route_config_file' => ['route'],
// 是否强制使用路由
'url_route_must' => true,// true或false看个人
2、在~/application/route.php文件中创建路由规则 //这一步跳过
<?php
return [
'newtest' => 'api/API/newTest'// 可以创建多个,这里以一个为例
];
3、修改与项目入口文件在同一级下的.htaccess文件,修改rewrite规则,一般路径为~/public/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
注:这里我修改了本地文件后上传覆盖
4、在Apache中开放rewrite模块,在/etc/apache2/mods-enabled中建立rewrite.load的软连接
cd /etc/apache2/mods-enabled
ln -s /etc/apache2/mods-available/rewrite.load rewrite.load
5、重启Apache
6、如果不行,检查一下/etc/apache2/apache2.conf文件中的AllowOverride None是否已经改为AllowOverride All
本地测试报 requested Url not found on the server
解决步骤如下:
1、浏览器输入 foundlost7.cn 发现虽然购买了域名,但是还没有绑定到IP,因此修改
<VirtualHost *:80>
ServerName foundlost7.cn ==> IP地址
DocumentRoot /var/www/html/foundlost
<Directory /var/www/html/foundlost>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log common
</VirtualHost>
2、重写开启,修改/etc/apache2/apache2.conf
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All //None --> All
Require all granted //denied --> granted
</Directory>
通过 $sudo a2enmod rewrite 若提示重写模块已打开,则证明打开成功
3、排除了重写,搜索.htaccess要怎么写,看到了以下一篇利用.htaccess配置缩短访问路由的文章,意识到之前学习开发的时候在本机运行的时候,利用了apache的虚拟主机配置,做了同样的事,去掉了public,直接foundlost.org带上配置的路由规则就能访问(eg: http://foundlost.org/api/v1/book )。由于tp5的目录结构,/public 目录下的index是 foundlost项目的入口,因此在路由增加/public http://IP:80/public/API,成功响应。
http://www.tp5.com/public/index.php/a
这样太长不好看可改
打开public,找到重写文件.htaccess 修改
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
改为
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
这样就可以访问:
http://www.tp5.com/public/a
但是,还想吧public 去掉
可在配置域名或者ip指向目录路径的时候多加上xxxx/public
即可
http://www.tp5.com/a
响应截图: