ubuntu20(root)+PHP+nginx+mysql

nginx【较新版】

wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
lsb_release -a
vi /etc/apt/sources.list# lsb_release -a 返回的Ubuntu系统版本编码(英文) 添加到sources.list中。【focal为Ubuntu20.04对应版本编码】
deb http://nginx.org/packages/ubuntu/ focal nginx
deb-src http://nginx.org/packages/ubuntu/ focal nginx# 保存sources.list退出
:wq# 安装nginx
apt update
apt -y install nginx
systemctl enable/disable/status/start/stop/restart nginx# 查看Nginx版本
nginx -v1.22.0

PHP7.4【修改数字即可安装不同版本】

# 彻底卸载apt安装的PHP
aptitude purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`            apt -y install software-properties-common
add-apt-repository ppa:ondrej/php
apt update
apt -y install php7.4 php7.4-fpm# 安装PHP扩展,php7.4-dev用于后面pecl安装扩展时自动编译(支持命令:phpize)
apt -y install php7.4-mcrypt php7.4-mbstring php7.4-curl php7.4-cli php7.4-mysql php7.4-gd php7.4-intl php7.4-xsl php7.4-zip php7.4-dev php7.4-xml php7.4-soapsystemctl enable/disable/status/start/stop/restart php7.4-fpm# 查询PHP版本
php -v7.4.22

mysql8

apt install -y mysql-server

mysql8设置root密码

第一步:mysql8默认安装完成后,root账户没有密码,直接执行命令“mysql”即可登录。

第二步:还原密码设置。

update mysql.user set authentication_string='' where user='root';
update mysql.user set plugin='mysql_native_password' where user='root';
FLUSH PRIVILEGES;

第三步:通过mysql提供的脚本来设置密码。
MySQL安装随附一个名为的脚本mysql_secure_installation。可以借助它设置我们MYSQL服务器的安全性!

mysql_secure_installation

按提示执行即可。最后出现“All done!”说明脚本执行完成。直接使用新设置密码登录即可。

整合PHP+nginx

find / -name www.confvi /etc/php/7.4/fpm/pool.d/www.conf# 设置php-fpm通过监听端口方式工作
;listen = /run/php/php7.4-fpm.sock
listen = 127.0.0.1:9000

nginx配置文件路径

ps -ef|grep nginx# nginx配置文件地址
root      498847       1  0 00:42 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.confvi /etc/nginx/nginx.conf# 自定义配置文件位置
include /etc/nginx/conf.d/*.conf;cd /etc/nginx/conf.d/vi weiweixiao.conf
:wq

weiweixiao.conf内容

server {# 修改真实域名端口# 如果就是使用默认80端口,就将此配置移植到/etc/nginx/sites-enable/default中listen 80 default_server;; listen [::]:80 default_server ipv6only=on;# 修改真实项目地址root XXXXXXXXXXXXXXXXX;index index.html index.htm index.php;# Make site accessible from http://localhost/server_name localhost;location / {# First attempt to serve request as file, then# as directory, then fall back to displaying a 404.#try_files $uri $uri/ =404;# Uncomment to enable naxsi on this location# include /etc/nginx/naxsi.rulesindex index.html index.htm index.php;#       if (!-e $request_filename) {#               break;#       }#       try_files $uri /index.php$uri;# 伪静态配置if (!-e $request_filename) {rewrite ^/(.*)$ /index.php/$1 last;break;}}# php-fpm配置location ~ .+\.php($|/) {# 修改真实项目地址root ##########################; fastcgi_index index.php;#       fastcgi_split_path_info ^(.+\.php)(.*)$;fastcgi_split_path_info ^((?U).+.php)(/?.+)$;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param PATH_INFO $fastcgi_path_info;fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;# 监听php-fpm端口fastcgi_pass 127.0.0.1:9000;fastcgi_connect_timeout 300s;fastcgi_send_timeout 300s;fastcgi_read_timeout 300s;include fastcgi_params;}location ^~ /Application/Runtime {deny all;}location ~* .*\.(svn|git|cvs).* {deny all;}}

php连接sqlserver配置

ODBC驱动安装

官网教程:https://learn.microsoft.com/zh-cn/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16#ubuntu17

# 查询Ubuntu系统版本号
lsb_release -rs  20.04# 安装ODBC驱动
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.listapt-get update
ACCEPT_EULA=Y apt-get install -y msodbcsql18# optional: for bcp and sqlcmd(通过命令行直连sqlserver)
ACCEPT_EULA=Y apt-get install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc# optional: for unixODBC development headers
apt-get install -y unixodbc-dev

PHP扩展【sqlsrv】安装

官网教程:https://learn.microsoft.com/zh-cn/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver16

# 如果,提示不存在pecl,按照提示 安装即可。pecl install sqlsrv
pecl install pdo_sqlsrvprintf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/7.4/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/7.4/mods-available/pdo_sqlsrv.iniphpenmod -v 7.4 sqlsrv pdo_sqlsrvsystemctl resrart php7.4-fpm

连接测试

<?php
namespace Test;/*** sqlsrv直连*/
class Test {protected $DB_SQLSERVER = array('db_type'  => 'sqlsrv','db_user'  => 'user','db_pwd'   => "password",'db_host'  => '127.0.0.1','db_port'  => '1433','db_name'  => 'dbname','db_charset' => 'UTF8',);public function test(){$sql='select * from table_name where id =1';dump($this->querySql($sql));}protected $sqlsrvConn = null;protected function sqlsrvConn(){$dbServerName = $this->DB_SQLSERVER['db_host'] . "," . $this->DB_SQLSERVER['db_port'];$connInfo = array();$connInfo['UID'] = $this->DB_SQLSERVER['db_user'];$connInfo['PWD'] = $this->DB_SQLSERVER['db_pwd'];$connInfo['Database'] = $this->DB_SQLSERVER['db_name'];$connInfo['Encrypt'] = 'no'; // 不使用SSL加密$this->sqlsrvConn = sqlsrv_connect($dbServerName,$connInfo);if($this->sqlsrvConn === false){$this->ajaxReturn(genInfoTip(CODE_FAIL, "sqlserver数据库连接失败:".sqlsrv_errors()));}}public function querySql($sql){if(empty($sql)){return genInfoTip(CODE_FAIL, "sql不能为空");}$this->sqlsrvConn();$queryRet = sqlsrv_query($this->sqlsrvConn, $sql);if($queryRet === false){$this->ajaxReturn(genInfoTip(CODE_FAIL, "sqlserver数据库查询异常:".sqlsrv_errors()));}$result = array();while(($row = sqlsrv_fetch_array($queryRet))){$result[] = $row;}return $result;}public function execSql($sql){if(empty($sql)){return genInfoTip(CODE_FAIL, "sql不能为空");}$this->sqlsrvConn();$exec = sqlsrv_query($this->sqlsrvConn, $sql);if($exec === false){$this->ajaxReturn(genInfoTip(CODE_FAIL, "sqlserver数据库sql操作异常:".sqlsrv_errors()));}$num=sqlsrv_rows_affected($exec);//返回修改的行数return $num;}

问题

报错:SQLSTATE[08001]: [Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate]

看到报错SSL,又是verify failed。怀疑是http传输加密,导致验证失败。

考虑是否可以取消SSL加密。

查询官网(使用连接字符串关键字 - SQL Server Native Client | Microsoft Learn)

发现有个字段和加密相关:Encrypt

然后直接sqlcmd测试(sqlcmd使用方式参考:使用 sqlcmd 进行连接 - ODBC Driver for SQL Server | Microsoft Learn):

测试 -N 参数:

最后,发现ThinkPHP3.2中并不支持此参数。故上文Test.class.php中采用直连方式 配置此参数,最终连接成功!

ubuntu20+PHP项目运行环境搭建相关推荐

  1. tomcat php centeros,linux(center OS7)安装JDK、tomcat、mysql 搭建java web项目运行环境...

    一.安装JDK 1.卸载旧版本或者系统自带的JDK (1)列出所有已安装的JDK rpm -qa | grep jdk (2)卸载不需要的JDK yum -y remove 安装包名称 2.下载并解压 ...

  2. Eclipse+Tomcat+MAVEN+SVN项目完整环境搭建

    1.JDK的安装 首先下载JDK,这个从sun公司官网可以下载,根据自己的系统选择64位还是32位,安装过程就是next一路到底.安装完成之后当然要配置环境变量了. ----------------- ...

  3. 大数据技术之Hadoop(入门)概述、运行环境搭建、运行模式

    文章目录 1 Hadoop 概述 1.1 Hadoop 是什么 1.2 Hadoop 优势 1.3 Hadoop 组成(面试重点) 1.3.1 HDFS 架构概述 1.3.2 YARN 架构概述 1. ...

  4. 大数据之Hadoop3.x 运行环境搭建(手把手搭建集群)

    文章目录 写在开头 安装包准备 一.Hadoop运行环境搭建(开发重点) 1.1 模板虚拟机环境准备 1.2 克隆虚拟机 1.3 在hadoop102安装JDK 1.4 在hadoop102安装Had ...

  5. VS中编译带Qt的他人项目,环境搭建及解决报错

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 VS中编译带Qt的他人项目,环境搭建及解决报错 一.安装VS及Qt及Qt VS Tools 二.报错及解决办法 1.未能找到程序集&q ...

  6. 基于RK3308的ROS运行环境搭建和交叉编译

    基于RK3308的ROS运行环境搭建和交叉编译 固件编译环境 准备工作 软件包安装 交叉编译工具链介绍 下载 SDK SDK 目录结构 全自动编译脚本 烧写镜像文件 第一步,编译固件(ubuntu18 ...

  7. vs2017运行环境_从零开始针对 .NET 应用的 DevOps 运营实践 运行环境搭建

    一.Overview 最近的一段时间,在公司里我都在进行基于 Jenkins 和 SonarQube 配合已有的 Gitlab 搭建部门的持续集成环境的工作,虽然之前有使用过 GitHub Actio ...

  8. Hadoop入门(上):大数据特点、大数据前景、大数据组织结构、Hadoop组成、Hadoop版本介绍、Hadoop运行环境搭建、CentOS6安装JDK、安装Hadoop、Hadoop目录结构

    资料来源于尚硅谷 本篇文章目录 第1章·大数据概论 1.1.大数据概念. 1.2.大数据特点(4V) 1.3.大数据应用场景 1.4.大数据发展前景 1.5·大数据部门业务流程分析. 1.6·大数据部 ...

  9. 2012 iis php mysql_Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建wordpress博客教程

    Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程 一.环境说明: 操作系统:Windows Server2012 R2 PHP版本:php 5.5.8 MySQ ...

最新文章

  1. 理解oracle中连接和会话
  2. [日记]一个人去散步
  3. 对于Chua 混沌电路进一步测试
  4. python图片识别-用10行Python代码进行图像识别
  5. excel批量更改超链接_Excel如何批量建立超链接,搭建工作台
  6. php抓取动态数据,php+ajax实现无刷新动态加载数据技术
  7. (转)Django ==== 实战学习篇九 在session中保存购物车
  8. js工作笔记003---js编写习惯_提高网页显示速度
  9. Android开发笔记(一百二十三)下拉刷新布局SwipeRefreshLayout
  10. Android 两个Activity进行数据传送 发送
  11. DirectShow程序运行过程简析
  12. Android ViewPager + Fragment实现滑动页面
  13. java程序(1016)
  14. caffe常用小工具
  15. 哈工大网络安全实验二报告
  16. RTI_DDS自定义插件开发 10 官方案例
  17. python qq群发消息_使用python发送QQ消息,QQ消息自动发送
  18. 用计算机打出来自天堂的魔鬼抖音,抖音来自天堂的魔鬼卡点视频教程
  19. hiho一下 第139周 买零食 动态规划
  20. 【翻译论文】An Object-Based Approach for Urban Land Cover Classification(2013)

热门文章

  1. 未识别的网络 无internet
  2. openshift和Docker和kubernetes的关系
  3. 每日一诗词 —— 定风波·莫听穿林打叶声
  4. 15.4 xshell使用xftp传输文件 15.5 使用pure-ftpd搭建ftp服务
  5. 面试题------Spring中Bean的初始化以及销毁init-method、destory-method
  6. 前端学习——CSS布局
  7. api c语言 播放视频,使用OpenCV播放视频文件(C/C++ API比较)
  8. docker容器搭建discuz论坛
  9. 百度地图的鼠标绘制工具
  10. 键盘计算机的区别吗,机械键盘如何选购? 它和普通键盘有什么区别?