====== ubuntu+Nginx+php-fpm+Mysql+Redis+ssl ======
===== 安装LNMP环境 =====
首先,墙裂推荐一套工具:[[https://winscp.net/eng/docs/lang:chs|WinSCP]]+[[https://www.putty.org/|Putty]],管理文件方便很多。Mac版用[[http://soft.macx.cn/2647.htm|Coda]]。
==== 基础环境 ====
apt-get update
apt-get install nginx mysql-server php * 注意 期间会要求输入MySQL的root密码
==== 配置Nginx支持PHP ====
vi /etc/nginx/sites-available/default
......
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
incloude snippets/fastcgi-php.conf;
#
# # With php7.0-cgi alone;
# fastcgi_pass 127.0.0.1:9000;
# # With php7.2-fpm;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
......
vi /etc/php/7.2/fpm/php-fpm.conf
...........
listen = /run/php/php7.2-fpm.sock
==== 重启Nginx ====
nginx -s stop
nginx
这里有可能出现找不到pid的情况,可能是因为阿里云服务器自动启动了apache,只要把它关掉就行
netstat -ap | grep http
kill xxxxx(apache的pid)
关闭Apache2自启动,需要找到etc/rc0.d ~ rcx.d/目录下所有 S01apache2文件
或直接卸载Apache2
update-rc.d apache2 stop 80 0 1 2 3 4 5 6
或一个个删除
sudo mv S01apache2 K01apache2
sudo apt-get remove apache2
==== 测试PHP ====
vi /var/www/html/info.php
修改 short_open_tag
vi /etc/php/7.2/fpm/php.ini
找到 short_open_tag = Off
改为 short_open_tag = On
修改上传文件设置
php.ini
upload_max_filesize = 128M
post_max_size = 128M
memory_limit = 256M
nginx.conf
client_max_body_size 100M;
需重启php和nginx
安装curl扩展
apt-get install php7.2-curl libcurl4 libcurl4-dev php-curl
apt-get install php-mbstring
===== 安装redis =====
==== 安装和配置redis ====
apt-get install redis-server
apt-get install git php-dev
git clone -b php7-ipv6 https://github.com/phpredis/phpredis.git * 注意 -b php7-ipv6为可选参数
cd phpredis/
phpize
./configure
make
make install
==== 启动和测试Redis ====
redis-server /etc/redis/redis.conf
redis-cli>Ping
Pong
配置权限
>config set masterauth 123456
>config set requirepass 123456
>config rewrite
(error) NOAUTH Authentication required.
>auth 123456
>config rewrite
ok
==== 配置php-redis ====
vi /etc/php/7.2/fpm/conf.d/redis.ini * 注意 并无此文件 直接创建
extension=redis.so
==== 配置mysqli ====
apt-get install php-mysqli
vi /etc/php/7.0/fpm/php.ini * 在文件最后添加
extension="mysqli.so"
==== 重启fpm ====
/etc/init.d/php7.0-fpm restart
===== 启动MySQL =====
service mysql start
mysql -u root -p * 注意 期间会要求验证之前输入的MySQL root密码>SET NAMES utf8;
Query OK, 0 rows affected (0.00 sec)
如果此时发现Mysql密码并未设置(按回车直接可进)则可以执行以下动作
>use mysql;>update user set authentication_string=password('新密码') where user='root';
==== 修改mysql配置文件允许远程登陆 ====
/etc/mysql/mysql.conf.d/mysqld.cnf
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1 #注释掉这一行就可以远程登录了
===== HTTPS支持 =====
把证书保存到 /etc/nginx/cert/
vi /etc/nginx/sites-available/default
在最后添加配置
server {
# SSL configuration
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
#ssl on;
ssl_certificate cert/你的pem文件名.pem;
ssl_certificate_key cert/你的key文件名.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.php;
server_name 你的域名;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}
===== HTTPS支持 =====
=== 简单方案 ===
[[给nginx挂上免费的ssl|Ubuntu+Nginx+免费SSL]]
=== 自定义方案 ===
把证书保存到 /etc/nginx/cert/
vi /etc/nginx/sites-available/default
在最后添加配置
server {
# SSL configuration
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
#ssl on;
ssl_certificate cert/你的pem文件名.pem;
ssl_certificate_key cert/你的key文件名.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.php;
server_name 你的域名;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}