安装 apache2 php mysql-server


sudo apt-get update
sudo apt-get install apache2 mysql-server #php参考后面

这里注意,如果只运行apache2+php的话,那安装个libapache2-mod-php包就可以了,apache2把php当做一个模块来运行,和Windows中的 include 差不多。如果要用nginx 的话 应该安装php-fpm。

这个命令也可以这么来写,php不想安装ubuntu默认版本

ubuntu18.04目前最高支持的是php7.2版本的,比较旧。但我的某个软件却依赖ubuntu18.04,所以呢,系统版本没有升级的情况下只升级php版本的办法是换软件源,也就是添加一个php的公共源

sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php7.4 -y
# 这里注意php默认版本和对应版本
sudo apt install php-{soap,gmp,curl,xml,bz2,intl,gd,mbstring,mysql,zip,imagick,memcached} -y

这样安装php 还是比较方便的,上面花括号里的字符间都没有空格,另外,一些扩展如 libapache2-mod-php7.4 php7.4-cli php7.4-common  在执行php7.4安装的时候会默认安装。


其它软件比如mysql 如果也可以考虑换源,毕竟个人的一些数据保存的访问量不是很大,mysql5.6还能胜任,所以暂时的就不折腾了。

在安装mysql-server的过程中会弹出对话框让我们输入数据库root用户的密码,这个我们输入两次就好。

首先,a2enmod 是个好命令,我们在安装完上面的包以后,记得用它去开启重写模块和ssl模块,这样把原来的配置备份文件直接复制过去就可以直接启用了。

sudo a2enmod rewrite
sudo a2enmod ssl

如果安装完成出现  不能解析php文件的 原文输出的情况

则执行如下命令,一定要搞清楚自己所安装的 PHP版本


sudo a2dismod php7.0  #关闭原来的php7.0
sudo a2enmod php7.2  #开启现在的php7.2
sudo systemctl restart apache2

数据库开启php_pdo_mysql支持

sudo phpenmod pdo_mysql

一般到这个地方我就先配置个ftp服务,然后把我的备份配置文件直接上传到服务器了。

ftp配置参考:http://sinoll.com/blog/view?id=111


ubuntu设置swap交换内存

亚马逊云给的vps是没有交换内存的

free -m 查看 SWAP 后面全是0

那么运行一些命令,可能提示不能分配内存

那就增加个SWAP 玩玩


sudo dd if=/dev/zero of=swap.mem bs=1024k count=1000

count=1000000参数代表数量,这个正好是1g,直接增大1g ,bs=1024k 后面一定要写k,默认是byte 会很慢的。


转化为swap文件
sudo mkswap swap.mem

增加权限

sudo chmod 600 swap.1  #600权限 防止其他程序更改

激活swap文件
sudo swapon swap.mem

查看效果
再次输入:free -m

mysql-server 数据库默认字符集设置

/etc/mysql/mysql.conf.d/mysqld.cnf

在 【mysqld】下追加:
character-set-server=utf8


/etc/mysql/conf.d/mysql.cnf

在 【mysql】 下追加:
default-character-set=utf8


最后 sudo service mysql restart

配置免费可用的ssl 证书

https://github.com/Neilpang/acme.sh/

这个不是一两句话可以说完的所以写个连接,自己好好研究

还有另外一种配置和更新ssl证书的方法

也可以参考我最近写的一篇文章 利用 certbot 来更新和设置ssl证书


apache2配置可以参考:

sudo vim /etc/apache2/sites-enables/000-default.conf

<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /home/ubuntu/htdocs/test.sinocd.cn/web
    <Directory /home/ubuntu/htdocs/test.sinocd.cn/web>
        DirectoryIndex index.php
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

ssl 配置参考:

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerAdmin admin@domain.com
        ServerName domain.com
        ServerAlias www.domain.com
        DocumentRoot /home/ubuntu/htdocs/domain.com/frontend/web
        <Directory /home/ubuntu/htdocs/domain.com/frontend/web>
            DirectoryIndex index.php
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLEngine on
        SSLCertificateFile/etc/apache2/ssl/domain.com_public.crt
        SSLCertificateKeyFile   /etc/apache2/ssl/domain.com.key
        SSLCertificateChainFile /etc/apache2/ssl/domain.com.crt
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
        </FilesMatch>
    </VirtualHost>
</IfModule>


php配置参考

sudo vim /etc/php/7.0/apache2/conf/php.ini


short_open_tag = On
max_file_uploads = 20M
post_max_size = 80M

根据自己的需要去修改php.ini 文件

apache2配置和php.ini文件修改后,要重启服务,配置生效。


最后 如果服务器开启了防火墙,那么就要开启防火墙规则

sudo ufw app list

获得应用程序配置文件的列表:    

Apache
Apache Full
Apache Secure
OpenSSH

开启apache2 防火墙

$ sudo ufw allow 'Apache'
$ sudo ufw allow 'Apache Full'
$ sudo ufw allow 'Apache Secure'

这样 就能访问了 如果是测试环境 可以关闭防火墙的


$ sudo ufw enable

$ sudo ufw disable
输入以下命令以查看防火墙状态:

$ sudo ufw status


基本上就这样了。


在windows下配置Apache+php环境

apache2.4需要配置serverroot路径 ,一般就是apache2.4的安装或解压目录路径,这一句配置后apache就能运行了

Define SRVROOT "E:\ser\Apache24"

然后在 apache配置文件httpd.conf中添加

#php support
LoadModule php7_module "E:\ser\php-7.4.21-forApache\php7apache2_4.dll"
PHPIniDir "E:\ser\php-7.4.21-forApache\php.ini"

<IfModule mime_module>
……
#php support
    AddType application/x-httpd-php .php
</IfModule>

其它php相关配置去php.ini文件中修改

windows 下配置 vhost  大约在480行附近 去掉注释

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

然后配置 更多的主机

<VirtualHost 10.42.170.209:80>
    ServerName 10.42.170.209
    DocumentRoot "E:\ser\htdocs\score\app\web"
    <Directory   "E:\ser\htdocs\score\app\web">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

最后 再来说 在windows 下使用.htaccess URL重写的配置方法

先去掉加载重写模块的注释,大约在165行左右

LoadModule rewrite_module modules/mod_rewrite.so

然后给主机添加 目录控制选项

<Directory   "E:\ser\htdocs\score\app\web">
   Options Indexes FollowSymLinks
   AllowOverride All
</Directory>

每次配置完成后记得重启apache服务,一般的用管理员权限打开cmd 到apache安装路径下的bin目录 执行

httpd.exe -k restart

.htaccess文件的写法 根据需要 ,一个yii2URL重写的示例

RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1

以后再补充啊