NGINX 编译安装
NGINX 版本:1.11.3
参考地址:
https://www.cnblogs.com/piscesLoveCc/p/5794926.html
一、安装Nginx依赖库
1、安装gcc g++的依赖库
apt-get install build-essential
apt-get install libtool
2、安装 pcre依赖库(
http://www.pcre.org/
)
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
3、安装 zlib依赖库(
http://www.zlib.net
)
apt-get install zlib1g-dev
问题一:
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
解决方法:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
问题二:
E: dpkg 被中断,您必须手工运行 ‘sudo dpkg --configure -a’ 解决此问题。
解决方法:
sudo rm /var/lib/dpkg/updates/*
sudo apt-get update
sudo apt-get upgrade
4、安装ssl依赖库
apt-get install openssl
二、安装Nginx(
http://nginx.org
)
1、下载最新版本
wget http://nginx.org/download/nginx-1.11.3.tar.gz
2、解压
tar -zxvf nginx-1.11.3.tar.gz
3、进入解压目录
cd nginx-1.11.3
4、配置
./configure --prefix=/usr/local/nginx
5、编译
make
注意:这里可能会报错,提示“pcre.h No such file or directory”,具体详见:
http://stackoverflow.com/questions/22555561/error-building-fatal-error-pcre-h-no-such-file-or-directory
需要安装 libpcre3-dev,命令为:sudo apt-get install libpcre3-dev
6、安装nginx
make install
9、启动nginx
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过 -h查看帮助命令。
10、查看nginx进程
ps -ef|grep nginx
11、Nginx常用命令
# 启动Nginx
/usr/local/nginx/sbin/nginx
# 停止 Nginx
/usr/local/nginx/sbin/nginx -s stop
# 重新加载Nginx配置
/usr/local/nginx/sbin/nginx -s relaod
# 指定配置文件
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
# 查看 Nginx 版本
/usr/local/nginx/sbin/nginx -v 或者 /usr/local/nginx/sbin/nginx -V
# 检查配置文件是否正确
/usr/local/nginx/sbin/nginx -t
# 显示帮助信息
/usr/local/nginx/sbin/nginx -h
12、设置专门的配置文件目录
mkdir vhost
vim nginx.conf
在http选项的末尾添加“include vhost/*.conf;”
cd vhost
vim test.conf
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
13、配置文件备用一份
server {
listen 80; # 端口,一般http的是80
server_name we.smallzhou.cn; # 一般是域名,本机就是localhost
index index.php index.html; # 默认可以访问的页面,按照写入的先后顺序去寻找
root /usr/local/nginx/html; # 项目根目录
# 防止访问版本控制内容
location ~ .*.(svn|git|cvs) {
deny all;
}
# 此处不是必须的,需要时候配置
location / {
# Laravel 5.4 Url 重写
try_files $uri $uri/ /index.php?$query_string;
}
# 下面是所有关于 PHP 的请求都转给 php-fpm 去处理
location ~ \.php {
# 注意: unix sock 和 ip ,两种方式只能选择一种
# 基于unix sock 访问,Ubuntu Apt 方式安装的PHP默认是以sock方式启动
# fastcgi_pass unix:/run/php/php7.0-fpm.sock;
# 基于IP访问
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
fastcgi_intercept_errors on;
# 日志保存目录,一般按照项目单独保存, 开发环境可以关闭
#access_log logs/localhost_access.log access;
access_log off;
}
14、常见错误
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
解决方法:killall -9 nginx
================================================================
无法访问PHP文件
解决方法:监测nginx和php-fpm是否启动!
MYSQL编译安装
MYSQL 版本 5.7.23
1、系统安装条件
①
cmake
:MySQL使用cmake跨平台工具预编译源码,用于设置mysql的编译参数。
sudo apt-get install cmake
②
bison
:Linux下C/C++语法分析器
sudo apt-get install bison
③
ncurses
:字符终端处理库
sudo apt-get install libncurses5-dev
④
gcc
:GCC是Linux下的C语言编译工具,mysql源码编译完全由C和C++编写。Ubuntu默认已装
⑤
Boost1.59.0
:mysql源码中用到了C++的Boost库,要求必须安装boost1.59.0
下载Boost1.59.0源代码,并解压到/usr/local/目录下:
# wget https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
# tar -zxvf boost_1_59_0.tar.gz -C /usr/local/
2、下载MySQL源码
从github上下载mysql的源码:
https://github.com/mysql/mysql-server.git
3、编译MySQL源码
①
添加Mysql用户
# groupadd mysql
# useradd -r -g mysql mysql
②
创建Mysql安装程序的目录和数据文件的目录
# mkdir /usr/local/mysql
# mkdir /home/MysqlData
# chown -R mysql:mysql /user/local/mysql
# chown -R mysql:mysql /home/MysqlData
③
解压缩Mysql5.7源码,并编译
# cd /root
# tar -zxvf mysql-server-5.7.zip
# cd mysql-server-5.7
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/home/MysqlData -DWITH_BOOST=/usr/local/boost_1_59_0 -DSYSCONFDIR=/etc -DEXTRA_CHARSETS=all
# make
# make install
4、安装配置MySQL
①
* 初始化Mysql数据库*
# cd /usr/local/mysql
# ./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/MysqlData
# 5.7.6之后版本初始系统数据库脚本(本文使用后面方式)
# ./bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/home/MysqlData
# ./bin/mysql_ssl_rsa_setup
注意:如果使用–initialize参数初始化系统数据库之后,会在~/.mysql_secret文件中生成root用户的一个临时密码,同时也在初始化日志中打印出来了
②
配置Mysql服务
由于Ubuntu没有chkconfig命令,用update-rc.d命令将Mysql服务加入到系统服务中
# cp support-files/mysql.server /etc/init.d/mysql
# update-rc.d mysql defaults
# update-rc.d mysql start 2 3 4 5 . stop 0 1 6
③
配置mysql环境变量
# vim /etc/profile
# export PATH=/usr/local/mysql/bin:$PATH
# source /etc/profile
④
启动Mysql服务
# /etc/init.d/mysql start
# /etc/init.d/mysql stop
5、注意事项
1、如果中途编译失败了,需要删除cmake生成的预编译配置参数的缓存文件和make编译后生成的文件,再重新编译。
# cd mysql-server-5.7
# rm -f CMakeCache.txt
# make clean
6、新建新用户并赋权
# grant all privileges on *.* to jason@"%" identified by "123456" with grant option;
# flush privileges;
7、必要说明
1、support-files/my-default.cnf 该版本文件不存在
2、初次登录,需要修改root用户密码:SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘newpass’);有可能root用户密码为空,回车直接登录
3、错误:php: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
解决方法:ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib
8、pdo_mysql的扩展安装
# sudo su
# cd
# cd php-7.2.6
# cd ext
# cd pdo_mysql
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql //mysql的安装路径
问题一:
这边可能会提示autoconf不存在,解决方法:apt-get install autoconf
# make
# make install
# cd /usr/local/php/lib
# vim php.ini
# 打开pdo_mysql.so扩展或者新添加
# 重启php-fpm 和nginx
# 查看扩展:php -m
# 问题二:项目连接数据库提示could not find drive
解决方法:make clean后重新编译
PHP 编译安装
php版本:7.2.6
1、获取源码包
http://php.net/=====>download====>php-7.2.6.tar.bz2 (sig)=====>随便选择某个下载地址
2、php安装
# sudo su
# cd
# tar -xjvf php-7.2.6.tar.bz2
# cd php-7.2.6
问题一:configure: error: libxml2 not found. Please check your libxml2 installation
解决方法:
# apt-get install libxml2-dev
# # ./configure --prefix=/usr/local/php --enable-fpm --disable-fileinfo
# make
# make install
3、php.ini配置
# cp /root/php-7.2.6/php.ini-development /usr/local/php/etc/
# cd /usr/local/php/etc
# mv php.ini-development php.ini
# /usr/local/php/bin/php -i | grep php.ini,返回:Configuration File (php.ini) Path => /usr/local/php/lib
# mv php.ini /usr/local/php/lib
# 设置php全局变量
# cp /usr/local/php/bin/php /usr/sbin
# 查看php依赖,包含php-fpm版本
# apt show php7.0
4、启动 php-fpm
# cp /usr/local/php/etc/php-fpm.conf.default php-fpm.conf
# /usr/local/php/sbin/php-fpm
问题一:
[28-May-2018 15:25:18] WARNING: Nothing matches the include pattern '/usr/local/php/etc/php-fpm.d/*.conf' from /usr/local/php/etc/php-fpm.conf at line 125.
[28-May-2018 15:25:18] ERROR: No pool defined. at least one pool section must be specified in config file
[28-May-2018 15:25:18] ERROR: failed to post process the configuration
[28-May-2018 15:25:18] ERROR: FPM initialization failed
解决方法:
# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
问题二:
[28-May-2018 15:30:03] ERROR: [pool www] cannot get gid for group 'nobody'
[28-May-2018 15:30:03] ERROR: FPM initialization failed
解决方法:# vim /usr/local/php/etc/php-fpm.d/www.conf
将user和group设置成当前登录这的用户名和组名,非root用户
# /usr/local/php/sbin/php-fpm //启动
#关闭php-fpm
ps -ef | grep php-fpm //查看进程ID
kill PID
内存不足,解决办法
参考地址:
https://blog.csdn.net/qq_32642039/article/details/78070813
# dd if=/dev/zero of=/home/swap bs=64M count=16
# sudo mkswap /home/swap
# sudo swapon /home/swap
用完关闭:
# sudo swapoff /home/swap
# sudo rm /home/swap
使用过程中经常出现的问题
问题一:
Uncaught Error: Call to undefined function Aliyun\Core\Http\curl_init()
解决方法:
# cd /php7.2.6/ext/curl
# /usr/local/php/bin/phpize
# ./configure -with-curl=/usr/local/curl -with-php-config=/usr/local/php/bin/php-config
出现问题:
ubuntu 安装 libcurl
# sudo apt-get install libcurl4-openssl-dev
# make
# make install
# 编辑php.ini,添加扩展
# extension = curl
# 重启NGINX
彻底卸载MYSQL5.7
删除mysql前 先删除一下 /var/lib/mysql 还有 /etc/mysql
#下面命令依次执行
sudo rm /var/lib/mysql/ -R # 删除数据库目录
sudo rm /etc/mysql/ -R #删除启动脚本、配置文件等
sudo apt-get autoremove mysql* --purge # 卸载mysql所有文件
sudo apt-get remove apparmor # 这个apparmor是在装mysql-server时装上的,和安全有关
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P # 清理残余mysql文件