Ubuntu 20.04/22.04 搭建LNMP开发环境
nginx/1.26安装
-
安装指定版本nginx
# 更新apt仓库缓存 sudo apt-get update # 安装nginx依赖的第三方包 sudo apt install curl gnupg2 ca-certificates lsb-release # 添加nginx官方的ubuntu的apt源 echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list # 新增nginx apt源的密钥,并检验是否成功 curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add - sudo apt-key fingerprint ABF5BD827BD9BF62 # 更新apt仓库缓存 sudo apt-get update # 查找nginx官网提供可安装的版本 sudo apt-cache madison nginx # 以选定安装1.26.0-1~jammy版本为例 # ubuntu 22.04安装nginx1.26 sudo apt install nginx=1.26.0-1~jammy # ubuntu 20.04安装nginx1.26 sudo apt install nginx=1.26.0-1~focal # 加入开机启动 sudo systemctl enable nginx # 启动nginx sudo systemctl start nginx # 检查状态 sudo systemctl status nginx
-
配置nginx
查找配置文件:
sudo find / -name nginx.conf sudo vim /etc/nginx/nginx.conf
nginx.conf配置更改:
# 用户组修改成www-data,防止无法调用php项目 user www-data; # 客户端上传文件大小 client_max_body_size 20m; # 设置网站访问验证 auth_basic "Please input user and password"; # 验证时的提示信息 auth_basic_user_file .htpasswd; # 认证文件
default.conf配置修改:
server { listen 80; listen [::]:80; # nginx新版ssl配置 #listen 443 ssl; # root /usr/share/nginx/html; root /var/www; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html index.php; server_name 127.0.0.1; # 新版ssl配置 listen 443 ssl,然后这里配证书就行了 #ssl on; ssl_certificate cert/example.com.pem; ssl_certificate_key cert/example.com.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; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; proxy_cookie_path / "/; httponly; secure; SameSite=None"; } location /testCiProject/api/ { try_files $uri $uri/ /testCiProject/api/public/index.php?/$request_uri; } # pass PHP scripts to FastCGI server # location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
PHP/7.4安装
-
安装指定版本php
# 更新安装源(安装默认版本时不需要) sudo add-apt-repository ppa:ondrej/php # 更新apt仓库缓存 sudo apt-get update # 查询当前仓库的php版本(ubuntu22.04默认php版本为7.4) sudo apt-cache show php7.4 # 安装php7.4 sudo apt-get install php7.4 # 安装php7.4拓展 sudo apt-get 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-fpm sudo apt-get install php7.4-fpm # 检查状态 sudo systemctl status php7.4-fpm
-
安装PHP代码解密扩展
# 将ioncube.tar.gz解压到home目录,执行以下操作 sudo tar -zxvf ioncube.tar.gz sudo mv ~/ioncube/ioncube_loader_lin_7.4.so /usr/lib/php/20190902/ sudo mv ~/ioncube/00-ioncube.ini /etc/php/7.4/fpm/conf.d
-
配置php.ini文件
查找配置文件:
sudo find / -name php.ini sudo vim /etc/php/7.4/fpm/php.ini
配置更改:
# 允许上传文件大小的最大值 upload_max_filesize = 20M # 通过表单POST给PHP的所能接收的最大值 post_max_size = 30M # php页面占用的最大内存 memory_limit = 256M # php页面执行最大时间 max_execution_time = 300 # php页面接受数据最大时间 max_input_time = 600
-
卸载apach(防止跟nginx端口冲突,可不操作)
sudo apt-get --purge remove apache2 sudo apt-get --purge remove apache2.2-common sudo apt-get autoremove sudo find /etc -name "*apache*" -exec rm -rf {} \;
-
PHP 的包管理(依赖管理)工具Composer安装
# 载最新版本的 composer.phar 文件到当前目录 curl -sS https://getcomposer.org/installer | php # 移动到 /usr/local/bin 目录并更改名称为 composer sudo mv composer.phar /usr/local/bin/composer # 授权 sudo chmod +x /usr/local/bin/composer # 查看composer composer -V composer --version # 配置 composer 镜像源地址 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ # 查看 composer 全局配置 composer config -l -g # 拉取指定包 composer require phpoffice/phpword # 更新包 composer update
mysql/8.0安装
-
安装指定版本的mysql
# 获得deb包 wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb # 安装deb包(中间选择5.7) sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb # 更新apt仓库缓存 sudo apt-get update # 如果更新报错,缺少key,则运行下列语句,替换对应缺少的key sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29 # 更新后查看当前mysql的可安装版本 sudo apt-cache policy mysql-server # 安装 mysql5.7(安装过程需要配置输入 mysql root 的password) sudo apt install -f mysql-client=5.7* mysql-community-server=5.7* mysql-server=5.7* # 如果报错,先取消上面的安装 sudo apt --fix-broken install # 然后安装对应的依赖 # 安装libmecab2 sudo apt install libmecab2 # 安装libaio1 sudo apt install libaio1 # 安装mysql-community-client sudo apt install mysql-community-client=5.7* # 再次安装 mysql 5.7 sudo apt install -f mysql-client=5.7* mysql-community-server=5.7* mysql-server=5.7*
-
安装mysql 8.0
# 安装MySQL 8 只需这步(ubuntu22.04默认php版本为8.0) sudo apt install mysql-server -y # 检查状态 sudo systemctl status mysql
-
配置mysql
查看初始密码位置:
sudo cat /etc/mysql/debian.cnf
查找配置文件:
sudo find / -name my.cnf sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
配置更改:
# 允许远程配置 bind-address = 0.0.0.0 # 在【mysqld】下加入以下配置(解决group by报错解决) sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION group_concat_max_len = 102400
创建用户并授权:
# 创建用户 create user 'username'@'%' identified by 'password'; # 修改用户名 rename user 'username'@'host' to 'username'@'host'; # 修改用户密码 set password for 'username'@'host' = PASSWORD('123456'); # 删除用户 drop user 'username'@'host'; # 授权 grant privilegesCode on dbName.tableName to username@host; # 例:授数据库所有表所有权限 grant all privileges on *.* to 'username'@'%'; # 刷新权限 flush privileges; # 显示授权 show grants; show grants for 'username'@'host';
参数说明: - privilegesCode表示授予的权限类型,常用的有以下几种类型: - all privileges:所有权限。 - select:读取权限。 - delete:删除权限。 - update:更新权限。 - create:创建权限。 - drop:删除数据库、数据表权限。 - dbName.tableName表示授予权限的具体库或表,常用的有以下几种选项: - *.*:授予该数据库服务器所有数据库的权限。 - dbName.*:授予dbName数据库所有表的权限。 - dbName.dbTable:授予数据库dbName中dbTable表的权限。 - username@host表示授予的用户以及允许该用户登录的IP地址。其中Host有以下几种类型: - localhost:只允许该用户在本地登录,不能远程登录。 - %:允许在除本机之外的任何一台机器远程登录。192.168.52.32:具体的IP表示只允许该用户从特定IP登录。
创建数据库:
# 创建数据库 create database mydb default character set utf8 collate utf8_general_ci; # 删除数据 drop database mydb;
更改文件权限
# 修改权限 文件夹 755
sudo find zhky -type d -exec chmod 755 {} \;
# 用户改root权限
sudo chown root:root -R zhky
# 修改文件权限 644
sudo find zhky -type f -exec chmod 644 {} \;
# 修改uploads文件夹权限
sudo chown www-data:www-data -R uploads/